diff --git a/.chronus/changes/add-e2e-test-alternate-initial-verb-2026-3-30.md b/.chronus/changes/add-e2e-test-alternate-initial-verb-2026-3-30.md new file mode 100644 index 00000000000..ab8752390ad --- /dev/null +++ b/.chronus/changes/add-e2e-test-alternate-initial-verb-2026-3-30.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-java" +--- + +Add e2e test for ServerDrivenPagination alternate initial verb (POST) scenario in clientcore tests diff --git a/.chronus/changes/add-flatten-read-only-model-tests-2026-3-6-8-0-10.md b/.chronus/changes/add-flatten-read-only-model-tests-2026-3-6-8-0-10.md deleted file mode 100644 index e4bbcfb6773..00000000000 --- a/.chronus/changes/add-flatten-read-only-model-tests-2026-3-6-8-0-10.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/http-client-python" ---- - -Add test cases for flatten property with read-only properties (putFlattenReadOnlyModel and putFlattenUnknownModel scenarios). diff --git a/.chronus/changes/add-missing-encode-duration-tests-2026-3-9-4-45-0.md b/.chronus/changes/add-missing-encode-duration-tests-2026-3-9-4-45-0.md new file mode 100644 index 00000000000..abb8c451acf --- /dev/null +++ b/.chronus/changes/add-missing-encode-duration-tests-2026-3-9-4-45-0.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-java" +--- + +Add missing tests for `int32SecondsLargerUnit` and `floatSecondsLargerUnit` encode/duration scenarios (query, header, and property). diff --git a/.chronus/changes/add-noauth-union-python-tests-2026-03-06-02-30-00.md b/.chronus/changes/add-noauth-union-python-tests-2026-03-06-02-30-00.md deleted file mode 100644 index 265e8f78c14..00000000000 --- a/.chronus/changes/add-noauth-union-python-tests-2026-03-06-02-30-00.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/http-client-python" ---- - -Add mock API tests for authentication/noauth/union Spector case (sync + async). diff --git a/.chronus/changes/copilot-add-xml-deserialization-test-2026-03-04-05-46-13.md b/.chronus/changes/copilot-add-xml-deserialization-test-2026-03-04-05-46-13.md deleted file mode 100644 index e006e732936..00000000000 --- a/.chronus/changes/copilot-add-xml-deserialization-test-2026-03-04-05-46-13.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -changeKind: fix -packages: - - "@typespec/http-client-python" ---- -Return empty list instead of None for non-optional unwrapped XML list fields during deserialization diff --git a/.chronus/changes/copilot-update-node-js-dependencies-2026-03-12-12-36-02.md b/.chronus/changes/copilot-update-node-js-dependencies-2026-03-12-12-36-02.md new file mode 100644 index 00000000000..0c30456dba3 --- /dev/null +++ b/.chronus/changes/copilot-update-node-js-dependencies-2026-03-12-12-36-02.md @@ -0,0 +1,7 @@ +--- +changeKind: dependencies +packages: + - "@typespec/http-client-java" +--- + +Update dependencies: `@azure-tools/typespec-client-generator-core` 0.66.1→0.66.2, `@azure-tools/typespec-azure-rulesets` 0.65.1→0.66.0, `@typespec/http-specs` 0.1.0-alpha.33→0.1.0-alpha.34 diff --git a/.chronus/changes/copilot-update-nodejs-dependencies-again-2026-3-2-4-54-25.md b/.chronus/changes/copilot-update-nodejs-dependencies-again-2026-3-2-4-54-25.md new file mode 100644 index 00000000000..776b12f8f03 --- /dev/null +++ b/.chronus/changes/copilot-update-nodejs-dependencies-again-2026-3-2-4-54-25.md @@ -0,0 +1,7 @@ +--- +changeKind: dependencies +packages: + - "@typespec/http-client-java" +--- + +Update Node.js dependencies \ No newline at end of file diff --git a/.chronus/changes/http-client-java_bug-fix-paged-model-2026-2-24-16-23-15.md b/.chronus/changes/http-client-java_bug-fix-paged-model-2026-2-24-16-23-15.md new file mode 100644 index 00000000000..f341bf07409 --- /dev/null +++ b/.chronus/changes/http-client-java_bug-fix-paged-model-2026-2-24-16-23-15.md @@ -0,0 +1,7 @@ +--- +changeKind: dependencies +packages: + - "@typespec/http-client-java" +--- + +Update Node dependencies \ No newline at end of file diff --git a/.chronus/changes/http-client-java_bug-fix-paged-model-2026-2-25-16-16-24.md b/.chronus/changes/http-client-java_bug-fix-paged-model-2026-2-25-16-16-24.md new file mode 100644 index 00000000000..9ba257825cc --- /dev/null +++ b/.chronus/changes/http-client-java_bug-fix-paged-model-2026-2-25-16-16-24.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-java" +--- + +access=public should override Paged \ No newline at end of file diff --git a/.chronus/changes/http-client-java_e2e-clientinitialization-tests-2026-3-11-6-15-0.md b/.chronus/changes/http-client-java_e2e-clientinitialization-tests-2026-3-11-6-15-0.md new file mode 100644 index 00000000000..c329c6b3974 --- /dev/null +++ b/.chronus/changes/http-client-java_e2e-clientinitialization-tests-2026-3-11-6-15-0.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-java" +--- + +Add e2e tests for client-initialization scenarios diff --git a/.chronus/changes/http-client-java_fix-property-in-parent-2026-2-13-15-41-25.md b/.chronus/changes/http-client-java_fix-property-in-parent-2026-2-13-15-41-25.md new file mode 100644 index 00000000000..b3858ae042e --- /dev/null +++ b/.chronus/changes/http-client-java_fix-property-in-parent-2026-2-13-15-41-25.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-java" +--- + +Fix result segments like "value" not found if defined in parent model. \ No newline at end of file diff --git a/.chronus/changes/http-client-java_ignore-error-on-invalid-date-time-value-2026-3-3-12-15-51.md b/.chronus/changes/http-client-java_ignore-error-on-invalid-date-time-value-2026-3-3-12-15-51.md new file mode 100644 index 00000000000..deb83533887 --- /dev/null +++ b/.chronus/changes/http-client-java_ignore-error-on-invalid-date-time-value-2026-3-3-12-15-51.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-java" +--- + +Ignore error in JSON example, if the format is incorrect. \ No newline at end of file diff --git a/.chronus/changes/http-client-java_upgrade-compiler-2026-2-11-13-45-53.md b/.chronus/changes/http-client-java_upgrade-compiler-2026-2-11-13-45-53.md new file mode 100644 index 00000000000..4cf980d47df --- /dev/null +++ b/.chronus/changes/http-client-java_upgrade-compiler-2026-2-11-13-45-53.md @@ -0,0 +1,7 @@ +--- +changeKind: dependencies +packages: + - "@typespec/http-client-java" +--- + +Update compiler to 1.10.0 \ No newline at end of file diff --git a/.chronus/changes/http-client-java_upgrade-compiler-2026-2-11-13-46-20.md b/.chronus/changes/http-client-java_upgrade-compiler-2026-2-11-13-46-20.md new file mode 100644 index 00000000000..1b8ece40357 --- /dev/null +++ b/.chronus/changes/http-client-java_upgrade-compiler-2026-2-11-13-46-20.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-java" +--- + +Allow text/plain content-type on Enum \ No newline at end of file diff --git a/.chronus/changes/http-client-java_xml-namespace-2026-2-31-16-1-0.md b/.chronus/changes/http-client-java_xml-namespace-2026-2-31-16-1-0.md new file mode 100644 index 00000000000..b0b936cc4fb --- /dev/null +++ b/.chronus/changes/http-client-java_xml-namespace-2026-2-31-16-1-0.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-java" +--- + +Fix bug on XML array with isXmlWrapper=true \ No newline at end of file diff --git a/.chronus/changes/http-client-python-xml-enumeration-results-test-2026-2-23-22-33-2.md b/.chronus/changes/http-client-python-xml-enumeration-results-test-2026-2-23-22-33-2.md deleted file mode 100644 index c4a7ac65651..00000000000 --- a/.chronus/changes/http-client-python-xml-enumeration-results-test-2026-2-23-22-33-2.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/http-client-python" ---- - -Add unit test for deserializing Azure Blob Storage EnumerationResults XML payload with attributes, empty list element, and empty string element. diff --git a/.chronus/changes/java_fix_discriminator_no_subtypes-2026-2-18-19-29-57.md b/.chronus/changes/java_fix_discriminator_no_subtypes-2026-2-18-19-29-57.md new file mode 100644 index 00000000000..4315f4697d3 --- /dev/null +++ b/.chronus/changes/java_fix_discriminator_no_subtypes-2026-2-18-19-29-57.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-java" +--- + +Fix discriminator property not generated when model has @discriminator but no known subtypes \ No newline at end of file diff --git a/.chronus/changes/jolov-publish-always-internal-2026-2-19-10-49-50.md b/.chronus/changes/jolov-publish-always-internal-2026-2-19-10-49-50.md new file mode 100644 index 00000000000..a25b49c1b0d --- /dev/null +++ b/.chronus/changes/jolov-publish-always-internal-2026-2-19-10-49-50.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-java" +--- + +Update internal npm feed from azure-sdk-for-js-test-autorest to azure-sdk-for-js \ No newline at end of file diff --git a/.chronus/changes/python-cleanUpNamespaceLogic-2026-2-2-17-15-49.md b/.chronus/changes/python-cleanUpNamespaceLogic-2026-2-2-17-15-49.md new file mode 100644 index 00000000000..d8dca839ac7 --- /dev/null +++ b/.chronus/changes/python-cleanUpNamespaceLogic-2026-2-2-17-15-49.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-python" +--- + +clean up namespace logic in python \ No newline at end of file diff --git a/.chronus/changes/python-diff-upstream-skill-2026-02-26-14-34-52.md b/.chronus/changes/python-diff-upstream-skill-2026-02-26-14-34-52.md deleted file mode 100644 index 985fc71b66d..00000000000 --- a/.chronus/changes/python-diff-upstream-skill-2026-02-26-14-34-52.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: internal -packages: - - "@typespec/http-client-python" ---- - -Add diff-upstream skill for comparing generated code against autorest.python baseline diff --git a/.chronus/changes/python-remove-includeRootSlash-2026-3-9-2-53-15.md b/.chronus/changes/python-remove-includeRootSlash-2026-3-9-2-53-15.md deleted file mode 100644 index 2e03aae584f..00000000000 --- a/.chronus/changes/python-remove-includeRootSlash-2026-3-9-2-53-15.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: fix -packages: - - "@typespec/http-client-python" ---- - -Remove includeRootSlash client option logic, which should be handled at the TypeSpec core level diff --git a/.chronus/changes/python-remove-useless-dev-dep-2026-2-30-12-41-26.md b/.chronus/changes/python-remove-useless-dev-dep-2026-2-30-12-41-26.md new file mode 100644 index 00000000000..b6e1db0609c --- /dev/null +++ b/.chronus/changes/python-remove-useless-dev-dep-2026-2-30-12-41-26.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-python" +--- + +remove useless dependency in dev requirements.txt \ No newline at end of file diff --git a/.chronus/changes/python-removeEnumPadding-2026-1-27-12-23-22.md b/.chronus/changes/python-removeEnumPadding-2026-1-27-12-23-22.md deleted file mode 100644 index c0e8e0fa7ab..00000000000 --- a/.chronus/changes/python-removeEnumPadding-2026-1-27-12-23-22.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -changeKind: feature -packages: - - "@typespec/http-client-python" ---- - -Remove enum value padding because we generate our enum value names with upper case so there is no need diff --git a/.chronus/changes/python-testInfraImprovements-2026-2-31-14-30-46.md b/.chronus/changes/python-testInfraImprovements-2026-2-31-14-30-46.md new file mode 100644 index 00000000000..2a8f2cf7540 --- /dev/null +++ b/.chronus/changes/python-testInfraImprovements-2026-2-31-14-30-46.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-python" +--- + +Clean up test infrastructure, run in parallel, and use uv pip when acceptable. CI runs 2-3 x faster \ No newline at end of file diff --git a/.chronus/changes/python-update-test-requirements-2026-3-7-13-29-21.md b/.chronus/changes/python-update-test-requirements-2026-3-7-13-29-21.md new file mode 100644 index 00000000000..8e0186ffd33 --- /dev/null +++ b/.chronus/changes/python-update-test-requirements-2026-3-7-13-29-21.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-python" +--- + +Update dependency file \ No newline at end of file diff --git a/.chronus/changes/python-xml-test-cases-2026-3-19-22-47-48.md b/.chronus/changes/python-xml-test-cases-2026-3-19-22-47-48.md new file mode 100644 index 00000000000..3d855bfa355 --- /dev/null +++ b/.chronus/changes/python-xml-test-cases-2026-3-19-22-47-48.md @@ -0,0 +1,7 @@ +--- +changeKind: internal +packages: + - "@typespec/http-client-python" +--- + +Add mock API test cases for XML scenarios introduced in https://github.com/microsoft/typespec/pull/10063, covering: renamed property, nested model, renamed nested model, wrapped primitive with custom item names, model array variants (wrapped/unwrapped/renamed), renamed attribute, namespace, and namespace-on-properties. Fix XML serialization/deserialization bugs: unwrapped model array element naming, namespace key mismatch between DPG models and the runtime template, default-namespace propagation semantics, and handling of Python-reserved namespace prefixes. diff --git a/.chronus/changes/upgrade-deps-feb-2026-2026-2-2-19-28-39.md b/.chronus/changes/upgrade-deps-feb-2026-2026-2-2-19-28-39.md index 71863e96cbc..051de73c605 100644 --- a/.chronus/changes/upgrade-deps-feb-2026-2026-2-2-19-28-39.md +++ b/.chronus/changes/upgrade-deps-feb-2026-2026-2-2-19-28-39.md @@ -2,7 +2,6 @@ changeKind: internal packages: - "@typespec/http-client-java" - - "@typespec/http-client-python" --- Upgrade to eslint 10 \ No newline at end of file diff --git a/.chronus/config.yaml b/.chronus/config.yaml index 9d6a6af5911..44569e0d422 100644 --- a/.chronus/config.yaml +++ b/.chronus/config.yaml @@ -12,7 +12,7 @@ changeKinds: description: Fixes to existing features dependencies: - versionType: patch + versionType: none title: Bump dependencies description: Bumps dependencies diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index aa2b8ef8ebb..1429910179d 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -109,7 +109,7 @@ TypeSpec is a language for defining cloud service APIs and shapes. This monorepo - Generate external signatures: `pnpm gen-compiler-extern-signature` - Regenerate samples: `pnpm regen-samples` - Regenerate docs: `pnpm regen-docs` -- Sync dependency versions: `pnpm fix-version-mismatch` +- Check catalog usage: `pnpm check-catalog` ## Troubleshooting @@ -125,9 +125,33 @@ TypeSpec is a language for defining cloud service APIs and shapes. This monorepo ## Pull Request instructions -- When the work is done, run `pnpm chronus add` to add a changelog entry. Select the correct type of change (fix, feat, docs, etc.) and provide a clear description based on the initial issue description. Only add an area tag when the package has multiple areas and the change targets a secondary area; use bracket format like `[converter]` or `[formatter]` (for example, a secondary openapi3 converter change should start with `[converter]`). Avoid generic area prefixes like `core -` and do not add any area tag for single-area packages. For new features, include a short code block in the changelog entry that showcases the new functionality; skip code blocks for simple bug fixes. +### Changelog entries + +When the work is done, run `pnpm chronus add` to add a changelog entry. The valid change kinds are defined in [`.chronus/config.yaml`](../.chronus/config.yaml). Do **NOT** use `feat`, `docs`, `patch`, `minor`, or `major` — these are not valid change kinds. + +**If a PR affects multiple packages with different types of changes, create a separate changelog entry for each.** For example, if the PR adds a feature to `@typespec/http` and fixes a bug in `@typespec/openapi3`, run `pnpm chronus add` twice to create two separate changelog entries — one with `feature` for `@typespec/http` and one with `fix` for `@typespec/openapi3`. Do NOT bundle different change types into a single entry. + +### Changelog message guidelines + +- Provide a clear description based on the initial issue description. +- Only add an area tag when the package has multiple areas and the change targets a secondary area; use bracket format like `[converter]` or `[formatter]` (for example, a secondary openapi3 converter change should start with `[converter]`). Avoid generic area prefixes like `core -` and do not add any area tag for single-area packages. +- For new features, include a short code block in the changelog entry that showcases the new functionality; skip code blocks for simple bug fixes. + +### TDD approach + - Always start by defining additional unit tests/updating existing unit tests to fulfill the requirements first. Then make changes to the code accordingly. If you are following the TDD (Test Driven Development) approach, make sure to run the tests and see them fail before implementing the code changes. +## Branch Naming Conventions + +### Out-of-sync / hotfix releases + +Out-of-sync releases and hotfix releases follow the same flow using a `publish/` branch: + +- **Pattern:** `publish/-release-` (e.g., `publish/python-release-03-26`) +- These branches skip certain CI checks (consistency, external-integration) and auto-publish on merge +- For **out-of-sync releases**, the PR targets `main` +- For **hotfix releases**, the PR targets the corresponding `release/*` branch (e.g., `release/v0.60`) instead of `main` + ## Available Task Instructions - [Testserver Generation](./prompts/testserver-generation.md): Instructions for generating TypeSpec HTTP spec test servers diff --git a/.github/dependabot.yml b/.github/dependabot.yml index a1830645fec..44caf314cd3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,5 +1,6 @@ version: 2 updates: + # Python dependencies for http-client-python - package-ecosystem: "pip" directories: - "/packages/http-client-python/eng/" @@ -14,13 +15,120 @@ updates: include: "scope" labels: - "emitter:client:python" + + # Main pnpm workspace (npm dependencies via catalog) - package-ecosystem: "npm" directory: "/" schedule: - interval: "daily" + interval: "weekly" + exclude-paths: + - "packages/http-client-csharp" + - "packages/http-client-java" + - "packages/http-client-python" + labels: [] # conflict with our labels in labels.ts groups: alloy: patterns: - "@alloy-js/*" - allow: - - dependency-name: "@alloy-js/*" + types: + patterns: + - "@types/*" + testing: + patterns: + - "vitest" + - "@vitest/*" + - "@playwright/test" + - "playwright" + - "@testing-library/*" + - "mocha" + - "happy-dom" + - "c8" + linting: + patterns: + - "eslint" + - "@eslint/*" + - "eslint-plugin-*" + - "@typescript-eslint/*" + - "typescript-eslint" + - "cspell" + build-tools: + patterns: + - "esbuild" + - "esbuild-*" + - "vite" + - "vite-*" + - "@vitejs/*" + - "typescript" + - "tsx" + - "rollup-*" + website: + patterns: + - "astro" + - "astro-*" + - "@astrojs/*" + - "@expressive-code/*" + - "@docsearch/*" + - "rehype-*" + - "remark-*" + - "typedoc" + - "typedoc-*" + - "sharp" + ui: + patterns: + - "react" + - "react-*" + - "@fluentui/*" + - "storybook" + - "@storybook/*" + - "prism-react-renderer" + - "clsx" + vscode: + patterns: + - "@vscode/*" + - "vscode-*" + formatting: + patterns: + - "prettier" + - "prettier-plugin-*" + microsoft: + patterns: + - "@microsoft/*" + chronus: + patterns: + - "@chronus/*" + tree-sitter: + patterns: + - "tree-sitter-*" + - "web-tree-sitter" + octokit: + patterns: + - "@octokit/*" + azure: + patterns: + - "@azure/*" + yarnpkg: + patterns: + - "@yarnpkg/*" + babel: + patterns: + - "@babel/*" + scalar: + patterns: + - "@scalar/*" + monaco: + patterns: + - "monaco-editor" + - "monaco-editor-core" + + # GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + exclude-paths: + - ".github/workflows/*.lock.{yaml,yml}" + labels: [] # conflict with our labels in labels.ts + groups: + actions: + patterns: + - "*" diff --git a/.github/matchers/actionlint.json b/.github/matchers/actionlint.json new file mode 100644 index 00000000000..4613e1617bf --- /dev/null +++ b/.github/matchers/actionlint.json @@ -0,0 +1,17 @@ +{ + "problemMatcher": [ + { + "owner": "actionlint", + "pattern": [ + { + "regexp": "^(?:\\x1b\\[\\d+m)?(.+?)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*: (?:\\x1b\\[\\d+m)*(.+?)(?:\\x1b\\[\\d+m)* \\[(.+?)\\]$", + "file": 1, + "line": 2, + "column": 3, + "message": 4, + "code": 5 + } + ] + } + ] +} diff --git a/.github/skills/emitter-prep-for-pr/SKILL.md b/.github/skills/emitter-prep-for-pr/SKILL.md index 249bfe1642e..42a5e1d6339 100644 --- a/.github/skills/emitter-prep-for-pr/SKILL.md +++ b/.github/skills/emitter-prep-for-pr/SKILL.md @@ -264,7 +264,7 @@ Write changeset messages that are: ### Multiple packages -If changes affect multiple packages, list all of them: +If changes affect multiple packages **with the same change kind**, list all of them in a single changeset: ```yaml packages: @@ -272,6 +272,22 @@ packages: - "@typespec/http-client-csharp" ``` +**If packages have different change kinds, create separate changeset files for each.** For example, if the PR adds a feature to `@typespec/http-client-python` and fixes a bug in `@typespec/http-client-csharp`, create two files: + +```yaml +# File 1: feature for python +changeKind: feature +packages: + - "@typespec/http-client-python" +``` + +```yaml +# File 2: fix for csharp +changeKind: fix +packages: + - "@typespec/http-client-csharp" +``` + ### Skipping changeset Some changes don't need a changeset: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6d3ea69960..da30c110fe3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,40 +1,63 @@ name: CI on: + push: + branches: + - main pull_request: branches: - main - release/* - paths-ignore: - - "website/**" + merge_group: + +permissions: + contents: read + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: - preview: - runs-on: ubuntu-latest - + changes: + name: Detect Changes + runs-on: ubuntu-slim + outputs: + core: ${{ steps.filter.outputs.core }} steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 ## Needed for Changesets to find `main` branch - - - uses: actions/setup-dotnet@v5 - name: Setup .NET + - uses: actions/checkout@v6 + # cspell:ignore dorny + - uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4 + id: filter with: - # Automatically read .NET SDK version from global.json to stay in sync - global-json-file: packages/http-client-csharp/global.json - - - uses: ./.github/actions/setup - - - name: Install dependencies - run: npx tsx eng/tsp-core/tpm/cli.ts install --since origin/main - - - name: Build - run: npx tsx eng/tsp-core/tpm/cli.ts build --since origin/main - - - name: Bump version to prerelease targets - run: pnpm chronus version --prerelease "{nextVersion}-pr.${{ github.event.pull_request.number }}.${{ github.run_number }}" - - - run: pnpm tsx eng/tsp-core/pkg-pr-new.ts + predicate-quantifier: "every" + filters: | + core: + - '**' + - '!.prettierignore' + - '!.prettierrc.json' + - '!cspell.yaml' + - '!eslint.config.json' + - '!.chronus/**' + - '!eng/emitters/**' + - '!packages/http-client-csharp/**' + - '!packages/http-client-java/**' + - '!packages/http-client-python/**' + + core: + needs: changes + if: needs.changes.outputs.core == 'true' + uses: ./.github/workflows/core-ci.yml + + ci-gate: + name: CI Gate + runs-on: ubuntu-slim + if: "!cancelled() || needs.core.result == 'cancelled'" + needs: [core] + steps: + - name: Validate CI results + run: | + if [[ "${{ needs.core.result }}" == "failure" || "${{ needs.core.result }}" == "cancelled" ]]; then + echo "Core CI failed or was cancelled" + exit 1 + fi + echo "All CI checks passed or were appropriately skipped" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 263c625f02a..3401cbea9a9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -8,6 +8,9 @@ on: schedule: - cron: "30 3 * * 3" +permissions: + contents: read + jobs: analyze: name: Analyze @@ -26,7 +29,7 @@ jobs: strategy: fail-fast: false matrix: - language: ["javascript-typescript"] + language: ["actions", "javascript-typescript"] # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ] # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both @@ -34,7 +37,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v6 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/commenter.yml b/.github/workflows/commenter.yml index e1889595736..6275b424cd8 100644 --- a/.github/workflows/commenter.yml +++ b/.github/workflows/commenter.yml @@ -18,12 +18,15 @@ jobs: !startsWith(github.head_ref, 'publish/') runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 + - uses: actions/checkout@v6 + - name: Prepare artifact directory + run: mkdir -p "${{ runner.temp }}/comment-artifact" + - uses: actions/download-artifact@v8 with: name: comment run-id: ${{github.event.workflow_run.id }} github-token: ${{secrets.GITHUB_TOKEN}} + path: ${{ runner.temp }}/comment-artifact - name: Display structure of downloaded files run: ls -R @@ -32,7 +35,7 @@ jobs: - run: pnpm install name: Install dependencies - - run: pnpm chronus-github-pr-commenter --comment-file comment.json + - run: pnpm chronus-github-pr-commenter --comment-file "${{ runner.temp }}/comment-artifact/comment.json" env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} name: Create/update comment diff --git a/.github/workflows/consistency.yml b/.github/workflows/consistency.yml index 4592ee08f75..91675258f64 100644 --- a/.github/workflows/consistency.yml +++ b/.github/workflows/consistency.yml @@ -10,6 +10,9 @@ on: merge_group: workflow_dispatch: {} +permissions: + contents: read + # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: check-changes: @@ -22,7 +25,7 @@ jobs: !startsWith(github.head_ref, 'backmerge/') && !startsWith(github.head_ref, 'revert-') steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 ## Needed for Changesets to find `main` branch @@ -39,7 +42,7 @@ jobs: env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: comment path: comment-out/ @@ -53,7 +56,7 @@ jobs: name: Spell check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: recursive - uses: ./.github/actions/setup @@ -69,7 +72,7 @@ jobs: name: Format runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: recursive - uses: ./.github/actions/setup @@ -88,7 +91,7 @@ jobs: name: Lint runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: recursive @@ -103,12 +106,22 @@ jobs: - run: pnpm run lint name: Lint - # Check version mismatch + # cspell:ignore rhysd + # Content copied from https://raw.githubusercontent.com/rhysd/actionlint/2ab3a12c7848f6c15faca9a92612ef4261d0e370/.github/actionlint-matcher.json + - run: echo "::add-matcher::.github/matchers/actionlint.json" + name: Add actionlint problem matcher + + - uses: docker://rhysd/actionlint:1.7.12 + name: Lint workflows + with: + args: -color -verbose + + # Check that all dependencies use the pnpm catalog version-consistency: name: Versions consistency runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: recursive @@ -117,5 +130,5 @@ jobs: - run: pnpm install name: Install dependencies - - run: pnpm run check-version-mismatch - name: Check version mismatch + - run: pnpm run check-catalog + name: Check catalog usage diff --git a/.github/workflows/core-ci.yml b/.github/workflows/core-ci.yml new file mode 100644 index 00000000000..38d69874097 --- /dev/null +++ b/.github/workflows/core-ci.yml @@ -0,0 +1,152 @@ +name: Core CI + +permissions: + contents: read + +on: + workflow_call: + workflow_dispatch: + +jobs: + build: + name: Build (${{ matrix.os }}, Node ${{ matrix.node-version }}) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + node-version: ["20.x", "22.x", "24.x"] + + env: + TYPESPEC_VS_CI_BUILD: true + TYPESPEC_SKIP_WEBSITE_BUILD: true + + steps: + - name: Enable git long paths (Windows) + if: runner.os == 'Windows' + run: git config --global core.longpaths true + + - uses: actions/checkout@v6 + + - uses: ./.github/actions/setup + with: + node-version: ${{ matrix.node-version }} + + - uses: actions/setup-dotnet@v5 + with: + dotnet-version: 8.0.x + + - name: Install dependencies + run: pnpm install + + - name: Restore .NET dependencies + run: dotnet restore + working-directory: packages/typespec-vs + + - name: Build + run: pnpm run build + + - name: Test + run: pnpm vitest run --coverage --reporter=default --reporter=github-actions + + - name: Upload coverage artifacts + uses: actions/upload-artifact@v7 + if: always() + with: + name: coverage-${{ matrix.os }}-node${{ matrix.node-version }} + path: packages/*/coverage/ + retention-days: 5 + + - name: Check for changed files + run: node eng/common/scripts/check-for-changed-files.js + + website: + name: Website + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + + - uses: ./.github/actions/setup + + - name: Install dependencies + run: pnpm install + + - name: Install Playwright browsers + run: npx playwright install --with-deps + + - name: Build website + run: pnpm --filter "@typespec/website..." run build + + - name: Check for changed files + run: node eng/common/scripts/check-for-changed-files.js + + e2e: + name: E2E Tests + runs-on: ubuntu-latest + + env: + TYPESPEC_VS_CI_BUILD: false + TYPESPEC_SKIP_WEBSITE_BUILD: true + DISPLAY: ":99" + + steps: + - uses: actions/checkout@v6 + + - uses: ./.github/actions/setup + + - name: Install dependencies + run: pnpm install + + - name: Install Playwright browsers + run: | + sudo dpkg --configure -a + npx playwright install --with-deps + + - name: Start Xvfb + run: | + /usr/bin/Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & + echo "Started xvfb" + + - name: Build + run: pnpm run build + + - name: E2E Tests + run: pnpm run test:e2e + + - name: Upload UI test results + uses: actions/upload-artifact@v7 + if: always() + with: + name: uitestresults-e2e + path: packages/playground-website/test-results/ + retention-days: 5 + + - name: Upload screenshots + uses: actions/upload-artifact@v7 + if: always() + with: + name: screenshots + path: packages/typespec-vscode/temp/images-linux/ + retention-days: 5 + + - name: Upload trace results + uses: actions/upload-artifact@v7 + if: always() + with: + name: trace-results + path: packages/typespec-vscode/test-results/ + retention-days: 5 + + - name: Check for changed files + run: node eng/common/scripts/check-for-changed-files.js + + docker: + name: Docker Build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + + - name: Build Docker image + run: docker build -f ./docker/Dockerfile . diff --git a/.github/workflows/external-integration.yml b/.github/workflows/external-integration.yml index 288714fe4a8..581db64aed3 100644 --- a/.github/workflows/external-integration.yml +++ b/.github/workflows/external-integration.yml @@ -12,6 +12,9 @@ on: # Allow manual triggering workflow_dispatch: +permissions: + contents: read + # This check is optional by default concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -30,18 +33,18 @@ jobs: steps: - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: lts/* - name: Checkout Azure/typespec-azure repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: Azure/typespec-azure submodules: true - name: Install pnpm - uses: pnpm/action-setup@v3 + uses: pnpm/action-setup@v5 - name: Update core submodule to PR commit run: | @@ -74,7 +77,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: submodules: true fetch-depth: 0 diff --git a/.github/workflows/merge-release-in-main.yml b/.github/workflows/merge-release-in-main.yml index c8b72a5a7d5..ed379d8ef1a 100644 --- a/.github/workflows/merge-release-in-main.yml +++ b/.github/workflows/merge-release-in-main.yml @@ -21,24 +21,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Generate branch name id: branchname + env: + REF_NAME: ${{ github.ref_name }} run: | - echo "branchname=backmerge/${{ github.ref_name }}-$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + echo "branchname=backmerge/${REF_NAME}-$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT" - name: Create branch + env: + BRANCH: ${{ steps.branchname.outputs.branchname }} run: | - branch="${{ steps.branchname.outputs.branchname }}" - git checkout -b $branch - git push --set-upstream origin $branch - - - name: create pull request - id: open-pr - uses: repo-sync/pull-request@v2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - source_branch: ${{ steps.branchname.outputs.branchname }} - destination_branch: ${{ github.event.repository.default_branch }} - pr_title: "[Automated] Merge ${{ github.ref_name }} into ${{ github.event.repository.default_branch }}" - pr_body: "Merge ${{github.ref}} back into ${{ github.event.repository.default_branch }}" + git checkout -b "$BRANCH" + git push --set-upstream origin "$BRANCH" diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml new file mode 100644 index 00000000000..509b76d8a1b --- /dev/null +++ b/.github/workflows/preview.yml @@ -0,0 +1,44 @@ +name: Preview + +on: + pull_request: + branches: + - main + - release/* + paths-ignore: + - "website/**" + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + preview: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 0 ## Needed for Changesets to find `main` branch + + - uses: actions/setup-dotnet@v5 + name: Setup .NET + with: + # Automatically read .NET SDK version from global.json to stay in sync + global-json-file: packages/http-client-csharp/global.json + + - uses: ./.github/actions/setup + + - name: Install dependencies + run: npx tsx eng/tsp-core/tpm/cli.ts install --since origin/main + + - name: Build + run: npx tsx eng/tsp-core/tpm/cli.ts build --since origin/main + + - name: Bump version to prerelease targets + run: pnpm chronus version --prerelease "{nextVersion}-pr.${{ github.event.pull_request.number }}.${{ github.run_number }}" + + - run: pnpm tsx eng/tsp-core/pkg-pr-new.ts diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 2241dfd89f3..f243f4933f4 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -21,7 +21,7 @@ jobs: sync: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ./.github/actions/setup - run: pnpm install diff --git a/.github/workflows/verify-labels.yml b/.github/workflows/verify-labels.yml index 446c23665b5..a278154ab60 100644 --- a/.github/workflows/verify-labels.yml +++ b/.github/workflows/verify-labels.yml @@ -10,11 +10,14 @@ on: - ".github/workflows/sync-labels.yml" - "CONTRIBUTING.md" +permissions: + contents: read + jobs: verify: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ./.github/actions/setup - run: pnpm install diff --git a/.github/workflows/website-gh-pages.yml b/.github/workflows/website-gh-pages.yml index cbe46619e7c..9a53afb9a71 100644 --- a/.github/workflows/website-gh-pages.yml +++ b/.github/workflows/website-gh-pages.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v6 - uses: ./.github/actions/setup @@ -38,7 +38,7 @@ jobs: run: pnpm --filter "@typespec/website..." run build - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: path: ./website/dist @@ -52,4 +52,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 diff --git a/.gitignore b/.gitignore index 7d848f69699..bd47e87ea2e 100644 --- a/.gitignore +++ b/.gitignore @@ -228,8 +228,8 @@ BenchmarkDotnet.Artifacts/ !packages/http-client-java/package-lock.json # python emitter -packages/http-client-python/generator/test/**/generated/ -packages/http-client-python/generator/test/**/cadl-ranch-coverage.json +packages/http-client-python/tests/**/generated/ +packages/http-client-python/tests/**/cadl-ranch-coverage.json !packages/http-client-python/package-lock.json packages/http-client-python/micropip.lock packages/http-client-python/venv_build_wheel/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eeb65dceb34..fbd408a915a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -51,7 +51,7 @@ Those commands can be run on the workspace or in a specific package(`cd ./packag | `pnpm format` | Format | | `pnpm format:check` | Validate files are formatted | | `pnpm gen-extern-signature` | Regenerate TypeScript signature for decorators(except compiler) | -| `pnpm change add` | Add a change description | +| `pnpm change add` | Add a change description (see valid kinds in [`.chronus/config.yaml`](.chronus/config.yaml)) | | `pnpm lint` | Run linters | | `pnpm lint:fix` | Fix autofixable issues | | `pnpm regen-samples` | Regen the samples(when the samples test fail) | @@ -66,6 +66,15 @@ TYPESPEC_VERBOSE_TEST_OUTPUT=true. **For the compiler you will need to run it manually or run the whole workspace build. This is because for the tool to run it needs the compiler to build first.** +### Writing tests + +Tests use [vitest](https://vitest.dev/) with the `createTester` API from `@typespec/compiler/testing`. **Do not** use the legacy `createTestHost`/`createTestRunner` APIs — they are deprecated. See the [testing documentation](https://typespec.io/docs/extending-typespec/testing) for the full guide and migration instructions. + +**Test structure rules:** + +- Do **not** wrap tests in a top-level `describe`. The test file name already provides context. Use `it()` directly at the top level. Only use `describe()` for sub-groups within a file. +- Use `it` (not `test`) for test functions, as enforced by ESLint (`vitest/consistent-test-it`). + ## Using VS Code ### Recommended extensions @@ -269,6 +278,28 @@ Go to `packages/website` and run the command: pnpm start ``` +## Creating release notes + +Release notes are published at each release in `website/src/content/docs/docs/release-notes/`. They follow the pattern `release-YYYY-MM-DD.md`. + +Run the following command to generate the changelog: + +```bash +pnpm chronus changelog --policy typespec-stable --policy typespec-preview +``` + +Create a new file `website/src/content/docs/docs/release-notes/release-YYYY-MM-DD.md` with this frontmatter and paste the command output below it, removing the `Dependencies` category: + +```markdown +--- +title: "X.Y.0" +releaseDate: YYYY-MM-DD +version: "X.Y.0" +--- +``` + +See existing release notes for examples. + # Pull request ## Trigger TypeSpec Playground Try It build diff --git a/cspell.yaml b/cspell.yaml index 6d4f45eceea..c20d94d28b1 100644 --- a/cspell.yaml +++ b/cspell.yaml @@ -247,6 +247,7 @@ words: - sfixed - shiki - sint + - slnx - snakeyaml - srnagar - ssdlrs @@ -256,7 +257,6 @@ words: - strs - stubbed - swaggerui - - syncpack - TCGC - terlson - timegm @@ -277,6 +277,7 @@ words: - unassignable - Uncapitalize - uncollapsed + - unconfigure - undifferentiable - undoc - Ungroup @@ -308,6 +309,7 @@ words: - WHATWG - WINDOWSARMVMIMAGE - WINDOWSVMIMAGE + - workerid - xiangyan - xiaofei - xlarge @@ -337,6 +339,8 @@ ignorePaths: - packages/mutator-framework/**/*.test.ts - packages/typespec-vscode/test/scenarios/** - pnpm-lock.yaml + - pnpm-workspace.yaml + - "**/dependabot.yml" - "**/*.mp4" - "**/*.plist" - .git/** diff --git a/docker/Dockerfile b/docker/Dockerfile index 6454def1171..8f5503cc472 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,7 +19,7 @@ RUN pnpm install --filter "@typespec/compiler..." RUN pnpm --filter "@typespec/compiler..." run build WORKDIR /app/packages/compiler -RUN npm pack +RUN pnpm pack # -------------------------------- # Setup final image diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResult.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResult.cs index 298c4cbf722..9ee18c0a4ea 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResult.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResult.cs @@ -51,7 +51,7 @@ public override ContinuationToken GetContinuationToken(ClientResult page) Uri nextPage = ((ListWithNextLinkResponse)page).Next; if (nextPage != null) { - return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.AbsoluteUri)); + return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.IsAbsoluteUri ? nextPage.AbsoluteUri : nextPage.OriginalString)); } else { diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResultOfT.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResultOfT.cs index 75cca5f61c6..32d65325b90 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResultOfT.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkAsyncCollectionResultOfT.cs @@ -52,7 +52,7 @@ public override ContinuationToken GetContinuationToken(ClientResult page) Uri nextPage = ((ListWithNextLinkResponse)page).Next; if (nextPage != null) { - return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.AbsoluteUri)); + return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.IsAbsoluteUri ? nextPage.AbsoluteUri : nextPage.OriginalString)); } else { diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResult.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResult.cs index aa07841a742..036a5e7d19f 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResult.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResult.cs @@ -51,7 +51,7 @@ public override ContinuationToken GetContinuationToken(ClientResult page) Uri nextPage = ((ListWithNextLinkResponse)page).Next; if (nextPage != null) { - return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.AbsoluteUri)); + return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.IsAbsoluteUri ? nextPage.AbsoluteUri : nextPage.OriginalString)); } else { diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResultOfT.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResultOfT.cs index be3237cadde..5c0ca6fd77b 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResultOfT.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithNextLinkCollectionResultOfT.cs @@ -51,7 +51,7 @@ public override ContinuationToken GetContinuationToken(ClientResult page) Uri nextPage = ((ListWithNextLinkResponse)page).Next; if (nextPage != null) { - return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.AbsoluteUri)); + return ContinuationToken.FromBytes(BinaryData.FromString(nextPage.IsAbsoluteUri ? nextPage.AbsoluteUri : nextPage.OriginalString)); } else { diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResult.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResult.cs index a66358c4c05..df309fec4a2 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResult.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResult.cs @@ -39,7 +39,7 @@ public override async IAsyncEnumerable GetRawPagesAsync() { yield break; } - nextPageUri = new Uri(nextPageString); + nextPageUri = new Uri(nextPageString, UriKind.RelativeOrAbsolute); message = _client.CreateNextGetWithStringNextLinkRequest(nextPageUri, _options); } } diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResultOfT.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResultOfT.cs index 446519c68fc..2523abcabb7 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResultOfT.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkAsyncCollectionResultOfT.cs @@ -40,7 +40,7 @@ public override async IAsyncEnumerable GetRawPagesAsync() { yield break; } - nextPageUri = new Uri(nextPageString); + nextPageUri = new Uri(nextPageString, UriKind.RelativeOrAbsolute); message = _client.CreateNextGetWithStringNextLinkRequest(nextPageUri, _options); } } diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResult.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResult.cs index 482b13b7cf5..d764ca5f984 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResult.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResult.cs @@ -39,7 +39,7 @@ public override IEnumerable GetRawPages() { yield break; } - nextPageUri = new Uri(nextPageString); + nextPageUri = new Uri(nextPageString, UriKind.RelativeOrAbsolute); message = _client.CreateNextGetWithStringNextLinkRequest(nextPageUri, _options); } } diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResultOfT.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResultOfT.cs index 769232eba68..a43474cfa5f 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResultOfT.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/CollectionResults/SampleTypeSpecClientGetWithStringNextLinkCollectionResultOfT.cs @@ -39,7 +39,7 @@ public override IEnumerable GetRawPages() { yield break; } - nextPageUri = new Uri(nextPageString); + nextPageUri = new Uri(nextPageString, UriKind.RelativeOrAbsolute); message = _client.CreateNextGetWithStringNextLinkRequest(nextPageUri, _options); } } diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/Argument.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/Argument.cs index ceebb5e87f2..48144a285ae 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/Argument.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/Argument.cs @@ -67,5 +67,44 @@ public static void AssertNotNullOrEmpty(string value, string name) throw new ArgumentException("Value cannot be an empty string.", name); } } + + /// The value. + /// The name. + public static void AssertNotNullOrWhiteSpace(string value, string name) + { + if (value is null) + { + throw new ArgumentNullException(name); + } + if (string.IsNullOrWhiteSpace(value)) + { + throw new ArgumentException("Value cannot be empty or contain only white-space characters.", name); + } + } + + /// The value. + /// The minimum value. + /// The maximum value. + /// The name. + public static void AssertInRange(T value, T minimum, T maximum, string name) + where T : notnull, IComparable + { + if (minimum.CompareTo(value) > 0) + { + throw new ArgumentOutOfRangeException(name, "Value is less than the minimum allowed."); + } + if (maximum.CompareTo(value) < 0) + { + throw new ArgumentOutOfRangeException(name, "Value is greater than the maximum allowed."); + } + } + + /// The value. + /// The name. + public static string CheckNotNullOrEmpty(string value, string name) + { + AssertNotNullOrEmpty(value, name); + return value; + } } } diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/ModelSerializationExtensions.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/ModelSerializationExtensions.cs index 35a5dbee7b3..eba09d0aa3f 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/ModelSerializationExtensions.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Internal/ModelSerializationExtensions.cs @@ -385,7 +385,7 @@ public static void WriteBase64StringValue(this XmlWriter writer, byte[] value, s writer.WriteValue(TypeFormatters.ToString(value, format)); } - public static void WriteObjectValue(this XmlWriter writer, T value, ModelReaderWriterOptions options = null) + public static void WriteObjectValue(this XmlWriter writer, T value, ModelReaderWriterOptions options = null, string nameHint = null) { switch (value) { @@ -396,14 +396,27 @@ public static void WriteObjectValue(this XmlWriter writer, T value, ModelRead using (XmlReader reader = XmlReader.Create(stream, XmlReaderSettings)) { reader.MoveToContent(); - reader.ReadStartElement(); - while (reader.NodeType != XmlNodeType.EndElement) + if (nameHint != null) { - writer.WriteNode(reader, true); + writer.WriteStartElement(nameHint); + reader.ReadStartElement(); + while (reader.NodeType != XmlNodeType.EndElement) + { + writer.WriteNode(reader, true); + } + writer.WriteEndElement(); + } + else + { + reader.ReadStartElement(); + while (reader.NodeType != XmlNodeType.EndElement) + { + writer.WriteNode(reader, true); + } } } } - break; + return; default: throw new NotSupportedException($"Not supported type {typeof(T)}"); } diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/ListWithNextLinkResponse.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/ListWithNextLinkResponse.Serialization.cs index 93f6c564a95..0d591294f7e 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/ListWithNextLinkResponse.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/ListWithNextLinkResponse.Serialization.cs @@ -159,7 +159,7 @@ internal static ListWithNextLinkResponse DeserializeListWithNextLinkResponse(Jso { continue; } - next = string.IsNullOrEmpty(prop.Value.GetString()) ? null : new Uri(prop.Value.GetString()); + next = string.IsNullOrEmpty(prop.Value.GetString()) ? null : new Uri(prop.Value.GetString(), UriKind.RelativeOrAbsolute); continue; } if (options.Format != "W") diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Plant.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Plant.Serialization.cs index ebed4cdc93e..bd5e9491664 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Plant.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Plant.Serialization.cs @@ -58,7 +58,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions { using (XmlWriter writer = XmlWriter.Create(stream, ModelSerializationExtensions.XmlWriterSettings)) { - Write(writer, options, "Plant"); + WriteXml(writer, options, "Plant"); } if (stream.Position > int.MaxValue) { @@ -164,7 +164,7 @@ internal static Plant DeserializePlant(JsonElement element, ModelReaderWriterOpt /// The XML writer. /// The client options for reading and writing models. /// An optional name hint. - private void Write(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) + private void WriteXml(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) { if (nameHint != null) { @@ -181,7 +181,7 @@ private void Write(XmlWriter writer, ModelReaderWriterOptions options, string na /// The XML writer. /// The client options for reading and writing models. - protected virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) + internal virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) { string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "X") diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Tree.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Tree.Serialization.cs index a47822e7db6..9feeb28c5f5 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Tree.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/Tree.Serialization.cs @@ -56,7 +56,7 @@ protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions { using (XmlWriter writer = XmlWriter.Create(stream, ModelSerializationExtensions.XmlWriterSettings)) { - Write(writer, options, "Tree"); + WriteXml(writer, options, "Tree"); } if (stream.Position > int.MaxValue) { @@ -92,6 +92,14 @@ public static implicit operator BinaryContent(Tree tree) return BinaryContent.Create(tree, ModelSerializationExtensions.WireOptions); } + /// Converts the model to BinaryContent using the specified format. + /// The format to use for serialization. + internal BinaryContent ToBinaryContent(string format) + { + ModelReaderWriterOptions options = new ModelReaderWriterOptions(format); + return BinaryContent.Create(this, options); + } + /// The to deserialize the from. public static explicit operator Tree(ClientResult result) { @@ -198,7 +206,7 @@ internal static Tree DeserializeTree(JsonElement element, ModelReaderWriterOptio /// The XML writer. /// The client options for reading and writing models. /// An optional name hint. - private void Write(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) + private void WriteXml(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) { if (nameHint != null) { @@ -215,7 +223,7 @@ private void Write(XmlWriter writer, ModelReaderWriterOptions options, string na /// The XML writer. /// The client options for reading and writing models. - protected override void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) + internal override void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) { string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "X") diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/UnknownPlant.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/UnknownPlant.Serialization.cs index f4d01149591..f6735b77db9 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/UnknownPlant.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/UnknownPlant.Serialization.cs @@ -54,7 +54,7 @@ protected override BinaryData PersistableModelWriteCore(ModelReaderWriterOptions { using (XmlWriter writer = XmlWriter.Create(stream, ModelSerializationExtensions.XmlWriterSettings)) { - Write(writer, options, "Plant"); + WriteXml(writer, options, "Plant"); } if (stream.Position > int.MaxValue) { @@ -158,7 +158,7 @@ internal static UnknownPlant DeserializeUnknownPlant(JsonElement element, ModelR /// The XML writer. /// The client options for reading and writing models. /// An optional name hint. - private void Write(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) + private void WriteXml(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) { if (nameHint != null) { @@ -175,7 +175,7 @@ private void Write(XmlWriter writer, ModelReaderWriterOptions options, string na /// The XML writer. /// The client options for reading and writing models. - protected override void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) + internal override void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) { string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "X") diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlAdvancedModel.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlAdvancedModel.Serialization.cs index 00dae63b926..a92c1d5e900 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlAdvancedModel.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlAdvancedModel.Serialization.cs @@ -48,7 +48,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions { using (XmlWriter writer = XmlWriter.Create(stream, ModelSerializationExtensions.XmlWriterSettings)) { - Write(writer, options, "AdvancedXmlModel"); + WriteXml(writer, options, "AdvancedXmlModel"); } if (stream.Position > int.MaxValue) { @@ -100,7 +100,7 @@ public static explicit operator XmlAdvancedModel(ClientResult result) /// The XML writer. /// The client options for reading and writing models. /// An optional name hint. - private void Write(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) + private void WriteXml(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) { if (nameHint != null) { @@ -117,7 +117,7 @@ private void Write(XmlWriter writer, ModelReaderWriterOptions options, string na /// The XML writer. /// The client options for reading and writing models. - protected virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) + internal virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) { string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "X") @@ -159,7 +159,7 @@ protected virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOpti if (Optional.IsDefined(OptionalInt)) { writer.WriteStartElement("optionalInt"); - writer.WriteValue(OptionalInt); + writer.WriteValue(OptionalInt.Value); writer.WriteEndElement(); } if (Optional.IsDefined(NullableString)) @@ -379,9 +379,9 @@ internal static XmlAdvancedModel DeserializeXmlAdvancedModel(XElement element, M string originalName = default; string xmlIdentifier = default; string content = default; - IList unwrappedStrings = default; - IList unwrappedCounts = default; - IList unwrappedItems = default; + IList unwrappedStrings = new List(); + IList unwrappedCounts = new List(); + IList unwrappedItems = new List(); IList wrappedColors = default; IList items = default; XmlNestedModel nestedModel = default; @@ -400,7 +400,7 @@ internal static XmlAdvancedModel DeserializeXmlAdvancedModel(XElement element, M IList fooItems = default; XmlNestedModel anotherModel = default; IList modelsWithNamespaces = default; - IList unwrappedModelsWithNamespaces = default; + IList unwrappedModelsWithNamespaces = new List(); IList> listOfListFoo = default; IDictionary dictionaryFoo = default; IDictionary> dictionaryOfDictionaryFoo = default; @@ -487,28 +487,16 @@ internal static XmlAdvancedModel DeserializeXmlAdvancedModel(XElement element, M } if (localName == "unwrappedStrings") { - if (unwrappedStrings == null) - { - unwrappedStrings = new List(); - } unwrappedStrings.Add((string)child); continue; } if (localName == "unwrappedCounts") { - if (unwrappedCounts == null) - { - unwrappedCounts = new List(); - } unwrappedCounts.Add((int)child); continue; } if (localName == "unwrappedItems") { - if (unwrappedItems == null) - { - unwrappedItems = new List(); - } unwrappedItems.Add(XmlItem.DeserializeXmlItem(child, options)); continue; } @@ -629,10 +617,6 @@ internal static XmlAdvancedModel DeserializeXmlAdvancedModel(XElement element, M } if (localName == "unwrappedModelsWithNamespaces") { - if (unwrappedModelsWithNamespaces == null) - { - unwrappedModelsWithNamespaces = new List(); - } unwrappedModelsWithNamespaces.Add(XmlModelWithNamespace.DeserializeXmlModelWithNamespace(child, options)); continue; } diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlItem.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlItem.Serialization.cs index 2e8a57c808b..5b34154f8c0 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlItem.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlItem.Serialization.cs @@ -47,7 +47,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions { using (XmlWriter writer = XmlWriter.Create(stream, ModelSerializationExtensions.XmlWriterSettings)) { - Write(writer, options, "Item"); + WriteXml(writer, options, "Item"); } if (stream.Position > int.MaxValue) { @@ -76,7 +76,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions /// The XML writer. /// The client options for reading and writing models. /// An optional name hint. - private void Write(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) + private void WriteXml(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) { if (nameHint != null) { @@ -93,7 +93,7 @@ private void Write(XmlWriter writer, ModelReaderWriterOptions options, string na /// The XML writer. /// The client options for reading and writing models. - protected virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) + internal virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) { string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "X") diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlModelWithNamespace.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlModelWithNamespace.Serialization.cs index 1b954c20670..0f175457a81 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlModelWithNamespace.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlModelWithNamespace.Serialization.cs @@ -47,7 +47,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions { using (XmlWriter writer = XmlWriter.Create(stream, ModelSerializationExtensions.XmlWriterSettings)) { - Write(writer, options, "XmlModelWithNamespace"); + WriteXml(writer, options, "XmlModelWithNamespace"); } if (stream.Position > int.MaxValue) { @@ -76,7 +76,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions /// The XML writer. /// The client options for reading and writing models. /// An optional name hint. - private void Write(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) + private void WriteXml(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) { if (nameHint != null) { @@ -93,7 +93,7 @@ private void Write(XmlWriter writer, ModelReaderWriterOptions options, string na /// The XML writer. /// The client options for reading and writing models. - protected virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) + internal virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) { string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "X") diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlNestedModel.Serialization.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlNestedModel.Serialization.cs index f7f7ec13db2..91016f0bc16 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlNestedModel.Serialization.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlNestedModel.Serialization.cs @@ -47,7 +47,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions { using (XmlWriter writer = XmlWriter.Create(stream, ModelSerializationExtensions.XmlWriterSettings)) { - Write(writer, options, "XmlNestedModel"); + WriteXml(writer, options, "XmlNestedModel"); } if (stream.Position > int.MaxValue) { @@ -76,7 +76,7 @@ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions /// The XML writer. /// The client options for reading and writing models. /// An optional name hint. - private void Write(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) + private void WriteXml(XmlWriter writer, ModelReaderWriterOptions options, string nameHint) { if (nameHint != null) { @@ -93,7 +93,7 @@ private void Write(XmlWriter writer, ModelReaderWriterOptions options, string na /// The XML writer. /// The client options for reading and writing models. - protected virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) + internal virtual void XmlModelWriteCore(XmlWriter writer, ModelReaderWriterOptions options) { string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; if (format != "X") diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/PlantOperations.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/PlantOperations.cs index 6ce49821335..dcfa7b2cb12 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/PlantOperations.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/PlantOperations.cs @@ -320,7 +320,8 @@ public virtual ClientResult UpdateTree(Tree tree, CancellationToken cancel System.Console.WriteLine("Entering method UpdateTree."); Argument.AssertNotNull(tree, nameof(tree)); - ClientResult result = UpdateTree(tree, cancellationToken.ToRequestOptions()); + using BinaryContent content = tree.ToBinaryContent("X"); + ClientResult result = UpdateTree(content, cancellationToken.ToRequestOptions()); return ClientResult.FromValue((Tree)result, result.GetRawResponse()); } catch (Exception ex) @@ -346,7 +347,8 @@ public virtual async Task> UpdateTreeAsync(Tree tree, Cancell System.Console.WriteLine("Entering method UpdateTreeAsync."); Argument.AssertNotNull(tree, nameof(tree)); - ClientResult result = await UpdateTreeAsync(tree, cancellationToken.ToRequestOptions()).ConfigureAwait(false); + using BinaryContent content = tree.ToBinaryContent("X"); + ClientResult result = await UpdateTreeAsync(content, cancellationToken.ToRequestOptions()).ConfigureAwait(false); return ClientResult.FromValue((Tree)result, result.GetRawResponse()); } catch (Exception ex) @@ -440,7 +442,8 @@ public virtual ClientResult UpdateTreeAsJson(Tree tree, CancellationToken System.Console.WriteLine("Entering method UpdateTreeAsJson."); Argument.AssertNotNull(tree, nameof(tree)); - ClientResult result = UpdateTreeAsJson(tree, cancellationToken.ToRequestOptions()); + using BinaryContent content = tree.ToBinaryContent("J"); + ClientResult result = UpdateTreeAsJson(content, cancellationToken.ToRequestOptions()); return ClientResult.FromValue((Tree)result, result.GetRawResponse()); } catch (Exception ex) @@ -466,7 +469,8 @@ public virtual async Task> UpdateTreeAsJsonAsync(Tree tree, C System.Console.WriteLine("Entering method UpdateTreeAsJsonAsync."); Argument.AssertNotNull(tree, nameof(tree)); - ClientResult result = await UpdateTreeAsJsonAsync(tree, cancellationToken.ToRequestOptions()).ConfigureAwait(false); + using BinaryContent content = tree.ToBinaryContent("J"); + ClientResult result = await UpdateTreeAsJsonAsync(content, cancellationToken.ToRequestOptions()).ConfigureAwait(false); return ClientResult.FromValue((Tree)result, result.GetRawResponse()); } catch (Exception ex) diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.RestClient.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.RestClient.cs index dee383633ca..7388bc4fc20 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.RestClient.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.RestClient.cs @@ -296,7 +296,14 @@ internal PipelineMessage CreateGetWithNextLinkRequest(RequestOptions options) internal PipelineMessage CreateNextGetWithNextLinkRequest(Uri nextPage, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); - uri.Reset(nextPage); + if (nextPage.IsAbsoluteUri) + { + uri.Reset(nextPage); + } + else + { + uri.Reset(new Uri(_endpoint, nextPage)); + } PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Accept", "application/json"); @@ -319,7 +326,14 @@ internal PipelineMessage CreateGetWithStringNextLinkRequest(RequestOptions optio internal PipelineMessage CreateNextGetWithStringNextLinkRequest(Uri nextPage, RequestOptions options) { ClientUriBuilder uri = new ClientUriBuilder(); - uri.Reset(nextPage); + if (nextPage.IsAbsoluteUri) + { + uri.Reset(nextPage); + } + else + { + uri.Reset(new Uri(_endpoint, nextPage)); + } PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); PipelineRequest request = message.Request; request.Headers.Set("Accept", "application/json"); diff --git a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.cs b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.cs index 291d40887ea..fdf22f78834 100644 --- a/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.cs +++ b/docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.cs @@ -32,12 +32,10 @@ public partial class SampleTypeSpecClient } }; private readonly string _apiVersion; - private readonly string _metricsNamespace; private AnimalOperations _cachedAnimalOperations; private PetOperations _cachedPetOperations; private DogOperations _cachedDogOperations; private PlantOperations _cachedPlantOperations; - private Metrics _cachedMetrics; /// Initializes a new instance of SampleTypeSpecClient for mocking. protected SampleTypeSpecClient() @@ -46,41 +44,33 @@ protected SampleTypeSpecClient() /// Initializes a new instance of SampleTypeSpecClient. /// Service endpoint. - /// /// A credential used to authenticate to the service. - /// , or is null. - /// is an empty string, and was expected to be non-empty. - public SampleTypeSpecClient(Uri endpoint, string metricsNamespace, ApiKeyCredential credential) : this(endpoint, metricsNamespace, credential, new SampleTypeSpecClientOptions()) + /// or is null. + public SampleTypeSpecClient(Uri endpoint, ApiKeyCredential credential) : this(endpoint, credential, new SampleTypeSpecClientOptions()) { } /// Initializes a new instance of SampleTypeSpecClient. /// Service endpoint. - /// /// A credential provider used to authenticate to the service. - /// , or is null. - /// is an empty string, and was expected to be non-empty. - public SampleTypeSpecClient(Uri endpoint, string metricsNamespace, AuthenticationTokenProvider tokenProvider) : this(endpoint, metricsNamespace, tokenProvider, new SampleTypeSpecClientOptions()) + /// or is null. + public SampleTypeSpecClient(Uri endpoint, AuthenticationTokenProvider tokenProvider) : this(endpoint, tokenProvider, new SampleTypeSpecClientOptions()) { } /// Initializes a new instance of SampleTypeSpecClient. /// Service endpoint. - /// /// A credential used to authenticate to the service. /// The options for configuring the client. - /// , or is null. - /// is an empty string, and was expected to be non-empty. - public SampleTypeSpecClient(Uri endpoint, string metricsNamespace, ApiKeyCredential credential, SampleTypeSpecClientOptions options) + /// or is null. + public SampleTypeSpecClient(Uri endpoint, ApiKeyCredential credential, SampleTypeSpecClientOptions options) { Argument.AssertNotNull(endpoint, nameof(endpoint)); - Argument.AssertNotNullOrEmpty(metricsNamespace, nameof(metricsNamespace)); Argument.AssertNotNull(credential, nameof(credential)); options ??= new SampleTypeSpecClientOptions(); _endpoint = endpoint; - _metricsNamespace = metricsNamespace; _keyCredential = credential; Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(SampleTypeSpecClient).Assembly), ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(_keyCredential, AuthorizationHeader) }, Array.Empty()); _apiVersion = options.Version; @@ -88,21 +78,17 @@ public SampleTypeSpecClient(Uri endpoint, string metricsNamespace, ApiKeyCredent /// Initializes a new instance of SampleTypeSpecClient. /// Service endpoint. - /// /// A credential provider used to authenticate to the service. /// The options for configuring the client. - /// , or is null. - /// is an empty string, and was expected to be non-empty. - public SampleTypeSpecClient(Uri endpoint, string metricsNamespace, AuthenticationTokenProvider tokenProvider, SampleTypeSpecClientOptions options) + /// or is null. + public SampleTypeSpecClient(Uri endpoint, AuthenticationTokenProvider tokenProvider, SampleTypeSpecClientOptions options) { Argument.AssertNotNull(endpoint, nameof(endpoint)); - Argument.AssertNotNullOrEmpty(metricsNamespace, nameof(metricsNamespace)); Argument.AssertNotNull(tokenProvider, nameof(tokenProvider)); options ??= new SampleTypeSpecClientOptions(); _endpoint = endpoint; - _metricsNamespace = metricsNamespace; _tokenProvider = tokenProvider; Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(SampleTypeSpecClient).Assembly), new BearerTokenPolicy(_tokenProvider, _flows) }, Array.Empty()); _apiVersion = options.Version; @@ -3328,9 +3314,13 @@ public virtual PlantOperations GetPlantOperationsClient() } /// Initializes a new instance of Metrics. - public virtual Metrics GetMetricsClient() + /// + /// is null. + public virtual Metrics GetMetricsClient(string metricsNamespace) { - return Volatile.Read(ref _cachedMetrics) ?? Interlocked.CompareExchange(ref _cachedMetrics, new Metrics(Pipeline, _endpoint, _metricsNamespace), null) ?? _cachedMetrics; + Argument.AssertNotNull(metricsNamespace, nameof(metricsNamespace)); + + return new Metrics(Pipeline, _endpoint, metricsNamespace); } } } diff --git a/docs/samples/client/csharp/SampleService/package.json b/docs/samples/client/csharp/SampleService/package.json index 39d1b72c1bd..e24bc78579c 100644 --- a/docs/samples/client/csharp/SampleService/package.json +++ b/docs/samples/client/csharp/SampleService/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@typespec/http-client-csharp": "1.0.0-alpha.20260211.4", + "@typespec/http-client-csharp": "1.0.0-alpha.20260310.2", "logging-plugin": "file:../plugins/logging" } } diff --git a/eng/common/scripts/check-catalog.ts b/eng/common/scripts/check-catalog.ts new file mode 100644 index 00000000000..521dc9870ae --- /dev/null +++ b/eng/common/scripts/check-catalog.ts @@ -0,0 +1,115 @@ +import { execSync } from "child_process"; +import { readFileSync } from "fs"; +import { join, relative } from "path"; +import { parse } from "yaml"; +import { repoRoot } from "./utils/common.js"; + +/** + * Validates that all workspace package dependencies use `catalog:` or `workspace:` protocols, + * ensuring versions are centrally managed via the pnpm catalog in pnpm-workspace.yaml. + */ + +interface WorkspaceConfig { + catalog?: Record; +} + +const workspaceConfig: WorkspaceConfig = parse( + readFileSync(join(repoRoot, "pnpm-workspace.yaml"), "utf8"), +); +const catalog = workspaceConfig.catalog ?? {}; + +/** + * Dependencies that are allowed to use explicit versions instead of catalog:. + * Each entry maps a package.json path (relative to repo root) to a set of dependency names. + */ +const exceptions: Record> = { + // vsce needs a real semver for @types/vscode to determine VS Code engine compatibility + "packages/typespec-vscode/package.json": new Set(["@types/vscode"]), +}; + +const depTypes = ["dependencies", "devDependencies", "peerDependencies"] as const; + +const errors: string[] = []; +const warnings: string[] = []; + +// Resolve workspace packages from pnpm +const pnpmOutput = execSync("pnpm ls -r --json --depth -1", { + cwd: repoRoot, + encoding: "utf8", +}); +const workspacePackages: { path: string }[] = JSON.parse(pnpmOutput); +const packageJsonPaths: string[] = workspacePackages.map((p) => + join(relative(repoRoot, p.path), "package.json"), +); + +for (const relPath of packageJsonPaths) { + const fullPath = join(repoRoot, relPath); + const pkg = JSON.parse(readFileSync(fullPath, "utf8")); + const fileExceptions = exceptions[relPath] ?? new Set(); + + for (const depType of depTypes) { + const deps: Record | undefined = pkg[depType]; + if (!deps) continue; + + for (const [name, version] of Object.entries(deps)) { + if (version === "catalog:" || version.startsWith("workspace:")) { + continue; + } + if (fileExceptions.has(name)) { + // Allowed exception — but warn if it drifts from the catalog + if (catalog[name] && catalog[name] !== version) { + warnings.push( + `${relPath}: ${depType}.${name} has version "${version}" but catalog has "${catalog[name]}". Keep them in sync.`, + ); + } + continue; + } + errors.push( + `${relPath}: ${depType}.${name} uses explicit version "${version}" instead of "catalog:".`, + ); + } + } +} + +// Check that every catalog entry is actually used somewhere +const usedCatalogEntries = new Set(); +for (const relPath of packageJsonPaths) { + const fullPath = join(repoRoot, relPath); + const pkg = JSON.parse(readFileSync(fullPath, "utf8")); + for (const depType of depTypes) { + const deps: Record | undefined = pkg[depType]; + if (!deps) continue; + for (const [name, version] of Object.entries(deps)) { + if (version === "catalog:") { + usedCatalogEntries.add(name); + } + } + } +} + +for (const name of Object.keys(catalog)) { + if (!usedCatalogEntries.has(name)) { + warnings.push(`pnpm-workspace.yaml: catalog entry "${name}" is not used by any package.`); + } +} + +// Report results +if (warnings.length > 0) { + console.log(`\n⚠ Warnings (${warnings.length}):`); + for (const w of warnings) { + console.log(` ${w}`); + } +} + +if (errors.length > 0) { + console.log(`\n✘ Errors (${errors.length}):`); + for (const e of errors) { + console.log(` ${e}`); + } + console.log( + '\nAll external dependencies must use "catalog:" protocol. Add the version to the catalog in pnpm-workspace.yaml and use "catalog:" in package.json.', + ); + process.exit(1); +} + +console.log("✔ All dependencies are using catalog: or workspace: protocols."); diff --git a/eng/emitters/pipelines/templates/stages/emitter-stages.yml b/eng/emitters/pipelines/templates/stages/emitter-stages.yml index 08805e737f0..9fc53174f91 100644 --- a/eng/emitters/pipelines/templates/stages/emitter-stages.yml +++ b/eng/emitters/pipelines/templates/stages/emitter-stages.yml @@ -7,7 +7,9 @@ parameters: - name: UseTypeSpecNext type: boolean - # Whether to publish to the internal feed. + # Whether and where to publish packages. Values: 'none', 'internal', 'public'. + # 'internal' publishes to the internal feed only. + # 'public' publishes to the internal feed AND to npmjs.org. - name: Publish type: string default: "none" @@ -281,27 +283,35 @@ stages: artifact: build_artifacts_${{ parameters.LanguageShortName }} displayName: Download build artifacts - # Create authenticated .npmrc file for publishing - - ${{ if eq(parameters.Publish, 'internal') }}: - - template: /eng/emitters/pipelines/templates/steps/create-authenticated-npmrc.yml - parameters: - npmrcPath: $(buildArtifactsPath)/packages/.npmrc - registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest/npm/registry/ - - ${{ else }}: - - pwsh: | - "//registry.npmjs.org/:_authToken=$(azure-sdk-npm-token)" | Out-File '.npmrc' - displayName: Authenticate .npmrc for npmjs.org - workingDirectory: $(buildArtifactsPath)/packages + # Always publish to internal feed + - template: /eng/emitters/pipelines/templates/steps/create-authenticated-npmrc.yml + parameters: + npmrcPath: $(buildArtifactsPath)/packages/.npmrc + registryUrl: https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/ - # per package, publishing using appropriate tool - ${{ each package in parameters.Packages }}: - ${{ if eq(package.type, 'npm') }}: - pwsh: | $file = Resolve-Path "${{ package.file }}" Write-Host "npm publish $file --verbose --access public --prefix $(buildArtifactsPath)/packages" npm publish $file --verbose --access public --prefix $(buildArtifactsPath)/packages - displayName: Publish ${{ package.name }} + displayName: Publish ${{ package.name }} to internal feed workingDirectory: $(buildArtifactsPath)/packages + + # If publishing publicly, also publish to npmjs.org + - ${{ if eq(parameters.Publish, 'public') }}: + - pwsh: | + "//registry.npmjs.org/:_authToken=$(azure-sdk-npm-token)" | Out-File '.npmrc' + displayName: Authenticate .npmrc for npmjs.org + workingDirectory: $(buildArtifactsPath)/packages + - ${{ each package in parameters.Packages }}: + - ${{ if eq(package.type, 'npm') }}: + - pwsh: | + $file = Resolve-Path "${{ package.file }}" + Write-Host "npm publish $file --verbose --access public --prefix $(buildArtifactsPath)/packages" + npm publish $file --verbose --access public --prefix $(buildArtifactsPath)/packages + displayName: Publish ${{ package.name }} to npmjs.org + workingDirectory: $(buildArtifactsPath)/packages - ${{ if parameters.HasNugetPackages }}: - task: 1ES.PublishNuget@1 displayName: Publish Nuget packages diff --git a/eng/emitters/scripts/Generate-APIView-CodeFile.ps1 b/eng/emitters/scripts/Generate-APIView-CodeFile.ps1 index 28121afa5a0..18a9f47f6c3 100644 --- a/eng/emitters/scripts/Generate-APIView-CodeFile.ps1 +++ b/eng/emitters/scripts/Generate-APIView-CodeFile.ps1 @@ -11,7 +11,7 @@ if (!(Test-Path -Path $ArtifactPath)) exit 1 } -$apiviewParser = "@azure-tools/ts-genapi@2.0.10" +$apiviewParser = "@azure-tools/ts-genapi@2.0.11" Write-Host "Installing $($apiviewParser)" npm install $apiviewParser --registry $NpmDevopsFeedRegistry $installedPath = npm ls @azure-tools/ts-genapi -p diff --git a/eng/tsp-core/pipelines/jobs/build-for-publish.yml b/eng/tsp-core/pipelines/jobs/build-for-publish.yml index 139f87efe0a..d2f9fa6ad3b 100644 --- a/eng/tsp-core/pipelines/jobs/build-for-publish.yml +++ b/eng/tsp-core/pipelines/jobs/build-for-publish.yml @@ -3,7 +3,7 @@ jobs: displayName: Build Packages variables: - TYPESPEC_SKIP_DOCUSAURUS_BUILD: true # Disable docusaurus build + TYPESPEC_SKIP_WEBSITE_BUILD: true # Disable docusaurus build steps: - template: /eng/tsp-core/pipelines/templates/install.yml diff --git a/eng/tsp-core/pipelines/jobs/e2e.yml b/eng/tsp-core/pipelines/jobs/e2e.yml index ad628383065..db375014ab8 100644 --- a/eng/tsp-core/pipelines/jobs/e2e.yml +++ b/eng/tsp-core/pipelines/jobs/e2e.yml @@ -8,7 +8,7 @@ jobs: variables: TYPESPEC_VS_CI_BUILD: false # Enable official Visual Studio extension build - TYPESPEC_SKIP_DOCUSAURUS_BUILD: true # Disable docusaurus build + TYPESPEC_SKIP_WEBSITE_BUILD: true # Disable docusaurus build DISPLAY: ":99" # Set DISPLAY for Linux GUI applications pool: diff --git a/eng/tsp-core/pipelines/stages/ci-stages.yml b/eng/tsp-core/pipelines/stages/ci-stages.yml index 109875baecc..15414a1b966 100644 --- a/eng/tsp-core/pipelines/stages/ci-stages.yml +++ b/eng/tsp-core/pipelines/stages/ci-stages.yml @@ -11,7 +11,7 @@ stages: variables: TYPESPEC_VS_CI_BUILD: true # Enable official Visual Studio extension build - TYPESPEC_SKIP_DOCUSAURUS_BUILD: true # Disable docusaurus build + TYPESPEC_SKIP_WEBSITE_BUILD: true # Disable docusaurus build strategy: matrix: @@ -38,7 +38,7 @@ stages: variables: TYPESPEC_VS_CI_BUILD: true # Enable official Visual Studio extension build - TYPESPEC_SKIP_DOCUSAURUS_BUILD: true # Disable docusaurus build + TYPESPEC_SKIP_WEBSITE_BUILD: true # Disable website build strategy: matrix: diff --git a/eng/tsp-core/pipelines/templates/install.yml b/eng/tsp-core/pipelines/templates/install.yml index 0fe43311aa4..e5d30499603 100644 --- a/eng/tsp-core/pipelines/templates/install.yml +++ b/eng/tsp-core/pipelines/templates/install.yml @@ -2,7 +2,7 @@ parameters: - name: nodeVersion type: string - default: 22.x + default: 24.x - name: useDotNet type: string diff --git a/package.json b/package.json index c572c31d70d..38299fa8b38 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,11 @@ "build:all": "pnpm -r --workspace-concurrency=Infinity build", "check:eng": "tsc -p ./tsconfig.eng.json --noEmit", "setup:min": "pnpm install && pnpm --filter \"@typespec/prettier-plugin-typespec...\" --filter \"@typespec/tspd...\" run build", - "check-version-mismatch": "syncpack list-mismatches", + "check-catalog": "tsx eng/common/scripts/check-catalog.ts", "change": "chronus", "clean": "pnpm -r run clean", "cspell": "cspell --no-progress .", "dogfood": "pnpm install && pnpm build && pnpm -r dogfood", - "fix-version-mismatch": "syncpack fix-mismatches", "format": "prettier . --write", "format:check": "prettier . --check", "format:dir": "prettier --write", @@ -41,48 +40,35 @@ "tsp-integration": "node packages/tsp-integration/cmd/tsp-integration.js" }, "devDependencies": { - "@chronus/chronus": "^1.0.1", - "@chronus/github": "^1.0.1", - "@chronus/github-pr-commenter": "^1.0.1", - "@eslint/js": "^10.0.1", - "@microsoft/api-extractor": "^7.57.4", - "@octokit/core": "^7.0.2", - "@octokit/plugin-paginate-graphql": "^6.0.0", - "@octokit/plugin-rest-endpoint-methods": "^17.0.0", - "@types/micromatch": "^4.0.9", - "@types/node": "~25.3.0", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/eslint-plugin": "^1.5.2", - "c8": "^11.0.0", - "cspell": "^9.4.0", - "eslint": "^10.0.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-react-hooks": "7.0.1", - "eslint-plugin-unicorn": "^63.0.0", - "micromatch": "^4.0.8", - "picocolors": "~1.1.1", - "playwright": "^1.57.0", - "prettier": "~3.8.0", - "prettier-plugin-astro": "^0.14.1", - "prettier-plugin-organize-imports": "~4.3.0", - "prettier-plugin-sh": "^0.18.0", - "rimraf": "~6.1.3", - "syncpack": "^13.0.3", - "tsx": "^4.21.0", - "typescript": "~5.9.3", - "typescript-eslint": "^8.49.0", - "vite-plugin-node-polyfills": "^0.25.0", - "vitest": "^4.0.18", - "yaml": "~2.8.2" - }, - "syncpack": { - "dependencyTypes": [ - "dev", - "overrides", - "peer", - "pnpmOverrides", - "prod", - "resolutions" - ] + "@chronus/chronus": "catalog:", + "@chronus/github": "catalog:", + "@chronus/github-pr-commenter": "catalog:", + "@eslint/js": "catalog:", + "@microsoft/api-extractor": "catalog:", + "@octokit/core": "catalog:", + "@octokit/plugin-paginate-graphql": "catalog:", + "@octokit/plugin-rest-endpoint-methods": "catalog:", + "@types/micromatch": "catalog:", + "@types/node": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/eslint-plugin": "catalog:", + "c8": "catalog:", + "cspell": "catalog:", + "eslint": "catalog:", + "eslint-plugin-react-hooks": "catalog:", + "eslint-plugin-unicorn": "catalog:", + "micromatch": "catalog:", + "picocolors": "catalog:", + "playwright": "catalog:", + "prettier": "catalog:", + "prettier-plugin-astro": "catalog:", + "prettier-plugin-organize-imports": "catalog:", + "prettier-plugin-sh": "catalog:", + "rimraf": "catalog:", + "tsx": "catalog:", + "typescript": "catalog:", + "typescript-eslint": "catalog:", + "vitest": "catalog:", + "yaml": "catalog:" } } diff --git a/packages/asset-emitter/package.json b/packages/asset-emitter/package.json index fd952139780..59e84f20b21 100644 --- a/packages/asset-emitter/package.json +++ b/packages/asset-emitter/package.json @@ -45,13 +45,13 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/astro-utils/package.json b/packages/astro-utils/package.json index e7a93898aa9..b35e317dd4e 100644 --- a/packages/astro-utils/package.json +++ b/packages/astro-utils/package.json @@ -19,24 +19,24 @@ "index.ts" ], "scripts": { - "build": "astro check && tsc -p ./tsconfig.build.json", + "build": "node -e \"if(process.env.TYPESPEC_SKIP_WEBSITE_BUILD==='true'){console.log('Skipping astro-utils build');process.exit(0)}else{process.exit(1)}\" || (astro check && tsc -p ./tsconfig.build.json)", "watch": "tsc -p ./tsconfig.build.json --watch" }, "devDependencies": { - "@types/react": "~19.2.7", - "astro": "^5.16.5" + "@types/react": "catalog:", + "astro": "catalog:" }, "peerDependencies": { - "astro": "^5.16.5" + "astro": "catalog:" }, "dependencies": { - "@astrojs/check": "^0.9.4", - "@astrojs/starlight": "^0.37.0", - "@expressive-code/core": "^0.41.2", + "@astrojs/check": "catalog:", + "@astrojs/starlight": "catalog:", + "@expressive-code/core": "catalog:", "@typespec/playground": "workspace:^", - "astro-expressive-code": "^0.41.2", - "pathe": "^2.0.3", - "react": "~19.2.3", - "typescript": "~5.9.3" + "astro-expressive-code": "catalog:", + "pathe": "catalog:", + "react": "catalog:", + "typescript": "catalog:" } } diff --git a/packages/astro-utils/src/llmstxt/index.ts b/packages/astro-utils/src/llmstxt/index.ts index 0653cbed1d6..dde582e456c 100644 --- a/packages/astro-utils/src/llmstxt/index.ts +++ b/packages/astro-utils/src/llmstxt/index.ts @@ -1,4 +1,4 @@ -import type { z } from "astro:content"; +import { z } from "astro/zod"; import { generateMarkdownPath } from "./generators"; import type { llmstxtSchema } from "./schema"; diff --git a/packages/astro-utils/src/llmstxt/schema.ts b/packages/astro-utils/src/llmstxt/schema.ts index 43eb6c1c880..ae0f08f1f42 100644 --- a/packages/astro-utils/src/llmstxt/schema.ts +++ b/packages/astro-utils/src/llmstxt/schema.ts @@ -1,3 +1,3 @@ -import { z } from "astro:content"; +import { z } from "astro/zod"; export const llmstxtSchema = z.boolean().optional(); diff --git a/packages/astro-utils/src/sidebar/index.ts b/packages/astro-utils/src/sidebar/index.ts index 904f76f70ab..4569954ccf3 100644 --- a/packages/astro-utils/src/sidebar/index.ts +++ b/packages/astro-utils/src/sidebar/index.ts @@ -53,7 +53,8 @@ export async function processSidebar( function getSlugFromPath(directory: string, path: string) { const name = parse(path).name.toLocaleLowerCase(); const normalizedName = name === "index" ? "" : name; - return prefix(join(directory, normalizedName)) + const joined = join(directory, normalizedName); + return prefix(joined === "." ? "" : joined) .replaceAll("$", "") .replaceAll(" ", "-") .toLowerCase(); diff --git a/packages/best-practices/package.json b/packages/best-practices/package.json index 7530334eb1b..22c07908a52 100644 --- a/packages/best-practices/package.json +++ b/packages/best-practices/package.json @@ -44,13 +44,13 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/bundle-uploader/package.json b/packages/bundle-uploader/package.json index e181e6c4250..8be768faefa 100644 --- a/packages/bundle-uploader/package.json +++ b/packages/bundle-uploader/package.json @@ -37,22 +37,22 @@ "!dist/test/**" ], "dependencies": { - "@azure/identity": "~4.13.0", - "@azure/storage-blob": "~12.31.0", - "@pnpm/workspace.find-packages": "^1000.0.24", + "@azure/identity": "catalog:", + "@azure/storage-blob": "catalog:", + "@pnpm/workspace.find-packages": "catalog:", "@typespec/bundler": "workspace:^", - "json5": "^2.2.3", - "picocolors": "~1.1.1", - "semver": "^7.7.1" + "json5": "catalog:", + "picocolors": "catalog:", + "semver": "catalog:" }, "devDependencies": { - "@types/node": "~25.3.0", - "@types/semver": "^7.5.8", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@types/node": "catalog:", + "@types/semver": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/bundler/CHANGELOG.md b/packages/bundler/CHANGELOG.md index 6465670d388..abea0a325cf 100644 --- a/packages/bundler/CHANGELOG.md +++ b/packages/bundler/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/bundler +## 0.5.2 + +### Bug Fixes + +- [#10252](https://github.com/microsoft/typespec/pull/10252) Fix name minifying + + ## 0.5.1 ### Bump dependencies diff --git a/packages/bundler/package.json b/packages/bundler/package.json index 3b6fc2c5e9c..e3dc266b4ea 100644 --- a/packages/bundler/package.json +++ b/packages/bundler/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/bundler", - "version": "0.5.1", + "version": "0.5.2", "author": "Microsoft Corporation", "description": "Package to bundle a TypeSpec library.", "homepage": "https://typespec.io", @@ -43,21 +43,20 @@ ], "dependencies": { "@typespec/compiler": "workspace:^", - "esbuild": "^0.27.0", - "esbuild-plugins-node-modules-polyfill": "^1.7.0", - "node-stdlib-browser": "~1.3.1", - "picocolors": "~1.1.1", - "yargs": "~18.0.0" + "esbuild": "catalog:", + "esbuild-plugins-node-modules-polyfill": "catalog:", + "picocolors": "catalog:", + "yargs": "catalog:" }, "devDependencies": { - "@types/node": "~25.3.0", - "@types/yargs": "~17.0.33", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vite": "^7.2.7", - "vitest": "^4.0.18" + "@types/node": "catalog:", + "@types/yargs": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/bundler/src/bundler.ts b/packages/bundler/src/bundler.ts index 0fc8f5dfc31..8e8676c1c1d 100644 --- a/packages/bundler/src/bundler.ts +++ b/packages/bundler/src/bundler.ts @@ -239,6 +239,7 @@ async function createEsBuildContext( format: "esm", target: "es2024", minify, + keepNames: minify, plugins: [virtualPlugin, nodeModulesPolyfillPlugin({}), ...plugins], }); } diff --git a/packages/bundler/test/test.test.ts b/packages/bundler/test/test.test.ts index 6924495d386..0b5d7b5ba85 100644 --- a/packages/bundler/test/test.test.ts +++ b/packages/bundler/test/test.test.ts @@ -1,8 +1,54 @@ -import { ok } from "assert"; -import { describe, it } from "vitest"; +import { mkdtemp, rm, writeFile } from "fs/promises"; +import { tmpdir } from "os"; +import { join } from "path"; +import { describe, expect, it } from "vitest"; +import { createTypeSpecBundle } from "../src/bundler.js"; describe("bundler", () => { - it("works", () => { - ok(true); + /** + * Regression test: TypeSpec decorator functions are identified by their `.name` property + * at runtime (e.g., `d.decorator.name === "$armResourceOperations"`). + * When esbuild minifies library bundles, it can rename functions, changing their `.name`. + * The bundler must use `keepNames: true` to preserve function names in minified output. + */ + it("preserves function names when minifying", async () => { + const tmpDir = await mkdtemp(join(tmpdir(), "typespec-bundler-test-")); + try { + // Create a minimal TypeSpec library with named decorator function exports + await writeFile( + join(tmpDir, "package.json"), + JSON.stringify({ + name: "test-lib", + version: "1.0.0", + main: "index.js", + tspMain: "main.tsp", + peerDependencies: {}, + }), + ); + await writeFile( + join(tmpDir, "main.tsp"), + ['import "./index.js";', "namespace TestLib;"].join("\n"), + ); + await writeFile( + join(tmpDir, "index.js"), + [ + "export function $testDecorator(context, target) { }", + "export function $anotherDecorator(context, target) { }", + ].join("\n"), + ); + + const bundle = await createTypeSpecBundle(tmpDir, { minify: true }); + const indexFile = bundle.files.find((f) => f.filename === "index.js"); + expect(indexFile, "index.js should be in bundle output").toBeDefined(); + + // The bundle's jsSourceFiles should contain modules where the function + // .name property is preserved. With keepNames, esbuild emits a helper + // that restores the original name via Object.defineProperty. + // We verify the original function names appear as string literals in the output. + expect(indexFile!.content).toContain('"$testDecorator"'); + expect(indexFile!.content).toContain('"$anotherDecorator"'); + } finally { + await rm(tmpDir, { recursive: true }); + } }); }); diff --git a/packages/compiler/CHANGELOG.md b/packages/compiler/CHANGELOG.md index 6cad7e8be9b..76aae5174a1 100644 --- a/packages/compiler/CHANGELOG.md +++ b/packages/compiler/CHANGELOG.md @@ -1,5 +1,24 @@ # Change Log - @typespec/compiler +## 1.11.0 + +### Features + +- [#9893](https://github.com/microsoft/typespec/pull/9893) Added a new template `FilterVisibility` to support more accurate visibility transforms. This replaces the `@withVisibilityFilter` decorator, which is now deprecated and slated for removal in a future version of TypeSpec. + +### Bug Fixes + +- [#10196](https://github.com/microsoft/typespec/pull/10196) Include model name in `duplicate-property` error message +- [#10199](https://github.com/microsoft/typespec/pull/10199) [invalid-discriminated-union-variant] `duplicateDefaultVariant` diagnostic now includes the union type name +- [#10183](https://github.com/microsoft/typespec/pull/10183) Do not interpolate non primitive values in config automatically + ```yaml + file-type: ["json", "yaml"] + output-file: "openapi.{file-type}" + ``` + Will not be interpolated as `openapi.json,yaml` but keep the placeholder `{file-type}` intact for the emitter to handle. +- [#9893](https://github.com/microsoft/typespec/pull/9893) Fixed a bug that would prevent template parameters from assigning to values in some cases. + + ## 1.10.0 ### Features diff --git a/packages/compiler/generated-defs/TypeSpec.ts b/packages/compiler/generated-defs/TypeSpec.ts index 177b9afc681..2f066713ac6 100644 --- a/packages/compiler/generated-defs/TypeSpec.ts +++ b/packages/compiler/generated-defs/TypeSpec.ts @@ -3,6 +3,7 @@ import type { DecoratorValidatorCallbacks, Enum, EnumValue, + FunctionContext, Interface, Model, ModelProperty, @@ -1206,3 +1207,21 @@ export type TypeSpecDecorators = { withVisibilityFilter: WithVisibilityFilterDecorator; withLifecycleUpdate: WithLifecycleUpdateDecorator; }; + +export type ApplyVisibilityFilterFunctionImplementation = ( + context: FunctionContext, + input: Model, + filter: VisibilityFilter, + nameTemplate?: string, +) => Model; + +export type ApplyLifecycleUpdateFunctionImplementation = ( + context: FunctionContext, + input: Model, + nameTemplate?: string, +) => Model; + +export type TypeSpecFunctions = { + applyVisibilityFilter: ApplyVisibilityFilterFunctionImplementation; + applyLifecycleUpdate: ApplyLifecycleUpdateFunctionImplementation; +}; diff --git a/packages/compiler/generated-defs/TypeSpec.ts-test.ts b/packages/compiler/generated-defs/TypeSpec.ts-test.ts index 4e0ce70e3c3..568630da9c4 100644 --- a/packages/compiler/generated-defs/TypeSpec.ts-test.ts +++ b/packages/compiler/generated-defs/TypeSpec.ts-test.ts @@ -1,10 +1,15 @@ // An error in the imports would mean that the decorator is not exported or // doesn't have the right name. -import { $decorators } from "../src/index.js"; -import type { TypeSpecDecorators } from "./TypeSpec.js"; +import { $decorators, $functions } from "../src/index.js"; +import type { TypeSpecDecorators, TypeSpecFunctions } from "./TypeSpec.js"; /** * An error here would mean that the exported decorator is not using the same signature. Make sure to have export const $decName: DecNameDecorator = (...) => ... */ const _decs: TypeSpecDecorators = $decorators["TypeSpec"]; + +/** + * An error here would mean that the exported function is not using the same signature. Make sure to have export const $funcName: FuncNameFunction = (...) => ... + */ +const _funcs: TypeSpecFunctions = $functions["TypeSpec"]; diff --git a/packages/compiler/lib/std/visibility.tsp b/packages/compiler/lib/std/visibility.tsp index fad44fa1ea5..3024070f396 100644 --- a/packages/compiler/lib/std/visibility.tsp +++ b/packages/compiler/lib/std/visibility.tsp @@ -299,12 +299,60 @@ model VisibilityFilter { * } * ``` */ +#deprecated "withVisibilityFilter is deprecated and will be removed in a future release. Use the `FilterVisibility` template or Lifecycle specific templates (e.g. `Read`, `Create`, `Update`, etc.) instead." extern dec withVisibilityFilter( target: Model, filter: valueof VisibilityFilter, nameTemplate?: valueof string ); +/** + * A copy of the input model `M` with only the properties that match the given visibility filter. + * + * This transformation is recursive, so it will also apply the filter to any nested + * or referenced models that are the types of any properties in the `target`. + * + * If a `nameTemplate` is provided, newly-created type instances will be named according + * to the template. See the `@friendlyName` decorator for more information on the template + * syntax. The transformed type is provided as the argument to the template. + * + * @template M the model to apply the visibility filter to. + * @template Filter the visibility filter to apply to the properties of the target model. + * @template NameTemplate the name template to use when renaming new type instances. + * + * @example + * ```typespec + * model Dog { + * @visibility(CustomVisibility.A) + * id: int32; + * @removeVisibility(CustomVisibility.A) + * name: string; + * } + * + * enum CustomVisibility { + * A, + * B, + * } + * + * const customFilter: VisibilityFilter = #{ all: #[CustomVisibility.A] }; + * + * // This model will have the `id` property but not the `name` property, since `id` has the CustomVisibility.A visibility and `name` does not. + * model DogRead is FilterVisibility; + * ``` + */ +alias FilterVisibility< + M extends Model, + Filter extends valueof VisibilityFilter, + NameTemplate extends valueof string +> = applyVisibilityFilter(M, Filter, NameTemplate); + +#suppress "experimental-feature" +internal extern fn applyVisibilityFilter( + input: Model, + filter: valueof VisibilityFilter, + nameTemplate?: valueof string +): Model; + /** * Transforms the `target` model to include only properties that are visible during the * "Update" lifecycle phase. @@ -338,8 +386,12 @@ extern dec withVisibilityFilter( * } * ``` */ +#deprecated "withLifecycleUpdate is deprecated and will be removed in a future release. Use the `Update` template instead." extern dec withLifecycleUpdate(target: Model, nameTemplate?: valueof string); +#suppress "experimental-feature" +internal extern fn applyLifecycleUpdate(input: Model, nameTemplate?: valueof string): Model; + /** * A copy of the input model `T` with only the properties that are visible during the * "Create" resource lifecycle phase. @@ -366,12 +418,10 @@ extern dec withLifecycleUpdate(target: Model, nameTemplate?: valueof string); * model CreateDog is Create; * ``` */ -@doc("") -@friendlyName(NameTemplate, T) -@withVisibilityFilter(#{ all: #[Lifecycle.Create] }, NameTemplate) -model Create { - ...T; -} +alias Create< + T extends Model, + NameTemplate extends valueof string = "Create{name}" +> = applyVisibilityFilter(T, #{ all: #[Lifecycle.Create] }, NameTemplate); /** * A copy of the input model `T` with only the properties that are visible during the @@ -405,12 +455,10 @@ model Create { - ...T; -} +alias Read< + T extends Model, + NameTemplate extends valueof string = "Read{name}" +> = applyVisibilityFilter(T, #{ all: #[Lifecycle.Read] }, NameTemplate); /** * A copy of the input model `T` with only the properties that are visible during the @@ -445,12 +493,10 @@ model Read { - ...T; -} +alias Update< + T extends Model, + NameTemplate extends valueof string = "Update{name}" +> = applyLifecycleUpdate(T, NameTemplate); /** * A copy of the input model `T` with only the properties that are visible during the @@ -487,15 +533,10 @@ model Update { - ...T; -} +> = applyVisibilityFilter(T, #{ any: #[Lifecycle.Create, Lifecycle.Update] }, NameTemplate); /** * A copy of the input model `T` with only the properties that are visible during the @@ -531,12 +572,10 @@ model CreateOrUpdate< * model DeleteDog is Delete; * ``` */ -@doc("") -@friendlyName(NameTemplate, T) -@withVisibilityFilter(#{ all: #[Lifecycle.Delete] }, NameTemplate) -model Delete { - ...T; -} +alias Delete< + T extends Model, + NameTemplate extends valueof string = "Delete{name}" +> = applyVisibilityFilter(T, #{ all: #[Lifecycle.Delete] }, NameTemplate); /** * A copy of the input model `T` with only the properties that are visible during the @@ -580,9 +619,7 @@ model Delete { - ...T; -} +alias Query< + T extends Model, + NameTemplate extends valueof string = "Query{name}" +> = applyVisibilityFilter(T, #{ all: #[Lifecycle.Query] }, NameTemplate); diff --git a/packages/compiler/package.json b/packages/compiler/package.json index 91baaf76969..18e93514fd1 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/compiler", - "version": "1.10.0", + "version": "1.11.0", "description": "TypeSpec compiler and standard library", "author": "Microsoft Corporation", "license": "MIT", @@ -105,42 +105,42 @@ "lint:fix": "eslint . --fix" }, "dependencies": { - "@babel/code-frame": "~7.29.0", - "@inquirer/prompts": "^8.0.1", - "ajv": "~8.18.0", - "change-case": "~5.4.4", - "env-paths": "^4.0.0", - "globby": "~16.1.0", - "is-unicode-supported": "^2.1.0", - "mustache": "~4.2.0", - "picocolors": "~1.1.1", - "prettier": "~3.8.0", - "semver": "^7.7.1", - "tar": "^7.5.2", - "temporal-polyfill": "^0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.12", - "yaml": "~2.8.2", - "yargs": "~18.0.0" + "@babel/code-frame": "catalog:", + "@inquirer/prompts": "catalog:", + "ajv": "catalog:", + "change-case": "catalog:", + "env-paths": "catalog:", + "globby": "catalog:", + "is-unicode-supported": "catalog:", + "mustache": "catalog:", + "picocolors": "catalog:", + "prettier": "catalog:", + "semver": "catalog:", + "tar": "catalog:", + "temporal-polyfill": "catalog:", + "vscode-languageserver": "catalog:", + "vscode-languageserver-textdocument": "catalog:", + "yaml": "catalog:", + "yargs": "catalog:" }, "devDependencies": { - "@types/babel__code-frame": "~7.27.0", - "@types/mustache": "~4.2.5", - "@types/node": "~25.3.0", - "@types/semver": "^7.5.8", - "@types/yargs": "~17.0.33", + "@types/babel__code-frame": "catalog:", + "@types/mustache": "catalog:", + "@types/node": "catalog:", + "@types/semver": "catalog:", + "@types/yargs": "catalog:", "@typespec/internal-build-utils": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "grammarkdown": "~3.3.2", - "pathe": "^2.0.3", - "rimraf": "~6.1.3", - "source-map-support": "~0.5.21", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "grammarkdown": "catalog:", + "pathe": "catalog:", + "rimraf": "catalog:", + "source-map-support": "catalog:", "tmlanguage-generator": "workspace:^", - "typescript": "~5.9.3", - "vitest": "^4.0.18", - "vscode-oniguruma": "~2.0.1", - "vscode-textmate": "~9.3.0" + "typescript": "catalog:", + "vitest": "catalog:", + "vscode-oniguruma": "catalog:", + "vscode-textmate": "catalog:" } } diff --git a/packages/compiler/src/config/config-interpolation.ts b/packages/compiler/src/config/config-interpolation.ts index d96d8c4dd15..705cf2bce24 100644 --- a/packages/compiler/src/config/config-interpolation.ts +++ b/packages/compiler/src/config/config-interpolation.ts @@ -114,8 +114,13 @@ export function resolveValues>( resolvingValues.delete(keyPath); return value; } - const replaced = value.replace(VariableInterpolationRegex, (_, expression) => { - return (resolveExpression(expression) as string) ?? `{${expression}}`; + const replaced = value.replace(VariableInterpolationRegex, (match, expression) => { + const resolved = resolveExpression(expression); + return typeof resolved === "string" || + typeof resolved === "number" || + typeof resolved === "boolean" + ? String(resolved) + : match; }); resolvingValues.delete(keyPath); return replaced; diff --git a/packages/compiler/src/core/checker.ts b/packages/compiler/src/core/checker.ts index 0d46a8aa6f9..6d6b43daf1e 100644 --- a/packages/compiler/src/core/checker.ts +++ b/packages/compiler/src/core/checker.ts @@ -785,12 +785,13 @@ export function createChecker(program: Program, resolver: NameResolver): Checker if (entity.valueKind === "Function") return entity; return constraint ? inferScalarsFromConstraints(entity, constraint.type) : entity; } - // If a template parameter that can be a value is used in a template declaration then we allow it but we return null because we don't have an actual value. + // If a template parameter that can be a value is used where a value is expected, + // synthesize a template value placeholder even when the template parameter is mapped + // from an outer template declaration. if ( entity.kind === "TemplateParameter" && entity.constraint?.valueType && - entity.constraint.type === undefined && - ctx.mapper === undefined + entity.constraint.type === undefined ) { // We must also observe that the template parameter is used here. // ctx.observeTemplateParameter(entity); @@ -5140,6 +5141,23 @@ export function createChecker(program: Program, resolver: NameResolver): Checker } if (entity.entityKind === "Type") { + if ( + entity.kind === "TemplateParameter" && + entity.constraint?.valueType && + entity.constraint.type === undefined + ) { + return [ + createValue( + { + entityKind: "Value", + valueKind: "TemplateValue", + type: entity.constraint.valueType, + }, + entity.constraint.valueType, + ) as any, + [], + ]; + } return [ null, [ @@ -5231,12 +5249,20 @@ export function createChecker(program: Program, resolver: NameResolver): Checker diagnosticTarget?: DiagnosticTarget, ) { if (properties.has(newProp.name)) { + const modelName = newProp.model?.name; reportCheckerDiagnostic( - createDiagnostic({ - code: "duplicate-property", - format: { propName: newProp.name }, - target: diagnosticTarget ?? newProp, - }), + modelName + ? createDiagnostic({ + code: "duplicate-property", + messageId: "withModel", + format: { propName: newProp.name, modelName }, + target: diagnosticTarget ?? newProp, + }) + : createDiagnostic({ + code: "duplicate-property", + format: { propName: newProp.name }, + target: diagnosticTarget ?? newProp, + }), ); return; } diff --git a/packages/compiler/src/core/helpers/discriminator-utils.ts b/packages/compiler/src/core/helpers/discriminator-utils.ts index 03581d0c8e8..4a267b0b1e1 100644 --- a/packages/compiler/src/core/helpers/discriminator-utils.ts +++ b/packages/compiler/src/core/helpers/discriminator-utils.ts @@ -65,6 +65,7 @@ function getDiscriminatedUnionForUnion( createDiagnostic({ code: "invalid-discriminated-union-variant", messageId: "duplicateDefaultVariant", + format: { unionName: type.name ?? "(anonymous)" }, target: variant, }), ); diff --git a/packages/compiler/src/core/messages.ts b/packages/compiler/src/core/messages.ts index 71e73369579..8d8d83c277e 100644 --- a/packages/compiler/src/core/messages.ts +++ b/packages/compiler/src/core/messages.ts @@ -341,6 +341,7 @@ const diagnostics = { severity: "error", messages: { default: paramMessage`Model already has a property named ${"propName"}`, + withModel: paramMessage`Model ${"modelName"} already has a property named ${"propName"}`, }, }, "override-property-mismatch": { @@ -863,7 +864,7 @@ const diagnostics = { default: paramMessage`Union variant "${"name"}" must be a model type.`, noEnvelopeModel: paramMessage`Union variant "${"name"}" must be a model type when the union has envelope: none.`, discriminantMismatch: paramMessage`Variant "${"name"}" explicitly defines the discriminator property "${"discriminant"}" but the value "${"propertyValue"}" do not match the variant name "${"variantName"}".`, - duplicateDefaultVariant: `Discriminated union only allow a single default variant(Without a variant name).`, + duplicateDefaultVariant: paramMessage`Discriminated union ${"unionName"} only allow a single default variant(Without a variant name).`, noDiscriminant: paramMessage`Variant "${"name"}" type is missing the discriminant property "${"discriminant"}".`, wrongDiscriminantType: paramMessage`Variant "${"name"}" type's discriminant property "${"discriminant"}" must be a string literal or string enum member.`, }, diff --git a/packages/compiler/src/index.ts b/packages/compiler/src/index.ts index 1600e2aa043..99122b7b8d0 100644 --- a/packages/compiler/src/index.ts +++ b/packages/compiler/src/index.ts @@ -191,6 +191,7 @@ export { serializeValueAsJson, Service, ServiceDetails, + setMediaTypeHint, VisibilityProvider, type BytesKnownEncoding, type DateTimeKnownEncoding, @@ -232,7 +233,7 @@ export { export type { PackageJson } from "./types/package-json.js"; import { $decorators as intrinsicDecorators } from "./lib/intrinsic/tsp-index.js"; -import { $decorators as stdDecorators } from "./lib/tsp-index.js"; +import { $decorators as stdDecorators, $functions as stdFunctions } from "./lib/tsp-index.js"; /** @internal for Typespec compiler */ export const $decorators = { TypeSpec: { @@ -243,6 +244,13 @@ export const $decorators = { }, }; +/** @internal for Typespec compiler */ +export const $functions = { + TypeSpec: { + ...stdFunctions.TypeSpec, + }, +}; + export { applyCodeFix, applyCodeFixes, resolveCodeFix } from "./core/code-fixes.js"; export { createAddDecoratorCodeFix } from "./core/compiler-code-fixes/create-add-decorator/create-add-decorator.codefix.js"; export { diff --git a/packages/compiler/src/lib/decorators.ts b/packages/compiler/src/lib/decorators.ts index d4d20d1106a..3290a9dec74 100644 --- a/packages/compiler/src/lib/decorators.ts +++ b/packages/compiler/src/lib/decorators.ts @@ -435,7 +435,7 @@ export function isErrorModel(program: Program, target: Type): boolean { // -- @mediaTypeHint decorator -------------- -const [_getMediaTypeHint, setMediaTypeHint] = useStateMap( +const [_getMediaTypeHint, _setMediaTypeHint] = useStateMap( createStateSymbol("mediaTypeHint"), ); @@ -461,9 +461,40 @@ export const $mediaTypeHint: MediaTypeHintDecorator = ( }); } - setMediaTypeHint(context.program, target, mediaType); + _setMediaTypeHint(context.program, target, mediaType); }; +/** + * Sets the default media type hint for the given target type. + * + * This value is a hint _ONLY_. Emitters are not required to use it, but may use it to get the default media type + * associated with a TypeSpec type. + * + * If a type already has a default media type hint set, this function will override it with the new value. + * + * WARNING: this function _will throw an error_ if the provided media type string is not recognized as a valid + * MIME type. + * + * @param program - the Program containing the target + * @param target - the target to set the MIME type hint for + * @param mediaType - the default media type hint to set for the target + * @throws if the provided media type string is not recognized as a valid MIME type + */ +export function setMediaTypeHint( + program: Program, + target: MediaTypeHintable, + mediaType: string, +): void { + const mimeTypeObj = parseMimeType(mediaType); + + compilerAssert( + mimeTypeObj !== undefined, + `Invalid MIME type '${mediaType}' provided to setMediaTypeHint`, + ); + + _setMediaTypeHint(program, target, mediaType); +} + /** * Get the default media type hint for the given target type. * diff --git a/packages/compiler/src/lib/tsp-index.ts b/packages/compiler/src/lib/tsp-index.ts index df7645e8335..255dc9793b1 100644 --- a/packages/compiler/src/lib/tsp-index.ts +++ b/packages/compiler/src/lib/tsp-index.ts @@ -1,4 +1,4 @@ -import { TypeSpecDecorators } from "../../generated-defs/TypeSpec.js"; +import { TypeSpecDecorators, TypeSpecFunctions } from "../../generated-defs/TypeSpec.js"; import { $discriminator, $doc, @@ -59,8 +59,18 @@ import { $withUpdateableProperties, $withVisibility, $withVisibilityFilter, + applyLifecycleUpdate, + applyVisibilityFilter, } from "./visibility.js"; +/** @internal */ +export const $functions = { + TypeSpec: { + applyVisibilityFilter, + applyLifecycleUpdate, + } satisfies TypeSpecFunctions, +}; + /** @internal */ export const $decorators = { TypeSpec: { diff --git a/packages/compiler/src/lib/visibility.ts b/packages/compiler/src/lib/visibility.ts index 1456e6402ae..dd8965ab487 100644 --- a/packages/compiler/src/lib/visibility.ts +++ b/packages/compiler/src/lib/visibility.ts @@ -405,12 +405,13 @@ interface VisibilityFilterMutatorCacheByNameTemplate { lifecycleUpdate?: Mutator; } -export const $withVisibilityFilter: WithVisibilityFilterDecorator = ( - context: DecoratorContext, - target: Model, +/** @internal */ +export function applyVisibilityFilter( + context: { program: Program }, + input: Model, _filter: GeneratedVisibilityFilter, nameTemplate?: string, -) => { +): Model { const filter = VisibilityFilter.fromDecoratorArgument(_filter); const mutatorCache = ((context.program as VisibilityFilterMutatorCache)[ @@ -436,27 +437,45 @@ export const $withVisibilityFilter: WithVisibilityFilterDecorator = ( if (!mutator) { mutator = createVisibilityFilterMutator(filter, { decoratorFn: $withVisibilityFilter, + decoratorName: "@withVisibilityFilter", nameTemplate, }); mutatorCacheByVisibilityFilter.set(vfKey, mutator); } - setAlwaysMutate(context.program, target); + setAlwaysMutate(context.program, input); - const { type } = cachedMutateSubgraph(context.program, mutator, target); + const { type } = cachedMutateSubgraph(context.program, mutator, input); - setAlwaysMutate(context.program, target, false); + setAlwaysMutate(context.program, input, false); - target.properties = (type as Model).properties; -}; + compilerAssert( + type.kind === "Model", + "Expected visibility filter mutator to return a Model type.", + ); -// -- @withLifecycleUpdate decorator ---------------------- + return type; +} -export const $withLifecycleUpdate: WithLifecycleUpdateDecorator = ( +export const $withVisibilityFilter: WithVisibilityFilterDecorator = ( context: DecoratorContext, target: Model, + _filter: GeneratedVisibilityFilter, nameTemplate?: string, ) => { + const transformed = applyVisibilityFilter(context, target, _filter, nameTemplate); + + target.properties = transformed.properties; +}; + +// -- @withLifecycleUpdate decorator ---------------------- + +/** @internal */ +export function applyLifecycleUpdate( + context: { program: Program }, + input: Model, + nameTemplate?: string, +): Model { const mutatorCache = ((context.program as VisibilityFilterMutatorCache)[ VISIBILITY_FILTER_MUTATOR_CACHE ] ??= {}); @@ -487,19 +506,35 @@ export const $withLifecycleUpdate: WithLifecycleUpdateDecorator = ( mutator = createVisibilityFilterMutator(lifecycleUpdate, { recur: createOrUpdateMutator, decoratorFn: $withLifecycleUpdate, + decoratorName: "@withLifecycleUpdate", nameTemplate, }); mutatorCacheByNameTemplate.lifecycleUpdate = mutator; } - setAlwaysMutate(context.program, target); + setAlwaysMutate(context.program, input); - const { type } = cachedMutateSubgraph(context.program, mutator, target); + const { type } = cachedMutateSubgraph(context.program, mutator, input); - setAlwaysMutate(context.program, target, false); + setAlwaysMutate(context.program, input, false); - target.properties = (type as Model).properties; + compilerAssert( + type.kind === "Model", + "Expected lifecycle update mutator to return a Model type.", + ); + + return type; +} + +export const $withLifecycleUpdate: WithLifecycleUpdateDecorator = ( + context: DecoratorContext, + target: Model, + nameTemplate?: string, +) => { + const transformed = applyLifecycleUpdate(context, target, nameTemplate); + + target.properties = transformed.properties; }; const VISIBILITY_FILTER_MUTATOR_RESULT = Symbol.for("TypeSpec.Core.visibilityFilterMutatorResult"); @@ -544,6 +579,13 @@ interface CreateVisibilityFilterMutatorOptions { */ decoratorFn?: DecoratorFunction; + /** + * Optionally, the fully-qualified TypeSpec decorator name corresponding to `decoratorFn`. + * + * This allows robust matching across module-boundary function identity differences. + */ + decoratorName?: `@${string}`; + /** * Optionally, the name template to apply in the mutator. * @@ -564,6 +606,19 @@ function createVisibilityFilterMutator( options: CreateVisibilityFilterMutatorOptions = {}, ): Mutator { const visibilityClasses = VisibilityFilter.getVisibilityClasses(filter); + const isTypeSpecDecorator = ( + application: DecoratorApplication, + decoratorName: `@${string}`, + ): boolean => + application.definition?.name === decoratorName && + application.definition.namespace.name === "TypeSpec"; + + const matchesDecorator = ( + application: DecoratorApplication, + decoratorName: `@${string}`, + decoratorFn: DecoratorFunction, + ): boolean => + isTypeSpecDecorator(application, decoratorName) || application.decorator === decoratorFn; const mpMutator: Mutator = { name: "VisibilityFilterProperty", ModelProperty: { @@ -577,8 +632,10 @@ function createVisibilityFilterMutator( const decorators: DecoratorApplication[] = []; for (const decorator of prop.decorators) { - const decFn = decorator.decorator; - if (decFn === $visibility || decFn === $removeVisibility) { + if ( + matchesDecorator(decorator, "@visibility", $visibility) || + matchesDecorator(decorator, "@removeVisibility", $removeVisibility) + ) { const nextArgs = decorator.args.filter((arg) => { if (arg.value.entityKind !== "Value") return false; @@ -597,7 +654,7 @@ function createVisibilityFilterMutator( args: nextArgs, }); } - } else if (decFn !== $invisible) { + } else if (!matchesDecorator(decorator, "@invisible", $invisible)) { decorators.push(decorator); } } @@ -687,12 +744,18 @@ function createVisibilityFilterMutator( clone.properties.set(key, mutated.type as ModelProperty); - modified ||= (mutated.type as ModelProperty).type !== prop.type; + modified ||= mutated.type !== prop; } } if (options.decoratorFn) { - clone.decorators = clone.decorators.filter((d) => d.decorator !== options.decoratorFn); + clone.decorators = clone.decorators.filter( + (d) => + !( + d.decorator === options.decoratorFn || + (options.decoratorName && isTypeSpecDecorator(d, options.decoratorName)) + ), + ); modified ||= clone.decorators.length !== model.decorators.length; } diff --git a/packages/compiler/src/manifest.ts b/packages/compiler/src/manifest.ts index be61dd7655f..f53cc5778bc 100644 --- a/packages/compiler/src/manifest.ts +++ b/packages/compiler/src/manifest.ts @@ -4,7 +4,9 @@ try { // @ts-ignore manifest = (await import("../manifest.js")).default; } catch { - const name = "../dist/manifest.js"; + // Construct path dynamically so bundlers cannot statically resolve this import. + // This fallback is only used when running directly from source during development. + const name = ["../dist", "manifest.js"].join("/"); manifest = (await import(/* @vite-ignore */ /* webpackIgnore: true */ name)).default; } diff --git a/packages/compiler/src/server/completion.ts b/packages/compiler/src/server/completion.ts index 03a8278e679..a4c3cf381d2 100644 --- a/packages/compiler/src/server/completion.ts +++ b/packages/compiler/src/server/completion.ts @@ -10,6 +10,7 @@ import { import { getSymNode } from "../core/binder.js"; import { getDeprecationDetails } from "../core/deprecation.js"; import { compilerAssert, getSourceLocation } from "../core/diagnostics.js"; +import { getLocationContext } from "../core/helpers/location-context.js"; import { printIdentifier } from "../core/helpers/syntax-utils.js"; import { getFirstAncestor, positionInRange } from "../core/parser.js"; import { @@ -27,6 +28,7 @@ import { NodeFlags, PositionDetail, StringLiteralNode, + Sym, SymbolFlags, SyntaxKind, Type, @@ -411,7 +413,11 @@ async function addIdentifierCompletion( if (result.size === 0) { return; } + const sourceLocation = getLocationContext(program, node); for (const [key, { sym, label, suffix }] of result) { + if (!canAccessCompletionSymbol(sym, sourceLocation)) { + continue; + } let kind: CompletionItemKind; let deprecated = false; const symNode = getSymNode(sym); @@ -478,6 +484,27 @@ async function addIdentifierCompletion( if (node.parent?.kind === SyntaxKind.TypeReference) { addKeywordCompletion("identifier", completions); } + + function canAccessCompletionSymbol( + sym: Sym, + sourceLocation: ReturnType, + ) { + const isInternalDeclaration = + (sym.flags & (SymbolFlags.Internal | SymbolFlags.Declaration)) === + (SymbolFlags.Internal | SymbolFlags.Declaration); + + if (!isInternalDeclaration) return true; + if (sourceLocation.type === "synthetic" || sourceLocation.type === "compiler") return true; + + return sym.declarations.some((decl) => { + const declLocation = getLocationContext(program, decl); + + if (declLocation.type !== sourceLocation.type) return false; + if (declLocation.type === "project") return true; + + return declLocation === sourceLocation; + }); + } } const directiveNames = ["suppress", "deprecated"]; diff --git a/packages/compiler/templates/scaffolding.json b/packages/compiler/templates/scaffolding.json index 2e670e2f43f..c520123fa79 100644 --- a/packages/compiler/templates/scaffolding.json +++ b/packages/compiler/templates/scaffolding.json @@ -2,7 +2,7 @@ "rest": { "title": "Generic REST API", "description": "Create a project representing a generic REST API service.", - "compilerVersion": "1.10.0", + "compilerVersion": "1.11.0", "libraries": [ "@typespec/http", "@typespec/rest", @@ -70,7 +70,7 @@ "target": "library", "title": "TypeSpec library", "description": "Build your own TypeSpec library with custom types, decorators or linters.", - "compilerVersion": "1.10.0", + "compilerVersion": "1.11.0", "libraries": [], "files": [ { @@ -147,7 +147,7 @@ "target": "library", "title": "TypeSpec emitter", "description": "Create a new package that emits artifacts from TypeSpec.", - "compilerVersion": "1.10.0", + "compilerVersion": "1.11.0", "libraries": [], "files": [ { diff --git a/packages/compiler/test/checker/check-parse-errors.test.ts b/packages/compiler/test/checker/check-parse-errors.test.ts index 240e7d5dddf..519e90685c0 100644 --- a/packages/compiler/test/checker/check-parse-errors.test.ts +++ b/packages/compiler/test/checker/check-parse-errors.test.ts @@ -13,7 +13,7 @@ describe("compiler: semantic checks on source with parse errors", () => { { message: /Unknown identifier Q/ }, { message: /Unknown identifier B/ }, { message: /Unknown identifier C/ }, - { message: /Model already has a property named a/ }, + { message: /Model M already has a property named a/ }, ]); }); }); diff --git a/packages/compiler/test/checker/functions.test.ts b/packages/compiler/test/checker/functions.test.ts index c796d24dae6..7693cd49746 100644 --- a/packages/compiler/test/checker/functions.test.ts +++ b/packages/compiler/test/checker/functions.test.ts @@ -1687,6 +1687,17 @@ describe("function calls within template declarations", () => { strictEqual(receivedTypes.length, 0); }); + it("allows passing value-constrained template parameters to valueof function parameters", async () => { + const diagnostics = await tester.diagnose(` + extern fn f(T: valueof uint32): valueof uint32; + + alias Test = f(V); + `); + + expectFunctionDiagnosticsEmpty(diagnostics); + strictEqual(receivedTypes.length, 0); + }); + it("does not call a function in a decorator argument of a templated operation declaration", async () => { const diagnostics = await tester.diagnose(` extern fn f(T: unknown): unknown; diff --git a/packages/compiler/test/checker/model.test.ts b/packages/compiler/test/checker/model.test.ts index b7ad0fd3cf6..63135b43c53 100644 --- a/packages/compiler/test/checker/model.test.ts +++ b/packages/compiler/test/checker/model.test.ts @@ -42,7 +42,7 @@ describe("compiler: models", () => { model A { x: int32; x: int32; } `); strictEqual(diagnostics.length, 1); - match(diagnostics[0].message, /Model already has a property/); + match(diagnostics[0].message, /Model A already has a property/); }); it("emit single error when there is an invalid ref in a templated type", async () => { @@ -134,6 +134,19 @@ describe("compiler: models", () => { strictEqual(foo.defaultValue?.valueKind, "StringValue"); }); + it(`set it with valid passthrough template constraint`, async () => { + const diagnostics = await Tester.diagnose(` + model X { + i: uint32 = V; + } + + model Y { + x: X; + } + `); + expectDiagnosticEmpty(diagnostics); + }); + it(`error if constraint is not compatible with property type`, async () => { const diagnostics = await Tester.diagnose(` model A { foo?: string = T } @@ -697,7 +710,7 @@ describe("compiler: models", () => { model B is A { x: int32 }; `); strictEqual(diagnostics.length, 1); - match(diagnostics[0].message, /Model already has a property/); + match(diagnostics[0].message, /Model B already has a property/); }); it("emit error when is non model or array", async () => { diff --git a/packages/compiler/test/config/config-interpolation.test.ts b/packages/compiler/test/config/config-interpolation.test.ts index 6a639444ce7..f8c5d711252 100644 --- a/packages/compiler/test/config/config-interpolation.test.ts +++ b/packages/compiler/test/config/config-interpolation.test.ts @@ -133,6 +133,32 @@ describe("compiler: config interpolation", () => { }, ]); }); + + it("does not interpolate variables that resolve to non-string values", () => { + const [resolved, diagnostics] = resolveValues({ + "output-file": "openapi.{file-type}", + "file-type": ["yaml", "json"] as any, + }); + expectDiagnosticEmpty(diagnostics); + deepStrictEqual(resolved, { + "output-file": "openapi.{file-type}", + "file-type": ["yaml", "json"], + }); + }); + + it("interpolates number and boolean values", () => { + const [resolved, diagnostics] = resolveValues({ + path: "v{version}/debug-{debug}", + version: 3 as any, + debug: true as any, + }); + expectDiagnosticEmpty(diagnostics); + deepStrictEqual(resolved, { + path: "v3/debug-true", + version: 3, + debug: true, + }); + }); }); describe("expandConfigVariables", () => { diff --git a/packages/compiler/test/decorators/decorators.test.ts b/packages/compiler/test/decorators/decorators.test.ts index 825fc953b02..5a1ec399d76 100644 --- a/packages/compiler/test/decorators/decorators.test.ts +++ b/packages/compiler/test/decorators/decorators.test.ts @@ -16,6 +16,7 @@ import { getReturnsDoc, isErrorModel, resolveEncodedName, + setMediaTypeHint, } from "../../src/lib/decorators.js"; import { expectDiagnosticEmpty, expectDiagnostics, t } from "../../src/testing/index.js"; import { Tester } from "../tester.js"; @@ -1158,7 +1159,7 @@ describe("compiler: built-in decorators", () => { expectDiagnostics(diagnostics, { code: "invalid-discriminated-union-variant", - message: `Discriminated union only allow a single default variant(Without a variant name).`, + message: `Discriminated union Foo only allow a single default variant(Without a variant name).`, }); }); @@ -1427,5 +1428,27 @@ describe("compiler: built-in decorators", () => { strictEqual(getMediaTypeHint(program, A), undefined); strictEqual(getMediaTypeHint(program, B), "text/plain"); }); + + it("can set media type hint programmatically", async () => { + const { A, program } = await Tester.compile(t.code` + @test + model ${t.model("A")} {} + `); + + strictEqual(getMediaTypeHint(program, A), undefined); + setMediaTypeHint(program, A, "application/merge-patch+json"); + strictEqual(getMediaTypeHint(program, A), "application/merge-patch+json"); + }); + + it("validates media type when set programmatically", async () => { + const { A, program } = await Tester.compile(t.code` + @test + model ${t.model("A")} {} + `); + + expect(() => setMediaTypeHint(program, A, "not-a-mime-type")).toThrow( + "Invalid MIME type 'not-a-mime-type' provided to setMediaTypeHint", + ); + }); }); }); diff --git a/packages/compiler/test/e2e/cli/cli.e2e.ts b/packages/compiler/test/e2e/cli/cli.e2e.ts index 528aa8b60af..3b63235b4e3 100644 --- a/packages/compiler/test/e2e/cli/cli.e2e.ts +++ b/packages/compiler/test/e2e/cli/cli.e2e.ts @@ -16,7 +16,10 @@ interface ExecCliOptions { async function execCli(args: string[], { cwd }: ExecCliOptions) { const node = process.platform === "win32" ? "node.exe" : "node"; - return execAsync(node, [resolvePath(pkgRoot, "entrypoints/cli.js"), ...args], { cwd }); + return execAsync(node, [resolvePath(pkgRoot, "entrypoints/cli.js"), ...args], { + cwd, + env: { ...process.env, NO_COLOR: "1" }, + }); } async function execCliSuccess(args: string[], { cwd }: ExecCliOptions) { const result = await execCli(args, { cwd }); diff --git a/packages/compiler/test/server/completion.test.ts b/packages/compiler/test/server/completion.test.ts index d12643b8c3b..26f68319109 100644 --- a/packages/compiler/test/server/completion.test.ts +++ b/packages/compiler/test/server/completion.test.ts @@ -457,6 +457,60 @@ describe("identifiers", () => { ); }); + it("completes internal functions in the same project", async () => { + const completions = await complete(` + internal fn inScopeInternal(): valueof string; + fn inScopePublic(): valueof string; + + const x = inS┆(); + `); + + deepStrictEqual( + ["inScopeInternal", "inScopePublic"], + completions.items + .filter((c) => c.label === "inScopeInternal" || c.label === "inScopePublic") + .map((c) => c.label) + .sort(), + ); + }); + + it("does not complete internal functions from another package", async () => { + const completions = await complete( + ` + import "@typespec/internal-lib"; + using InternalLib; + + const x = libFn┆(); + `, + undefined, + { + "test/package.json": JSON.stringify({ + dependencies: { + "@typespec/internal-lib": "~0.1.0", + }, + }), + "test/node_modules/@typespec/internal-lib/package.json": JSON.stringify({ + name: "@typespec/internal-lib", + version: "0.1.0", + tspMain: "./main.tsp", + }), + "test/node_modules/@typespec/internal-lib/main.tsp": ` + namespace InternalLib; + internal fn libFnInternal(): valueof string; + fn libFnPublic(): valueof string; + `, + }, + ); + + deepStrictEqual( + ["libFnPublic"], + completions.items + .filter((c) => c.label === "libFnInternal" || c.label === "libFnPublic") + .map((c) => c.label) + .sort(), + ); + }); + it("completes decorators on models", async () => { const completions = await complete( ` diff --git a/packages/compiler/test/visibility.test.ts b/packages/compiler/test/visibility.test.ts index f127b6b13b8..b4c6911a06c 100644 --- a/packages/compiler/test/visibility.test.ts +++ b/packages/compiler/test/visibility.test.ts @@ -4,12 +4,12 @@ import { ok, strictEqual } from "assert"; import { describe, it } from "vitest"; import { VisibilityFilter } from "../src/core/visibility/core.js"; +import type { EnumMember, EnumValue, FunctionContext } from "../src/index.js"; import { $visibility, addVisibilityModifiers, clearVisibilityModifiersForClass, EmptyVisibilityProvider, - getFriendlyName, getLifecycleVisibilityEnum, getParameterVisibilityFilter, getVisibilityForClass, @@ -23,6 +23,7 @@ import { sealVisibilityModifiers, sealVisibilityModifiersForProgram, } from "../src/index.js"; +import { applyLifecycleUpdate, applyVisibilityFilter } from "../src/lib/visibility.js"; import { expectDiagnosticEmpty, expectDiagnostics, t } from "../src/testing/index.js"; import { $ } from "../src/typekit/index.js"; import { Tester } from "./tester.js"; @@ -35,6 +36,21 @@ function assertSetsEqual(a: Set, b: Set): void { } } +function enumMemberToValue(member: EnumMember): EnumValue { + return { + entityKind: "Value", + valueKind: "EnumValue", + value: member, + type: member.enum, + }; +} + +function anyFilter(...members: EnumMember[]): Parameters[2] { + return { + any: members.map((m) => enumMemberToValue(m)), + }; +} + describe("compiler: visibility core", () => { it("default visibility", async () => { const { name, Dummy, program } = await Tester.compile(t.code` @@ -797,6 +813,74 @@ describe("compiler: visibility core", () => { validateUpdateTransform(props, Result, getProperties); }); + it("correctly applies Update transform via applyLifecycleUpdate", async () => { + const Lifecycle = { + Read: "Lifecycle.Read", + Create: "Lifecycle.Create", + Update: "Lifecycle.Update", + }; + + const { Example, program } = await Tester.compile(t.code` + model ${t.model("Example")} { + @visibility(${Lifecycle.Read}) + r: string; + + cru: string; + + @visibility(${Lifecycle.Create}, ${Lifecycle.Read}) + cr: string; + + @visibility(${Lifecycle.Create}, ${Lifecycle.Update}) + cu: string; + + @visibility(${Lifecycle.Create}) + c: string; + + @visibility(${Lifecycle.Update}, ${Lifecycle.Read}) + ru: string; + + @visibility(${Lifecycle.Update}) + u: string; + + @invisible(Lifecycle) + invisible: string; + + nested: Nested; + } + + model Nested { + @visibility(${Lifecycle.Read}) + r: string; + + cru: string; + + @visibility(${Lifecycle.Create}, ${Lifecycle.Read}) + cr: string; + + @visibility(${Lifecycle.Create}, ${Lifecycle.Update}) + cu: string; + + @visibility(${Lifecycle.Create}) + c: string; + + @visibility(${Lifecycle.Update}, ${Lifecycle.Read}) + ru: string; + + @visibility(${Lifecycle.Update}) + u: string; + + @invisible(Lifecycle) + invisible: string; + }; + `); + + const fnContext = { program } satisfies Pick; + const Result = applyLifecycleUpdate(fnContext, Example, "Update{name}"); + const props = getProperties(Result); + + validateUpdateTransform(props, Result, getProperties); + }); + it("correctly applies CreateOrUpdate transform", async () => { const Result = await compileWithTransform("CreateOrUpdate"); const props = getProperties(Result); @@ -975,11 +1059,13 @@ describe("compiler: visibility core", () => { foo_a: string; } + #suppress "deprecated" @withVisibilityFilter(#{ any: #[Example.A] }, "{name}A") model ${t.model("DataA")} { ...Data } + #suppress "deprecated" @withVisibilityFilter(#{ any: #[Example.B] }, "{name}B") model ${t.model("DataB")} { ...Data @@ -1012,8 +1098,173 @@ describe("compiler: visibility core", () => { ok(!FooB.properties.has("foo_a")); }); + it("deeply renames types using the name template via applyVisibilityFilter", async () => { + const { Data, Example, program } = await Tester.compile(t.code` + enum ${t.enum("Example")} { + A, + B, + } + + model ${t.model("Data")} { + @visibility(Example.A) + data_a: Foo; + + @visibility(Example.B) + data_b: Foo; + } + + model Foo { + @visibility(Example.B) + foo_b: string; + @visibility(Example.A) + foo_a: string; + } + `); + + const fnContext = { program } satisfies Pick; + const DataA = applyVisibilityFilter( + fnContext, + Data, + anyFilter(Example.members.get("A")!), + "{name}A", + ); + const DataB = applyVisibilityFilter( + fnContext, + Data, + anyFilter(Example.members.get("B")!), + "{name}B", + ); + + ok(DataA); + ok(DataB); + + ok(DataA.properties.has("data_a")); + ok(!DataA.properties.has("data_b")); + ok(DataB.properties.has("data_b")); + ok(!DataB.properties.has("data_a")); + + const dataA = DataA.properties.get("data_a")!; + const dataB = DataB.properties.get("data_b")!; + + strictEqual(dataA.type.kind, "Model"); + strictEqual(dataB.type.kind, "Model"); + + const FooA = dataA.type as Model; + const FooB = dataB.type as Model; + + strictEqual(FooA.name, "FooA"); + strictEqual(FooB.name, "FooB"); + + ok(FooA.properties.has("foo_a")); + ok(!FooA.properties.has("foo_b")); + ok(FooB.properties.has("foo_b")); + ok(!FooB.properties.has("foo_a")); + }); + + it("deeply renames types using FilterVisibility", async () => { + const { DataA, DataB } = await Tester.compile(t.code` + enum Example { + A, + B, + } + + model Data { + @visibility(Example.A) + data_a: Foo; + + @visibility(Example.B) + data_b: Foo; + } + + model Foo { + @visibility(Example.B) + foo_b: string; + @visibility(Example.A) + foo_a: string; + } + + @test model ${t.model("DataA")} is FilterVisibility; + @test model ${t.model("DataB")} is FilterVisibility; + `); + + ok(DataA); + ok(DataB); + + ok(DataA.properties.has("data_a")); + ok(!DataA.properties.has("data_b")); + ok(DataB.properties.has("data_b")); + ok(!DataB.properties.has("data_a")); + + const dataA = DataA.properties.get("data_a")!; + const dataB = DataB.properties.get("data_b")!; + + strictEqual(dataA.type.kind, "Model"); + strictEqual(dataB.type.kind, "Model"); + + const FooA = dataA.type as Model; + const FooB = dataB.type as Model; + + strictEqual(FooA.name, "FooA"); + strictEqual(FooB.name, "FooB"); + + ok(FooA.properties.has("foo_a")); + ok(!FooA.properties.has("foo_b")); + ok(FooB.properties.has("foo_b")); + ok(!FooB.properties.has("foo_a")); + }); + + it("correctly transforms arrays and records via FilterVisibility", async () => { + const { Result, program } = await Tester.compile(t.code` + model A { + @visibility(Lifecycle.Read) + a: string; + + @visibility(Lifecycle.Create) + invisible: string; + } + + model Input { + array: A[]; + record: Record; + } + + model ${t.model("Result")} is FilterVisibility; + `); + + ok(Result); + + const array = Result.properties.get("array"); + const record = Result.properties.get("record"); + + ok(array); + ok(record); + + const arrayType = array.type; + const recordType = record.type; + + strictEqual(arrayType.kind, "Model"); + strictEqual(recordType.kind, "Model"); + + ok($(program).array.is(arrayType)); + ok($(program).record.is(recordType)); + + const arrayA = (arrayType as Model).indexer!.value as Model; + const recordA = (recordType as Model).indexer!.value as Model; + + strictEqual(arrayA.kind, "Model"); + strictEqual(recordA.kind, "Model"); + + strictEqual(arrayA.name, "ATransform"); + strictEqual(recordA.name, "ATransform"); + + strictEqual(arrayA, recordA); + + ok(arrayA.properties.has("a")); + ok(!arrayA.properties.has("invisible")); + }); + it("correctly caches and deduplicates transformed instances", async () => { - const { Out, program } = await Tester.compile(t.code` + const { Out } = await Tester.compile(t.code` model A { @visibility(Lifecycle.Read) a: string; @@ -1062,8 +1313,8 @@ describe("compiler: visibility core", () => { const A = a.type as Model; const B = b.type as Model; - ok(getFriendlyName(program, A) === "ReadA"); - ok(getFriendlyName(program, B) === "ReadB"); + ok(A.name === "ReadA"); + ok(B.name === "ReadB"); ok(A.properties.has("a")); ok(!A.properties.has("invisible")); @@ -1133,6 +1384,7 @@ describe("compiler: visibility core", () => { invisible: string; } + #suppress "deprecated" @withVisibilityFilter(#{ any: #[Lifecycle.Read] }, "{name}Transform") model ${t.model("Result")} { array: A[]; @@ -1172,6 +1424,63 @@ describe("compiler: visibility core", () => { ok(!arrayA.properties.has("invisible")); }); + it("correctly transforms arrays and records via applyVisibilityFilter", async () => { + const { Result, program } = await Tester.compile(t.code` + model A { + @visibility(Lifecycle.Read) + a: string; + + @visibility(Lifecycle.Create) + invisible: string; + } + + model ${t.model("Result")} { + array: A[]; + record: Record; + } + `); + + const fnContext = { program } satisfies Pick; + const lifecycle = getLifecycleVisibilityEnum(program); + const transformed = applyVisibilityFilter( + fnContext, + Result, + anyFilter(lifecycle.members.get("Read")!), + "{name}Transform", + ); + + ok(transformed); + + const array = transformed.properties.get("array"); + const record = transformed.properties.get("record"); + + ok(array); + ok(record); + + const arrayType = array.type; + const recordType = record.type; + + strictEqual(arrayType.kind, "Model"); + strictEqual(recordType.kind, "Model"); + + ok($(program).array.is(arrayType)); + ok($(program).record.is(recordType)); + + const arrayA = (arrayType as Model).indexer!.value as Model; + const recordA = (recordType as Model).indexer!.value as Model; + + strictEqual(arrayA.kind, "Model"); + strictEqual(recordA.kind, "Model"); + + strictEqual(arrayA.name, "ATransform"); + strictEqual(recordA.name, "ATransform"); + + strictEqual(arrayA, recordA); + + ok(arrayA.properties.has("a")); + ok(!arrayA.properties.has("invisible")); + }); + it("correctly transforms 'model is' declarations of arrays and records", async () => { const { Result, program } = await Tester.compile(t.code` model A { @@ -1186,6 +1495,7 @@ describe("compiler: visibility core", () => { model C is Record; + #suppress "deprecated" @withVisibilityFilter(#{ any: #[Lifecycle.Read] }, "{name}Transform") model ${t.model("Result")} { arr: B; @@ -1225,6 +1535,67 @@ describe("compiler: visibility core", () => { ok(!arrA.properties.has("invisible")); }); + it("correctly transforms 'model is' declarations of arrays and records via applyVisibilityFilter", async () => { + const { Result, program } = await Tester.compile(t.code` + model A { + @visibility(Lifecycle.Read) + a: string; + + @visibility(Lifecycle.Create) + invisible: string; + } + + model B is Array; + + model C is Record; + + model ${t.model("Result")} { + arr: B; + rec: C; + } + `); + + const fnContext = { program } satisfies Pick; + const lifecycle = getLifecycleVisibilityEnum(program); + const transformed = applyVisibilityFilter( + fnContext, + Result, + anyFilter(lifecycle.members.get("Read")!), + "{name}Transform", + ); + + ok(transformed); + + const arr = transformed.properties.get("arr"); + const rec = transformed.properties.get("rec"); + + ok(arr); + ok(rec); + + const arrType = arr.type; + const recType = rec.type; + + strictEqual(arrType.kind, "Model"); + strictEqual(recType.kind, "Model"); + + ok($(program).array.is(arrType)); + ok($(program).record.is(recType)); + + strictEqual(arrType.name, "BTransform"); + strictEqual(recType.name, "CTransform"); + + const arrA = (arrType as Model).indexer!.value as Model; + const recA = (recType as Model).indexer!.value as Model; + + strictEqual(arrA, recA); + + strictEqual(arrA.kind, "Model"); + strictEqual(arrA.name, "ATransform"); + + ok(arrA.properties.has("a")); + ok(!arrA.properties.has("invisible")); + }); + it("does not duplicate encodedName metadata", async () => { const diagnostics = await Tester.diagnose(` model SomeModel { diff --git a/packages/emitter-framework/package.json b/packages/emitter-framework/package.json index 9424cf39fd1..0644a13f341 100644 --- a/packages/emitter-framework/package.json +++ b/packages/emitter-framework/package.json @@ -62,29 +62,29 @@ "license": "MIT", "description": "", "peerDependencies": { - "@alloy-js/core": "^0.22.0", - "@alloy-js/csharp": "^0.22.0", - "@alloy-js/python": "^0.3.0", - "@alloy-js/typescript": "^0.22.0", + "@alloy-js/core": "catalog:", + "@alloy-js/csharp": "catalog:", + "@alloy-js/python": "catalog:", + "@alloy-js/typescript": "catalog:", "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@alloy-js/cli": "^0.22.0", - "@alloy-js/core": "^0.22.0", - "@alloy-js/python": "^0.3.0", - "@alloy-js/rollup-plugin": "^0.1.0", - "@alloy-js/typescript": "^0.22.0", + "@alloy-js/cli": "catalog:", + "@alloy-js/core": "catalog:", + "@alloy-js/python": "catalog:", + "@alloy-js/rollup-plugin": "catalog:", + "@alloy-js/typescript": "catalog:", "@typespec/compiler": "workspace:^", - "concurrently": "^9.1.2", - "pathe": "^2.0.3", - "prettier": "~3.8.0", - "tree-sitter-c-sharp": "^0.23.0", - "tree-sitter-java": "^0.23.2", - "tree-sitter-javascript": "^0.25.0", - "tree-sitter-python": "^0.25.0", - "tree-sitter-typescript": "^0.23.0", - "typescript": "~5.9.3", - "vitest": "^4.0.18", - "web-tree-sitter": "^0.26.3" + "concurrently": "catalog:", + "pathe": "catalog:", + "prettier": "catalog:", + "tree-sitter-c-sharp": "catalog:", + "tree-sitter-java": "catalog:", + "tree-sitter-javascript": "catalog:", + "tree-sitter-python": "catalog:", + "tree-sitter-typescript": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:", + "web-tree-sitter": "catalog:" } } diff --git a/packages/eslint-plugin-typespec/CHANGELOG.md b/packages/eslint-plugin-typespec/CHANGELOG.md index ccdba2c947d..3add11b0d1a 100644 --- a/packages/eslint-plugin-typespec/CHANGELOG.md +++ b/packages/eslint-plugin-typespec/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/eslint-plugin +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/eslint-plugin-typespec/package.json b/packages/eslint-plugin-typespec/package.json index 694afb61b69..7fc4f192084 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.80.0", + "version": "0.81.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", @@ -37,22 +37,22 @@ "!dist/test/**" ], "peerDependencies": { - "eslint": "^10.0.2" + "eslint": "catalog:" }, "devDependencies": { - "@types/node": "~25.3.0", - "@typescript-eslint/parser": "^8.49.0", - "@typescript-eslint/rule-tester": "^8.49.0", - "@typescript-eslint/types": "^8.49.0", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "eslint": "^10.0.2", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@types/node": "catalog:", + "@typescript-eslint/parser": "catalog:", + "@typescript-eslint/rule-tester": "catalog:", + "@typescript-eslint/types": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "eslint": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" }, "dependencies": { - "@typescript-eslint/utils": "^8.27.0" + "@typescript-eslint/utils": "catalog:" } } diff --git a/packages/events/CHANGELOG.md b/packages/events/CHANGELOG.md index 33a185351b0..46de10dc21f 100644 --- a/packages/events/CHANGELOG.md +++ b/packages/events/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog - @typespec/events +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/events/package.json b/packages/events/package.json index 4867e765dee..7e7d4e5419f 100644 --- a/packages/events/package.json +++ b/packages/events/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/events", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library providing events bindings", "homepage": "https://typespec.io", @@ -56,15 +56,15 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/html-program-viewer/CHANGELOG.md b/packages/html-program-viewer/CHANGELOG.md index 2e697922681..803d198d996 100644 --- a/packages/html-program-viewer/CHANGELOG.md +++ b/packages/html-program-viewer/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/html-program-viewer +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/html-program-viewer/package.json b/packages/html-program-viewer/package.json index 4ee9d9be0ab..4e13c681034 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.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library for emitting an html view of the program.", "homepage": "https://typespec.io", @@ -51,33 +51,32 @@ "@typespec/compiler": "workspace:^" }, "dependencies": { - "@fluentui/react-components": "~9.73.1", - "@fluentui/react-icons": "^2.0.292", - "@fluentui/react-list": "^9.1.2", - "react": "~19.2.3", - "react-dom": "~19.2.3", - "react-hotkeys-hook": "^5.1.0" + "@fluentui/react-components": "catalog:", + "@fluentui/react-icons": "catalog:", + "@fluentui/react-list": "catalog:", + "react": "catalog:", + "react-dom": "catalog:", + "react-hotkeys-hook": "catalog:" }, "devDependencies": { - "@babel/core": "^7.26.10", - "@testing-library/dom": "^10.4.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", - "@types/node": "~25.3.0", - "@types/react": "~19.2.7", - "@types/react-dom": "~19.2.2", + "@babel/core": "catalog:", + "@testing-library/dom": "catalog:", + "@testing-library/jest-dom": "catalog:", + "@testing-library/react": "catalog:", + "@types/node": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/react-components": "workspace:^", - "@vitejs/plugin-react": "~5.1.2", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vite": "^7.2.7", - "vite-plugin-checker": "^0.12.0", - "vite-plugin-dts": "4.5.4", - "vite-plugin-node-polyfills": "^0.25.0", - "vitest": "^4.0.18" + "@vitejs/plugin-react": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "vite-plugin-checker": "catalog:", + "vite-plugin-dts": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/html-program-viewer/vite.config.ts b/packages/html-program-viewer/vite.config.ts index 0c30367dc80..db0cd087750 100644 --- a/packages/html-program-viewer/vite.config.ts +++ b/packages/html-program-viewer/vite.config.ts @@ -25,7 +25,7 @@ export default defineConfig({ formats: ["es"], }, rollupOptions: { - external: externals, + external: (id) => externals.some((x) => id.startsWith(x)), }, }, plugins: [ diff --git a/packages/http-canonicalization/package.json b/packages/http-canonicalization/package.json index b4c45cdfbd8..d43920119c4 100644 --- a/packages/http-canonicalization/package.json +++ b/packages/http-canonicalization/package.json @@ -39,8 +39,8 @@ "@typespec/http": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", - "concurrently": "^9.1.2", - "prettier": "~3.8.0" + "@types/node": "catalog:", + "concurrently": "catalog:", + "prettier": "catalog:" } } diff --git a/packages/http-client-csharp/docs/decorators.md b/packages/http-client-csharp/docs/decorators.md new file mode 100644 index 00000000000..46589b06c79 --- /dev/null +++ b/packages/http-client-csharp/docs/decorators.md @@ -0,0 +1,42 @@ +--- +title: "Decorators" +description: "Decorators exported by @typespec/http-client-csharp" +toc_min_heading_level: 2 +toc_max_heading_level: 3 +--- + +## TypeSpec.HttpClient.CSharp + +### `@dynamicModel` {#@TypeSpec.HttpClient.CSharp.dynamicModel} + +Marks a model or namespace as dynamic, indicating it should generate dynamic model code. +Can be applied to Model or Namespace types. + +```typespec +@TypeSpec.HttpClient.CSharp.dynamicModel +``` + +#### Target + +`Model | Namespace` + +#### Parameters + +None + +#### Examples + +```tsp +@dynamicModel +model Pet { + name: string; + kind: string; +} + +@dynamicModel +namespace PetStore { + model Dog extends Pet { + breed: string; + } +} +``` diff --git a/packages/http-client-csharp/docs/emitter.md b/packages/http-client-csharp/docs/emitter.md new file mode 100644 index 00000000000..f20d6edee33 --- /dev/null +++ b/packages/http-client-csharp/docs/emitter.md @@ -0,0 +1,127 @@ +--- +title: "Emitter usage" +--- + +## Emitter usage + +1. Via the command line + +```bash +tsp compile . --emit=@typespec/http-client-csharp +``` + +2. Via the config + +```yaml +emit: + - "@typespec/http-client-csharp" +``` + +The config can be extended with options as follows: + +```yaml +emit: + - "@typespec/http-client-csharp" +options: + "@typespec/http-client-csharp": + option: value +``` + +## Emitter options + +### `emitter-output-dir` + +**Type:** `absolutePath` + +Defines the emitter output directory. Defaults to `{output-dir}/@typespec/http-client-csharp` +See [Configuring output directory for more info](https://typespec.io/docs/handbook/configuration/configuration/#configuring-output-directory) + +### `api-version` + +**Type:** `string` + +For TypeSpec files using the [`@versioned`](https://typespec.io/docs/libraries/versioning/reference/decorators/#@TypeSpec.Versioning.versioned) decorator, set this option to the version that should be used to generate against. + +### `generate-protocol-methods` + +**Type:** `boolean` + +Set to `false` to skip generation of protocol methods. The default value is `true`. + +### `generate-convenience-methods` + +**Type:** `boolean` + +Set to `false` to skip generation of convenience methods. The default value is `true`. + +### `unreferenced-types-handling` + +**Type:** `"removeOrInternalize" | "internalize" | "keepAll"` + +Defines the strategy on how to handle unreferenced types. The default value is `removeOrInternalize`. + +### `new-project` + +**Type:** `boolean` + +Set to `true` to overwrite the csproj if it already exists. The default value is `false`. + +### `save-inputs` + +**Type:** `boolean` + +Set to `true` to save the `tspCodeModel.json` and `Configuration.json` files that are emitted and used as inputs to the generator. The default value is `false`. + +### `package-name` + +**Type:** `string` + +Define the package name. If not specified, the first namespace defined in the TypeSpec is used as the package name. + +### `debug` + +**Type:** `boolean` + +Set to `true` to automatically attempt to attach to a debugger when executing the C# generator. The default value is `false`. + +### `logLevel` + +**Type:** `"info" | "debug" | "verbose"` + +Set the log level for which to collect traces. The default value is `info`. + +### `disable-xml-docs` + +**Type:** `boolean` + +Set to `true` to disable XML documentation generation. The default value is `false`. + +### `generator-name` + +**Type:** `string` + +The name of the generator. By default this is set to `ScmCodeModelGenerator`. Generator authors can set this to the name of a generator that inherits from `ScmCodeModelGenerator`. + +### `emitter-extension-path` + +**Type:** `string` + +Allows emitter authors to specify the path to a custom emitter package, allowing you to extend the emitter behavior. This should be set to `import.meta.url` if you are using a custom emitter. + +### `plugins` + +**Type:** `array` + +Paths to generator plugin assemblies (DLLs) or directories containing plugin assemblies. Each plugin must contain a class that extends GeneratorPlugin. + +### `license` + +**Type:** `object` + +License information for the generated client code. + +### `sdk-context-options` + +**Type:** `object` + +The SDK context options that implement the `CreateSdkContextOptions` interface from the [`@azure-tools/typespec-client-generator-core`](https://www.npmjs.com/package/@azure-tools/typespec-client-generator-core) package to be used by the CSharp emitter. diff --git a/packages/http-client-csharp/docs/index.mdx b/packages/http-client-csharp/docs/index.mdx new file mode 100644 index 00000000000..ca373e97796 --- /dev/null +++ b/packages/http-client-csharp/docs/index.mdx @@ -0,0 +1,41 @@ +--- +title: Overview +sidebar_position: 0 +toc_min_heading_level: 2 +toc_max_heading_level: 3 +--- + +import { Tabs, TabItem } from "@astrojs/starlight/components"; + +TypeSpec library for emitting Http Client libraries for C#. + +## Install + + + + +```bash +npm install @typespec/http-client-csharp +``` + + + + +```bash +npm install --save-peer @typespec/http-client-csharp +``` + + + + +## Emitter usage + +[See documentation](./emitter.md) + +## TypeSpec.HttpClient + +## TypeSpec.HttpClient.CSharp + +### Decorators + +- [`@dynamicModel`](./decorators.md#@TypeSpec.HttpClient.CSharp.dynamicModel) diff --git a/packages/http-client-csharp/emitter/src/emitter.ts b/packages/http-client-csharp/emitter/src/emitter.ts index c49b452f58f..996038f9434 100644 --- a/packages/http-client-csharp/emitter/src/emitter.ts +++ b/packages/http-client-csharp/emitter/src/emitter.ts @@ -3,6 +3,8 @@ import { createSdkContext, SdkContext } from "@azure-tools/typespec-client-generator-core"; import { + createDiagnosticCollector, + Diagnostic, EmitContext, getDirectoryPath, joinPaths, @@ -11,7 +13,7 @@ import { resolvePath, } from "@typespec/compiler"; import fs, { statSync } from "fs"; -import { dirname } from "path"; +import { dirname, resolve } from "path"; import { fileURLToPath } from "url"; import { writeCodeModel, writeConfiguration } from "./code-model-writer.js"; import { @@ -20,11 +22,13 @@ import { tspOutputFileName, } from "./constants.js"; import { createModel } from "./lib/client-model-builder.js"; +import { createDiagnostic } from "./lib/lib.js"; import { LoggerLevel } from "./lib/logger-level.js"; import { Logger } from "./lib/logger.js"; import { execAsync, execCSharpGenerator } from "./lib/utils.js"; import { CSharpEmitterOptions, resolveOptions } from "./options.js"; import { createCSharpEmitterContext, CSharpEmitterContext } from "./sdk-context.js"; +import { CodeModel } from "./type/code-model.js"; import { Configuration } from "./type/configuration.js"; /** @@ -48,15 +52,43 @@ function findProjectRoot(path: string): string | undefined { } /** - * The entry point for the emitter. This function is called by the typespec compiler. + * Creates a code model by executing the full emission logic. + * This function can be called by downstream emitters to generate a code model and collect diagnostics. + * + * @example + * ```typescript + * import { emitCodeModel } from "@typespec/http-client-csharp"; + * + * export async function $onEmit(context: EmitContext) { + * const updateCodeModel = (model: CodeModel, context: CSharpEmitterContext) => { + * // Customize the code model here + * return model; + * }; + * const [, diagnostics] = await emitCodeModel(context, updateCodeModel); + * // Process diagnostics as needed + * context.program.reportDiagnostics(diagnostics); + * } + * ``` + * * @param context - The emit context + * @param updateCodeModel - Optional callback to modify the code model before emission + * @returns A tuple containing void and any diagnostics that were generated during the emission * @beta */ -export async function $onEmit(context: EmitContext) { +export async function emitCodeModel( + context: EmitContext, + updateCodeModel?: (model: CodeModel, context: CSharpEmitterContext) => CodeModel, +): Promise<[void, readonly Diagnostic[]]> { + const diagnostics = createDiagnosticCollector(); const program: Program = context.program; const options = resolveOptions(context); const outputFolder = context.emitterOutputDir; + // Resolve plugin paths to absolute if specified + if (options["plugins"]) { + options["plugins"] = options["plugins"].map((p) => resolve(outputFolder, p)); + } + /* set the log level. */ const logger = new Logger(program, options.logLevel ?? LoggerLevel.INFO); @@ -70,12 +102,16 @@ export async function $onEmit(context: EmitContext) { ), logger, ); - program.reportDiagnostics(sdkContext.diagnostics); + for (const diag of sdkContext.diagnostics) { + diagnostics.add(diag); + } - let root = createModel(sdkContext); + const root = diagnostics.pipe(createModel(sdkContext)); if (root) { - root = options["update-code-model"](root, sdkContext); + // Apply optional code model update callback + const updatedRoot = updateCodeModel ? updateCodeModel(root, sdkContext) : root; + const generatedFolder = resolvePath(outputFolder, "src", "Generated"); if (!fs.existsSync(generatedFolder)) { @@ -83,9 +119,9 @@ export async function $onEmit(context: EmitContext) { } // emit tspCodeModel.json - await writeCodeModel(sdkContext, root, outputFolder); + await writeCodeModel(sdkContext, updatedRoot, outputFolder); - const namespace = root.name; + const namespace = updatedRoot.name; const configurations: Configuration = createConfiguration(options, namespace, sdkContext); //emit configuration.json @@ -113,7 +149,9 @@ export async function $onEmit(context: EmitContext) { debug: options.debug ?? false, }); if (result.exitCode !== 0) { - const isValid = await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion); + const isValid = diagnostics.pipe( + await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion), + ); // if the dotnet sdk is valid, the error is not dependency issue, log it as normal if (isValid) { throw new Error( @@ -122,7 +160,9 @@ export async function $onEmit(context: EmitContext) { } } } catch (error: any) { - const isValid = await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion); + const isValid = diagnostics.pipe( + await _validateDotNetSdk(sdkContext, _minSupportedDotNetSdkVersion), + ); // if the dotnet sdk is valid, the error is not dependency issue, log it as normal if (isValid) throw new Error(error, { cause: error }); } @@ -133,6 +173,18 @@ export async function $onEmit(context: EmitContext) { } } } + + return diagnostics.wrap(undefined); +} + +/** + * The entry point for the emitter. This function is called by the typespec compiler. + * @param context - The emit context + * @beta + */ +export async function $onEmit(context: EmitContext) { + const [, diagnostics] = await emitCodeModel(context); + context.program.reportDiagnostics(diagnostics); } export function createConfiguration( @@ -142,7 +194,6 @@ export function createConfiguration( ): Configuration { const skipKeys = [ "new-project", - "update-code-model", "sdk-context-options", "save-inputs", "generator-name", @@ -172,29 +223,34 @@ export function createConfiguration( * Report diagnostic if dotnet sdk is not installed or its version does not meet prerequisite * @param sdkContext - The SDK context * @param minVersionRequisite - The minimum required major version - * @param logger - The logger + * @returns A tuple containing whether the SDK is valid and any diagnostics * @internal */ export async function _validateDotNetSdk( sdkContext: CSharpEmitterContext, minMajorVersion: number, -): Promise { +): Promise<[boolean, readonly Diagnostic[]]> { + const diagnostics = createDiagnosticCollector(); try { const result = await execAsync("dotnet", ["--version"], { stdio: "pipe" }); - return validateDotNetSdkVersionCore(sdkContext, result.stdout, minMajorVersion); + return diagnostics.wrap( + diagnostics.pipe(validateDotNetSdkVersionCore(sdkContext, result.stdout, minMajorVersion)), + ); } catch (error: any) { if (error && "code" in error && error["code"] === "ENOENT") { - sdkContext.logger.reportDiagnostic({ - code: "invalid-dotnet-sdk-dependency", - messageId: "missing", - format: { - dotnetMajorVersion: `${minMajorVersion}`, - downloadUrl: "https://dotnet.microsoft.com/", - }, - target: NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "invalid-dotnet-sdk-dependency", + messageId: "missing", + format: { + dotnetMajorVersion: `${minMajorVersion}`, + downloadUrl: "https://dotnet.microsoft.com/", + }, + target: NoTarget, + }), + ); } - return false; + return diagnostics.wrap(false); } } @@ -202,32 +258,41 @@ function validateDotNetSdkVersionCore( sdkContext: CSharpEmitterContext, version: string, minMajorVersion: number, -): boolean { +): [boolean, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); if (version) { const dotIndex = version.indexOf("."); const firstPart = dotIndex === -1 ? version : version.substring(0, dotIndex); const major = Number(firstPart); if (isNaN(major)) { - return false; + return diagnostics.wrap(false); } if (major < minMajorVersion) { - sdkContext.logger.reportDiagnostic({ - code: "invalid-dotnet-sdk-dependency", - messageId: "invalidVersion", - format: { - installedVersion: version, - dotnetMajorVersion: `${minMajorVersion}`, - downloadUrl: "https://dotnet.microsoft.com/", - }, - target: NoTarget, - }); - return false; + diagnostics.add( + createDiagnostic({ + code: "invalid-dotnet-sdk-dependency", + messageId: "invalidVersion", + format: { + installedVersion: version, + dotnetMajorVersion: `${minMajorVersion}`, + downloadUrl: "https://dotnet.microsoft.com/", + }, + target: NoTarget, + }), + ); + return diagnostics.wrap(false); } - return true; + return diagnostics.wrap(true); } else { - sdkContext.logger.error("Cannot get the installed .NET SDK version."); - return false; + diagnostics.add( + createDiagnostic({ + code: "general-error", + format: { message: "Cannot get the installed .NET SDK version." }, + target: NoTarget, + }), + ); + return diagnostics.wrap(false); } } diff --git a/packages/http-client-csharp/emitter/src/index.ts b/packages/http-client-csharp/emitter/src/index.ts index 5a0b24094c7..fb26b5a8b09 100644 --- a/packages/http-client-csharp/emitter/src/index.ts +++ b/packages/http-client-csharp/emitter/src/index.ts @@ -3,7 +3,7 @@ export { writeCodeModel } from "./code-model-writer.js"; export { configurationFileName, tspOutputFileName } from "./constants.js"; -export { $onEmit } from "./emitter.js"; +export { $onEmit, emitCodeModel } from "./emitter.js"; // we export `createModel` only for autorest.csharp because it uses the emitter to generate the code model file but not calling the dll here // we could remove this export when in the future we deprecate autorest.csharp export { createModel } from "./lib/client-model-builder.js"; diff --git a/packages/http-client-csharp/emitter/src/lib/client-converter.ts b/packages/http-client-csharp/emitter/src/lib/client-converter.ts index c37171e0137..52586f2ddf0 100644 --- a/packages/http-client-csharp/emitter/src/lib/client-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/client-converter.ts @@ -9,7 +9,7 @@ import { SdkHttpOperation, SdkMethodParameter, } from "@azure-tools/typespec-client-generator-core"; -import { NoTarget } from "@typespec/compiler"; +import { createDiagnosticCollector, Diagnostic, NoTarget } from "@typespec/compiler"; import { CSharpEmitterContext } from "../sdk-context.js"; import { InputParameterScope } from "../type/input-parameter-scope.js"; import { @@ -18,6 +18,7 @@ import { InputParameter, InputType, } from "../type/input-type.js"; +import { createDiagnostic } from "./lib.js"; import { fromMethodParameter, fromSdkServiceMethod, @@ -33,24 +34,26 @@ export function fromSdkClients( sdkContext: CSharpEmitterContext, clients: SdkClientType[], rootApiVersions: string[], -): InputClient[] { +): [InputClient[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const inputClients: InputClient[] = []; for (const client of clients) { - const inputClient = fromSdkClient(sdkContext, client, rootApiVersions); + const inputClient = diagnostics.pipe(fromSdkClient(sdkContext, client, rootApiVersions)); inputClients.push(inputClient); } - return inputClients; + return diagnostics.wrap(inputClients); } function fromSdkClient( sdkContext: CSharpEmitterContext, client: SdkClientType, rootApiVersions: string[], -): InputClient { +): [InputClient, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); let inputClient: InputClient | undefined = sdkContext.__typeCache.clients.get(client); if (inputClient) { - return inputClient; + return diagnostics.wrap(inputClient); } const endpointParameter = client.clientInitialization.parameters.find( (p) => p.kind === "endpoint", @@ -58,10 +61,12 @@ function fromSdkClient( const uri = getMethodUri(endpointParameter); // Convert all clientInitialization parameters - const clientParameters = fromSdkClientInitializationParameters( - sdkContext, - client.clientInitialization.parameters, - client.namespace, + const clientParameters = diagnostics.pipe( + fromSdkClientInitializationParameters( + sdkContext, + client.clientInitialization.parameters, + client.namespace, + ), ); const isMultiService = isMultiServiceClient(client); @@ -77,7 +82,11 @@ function fromSdkClient( doc: client.doc, summary: client.summary, methods: client.methods - .map((m) => fromSdkServiceMethod(sdkContext, m, uri, rootApiVersions, client.namespace)) + .map((m) => + diagnostics.pipe( + fromSdkServiceMethod(sdkContext, m, uri, rootApiVersions, client.namespace), + ), + ) .filter((m) => m !== undefined), parameters: clientParameters, initializedBy: client.clientInitialization.initializedBy, @@ -93,62 +102,73 @@ function fromSdkClient( // fill parent if (client.parent) { - inputClient.parent = fromSdkClient(sdkContext, client.parent, rootApiVersions); + inputClient.parent = diagnostics.pipe( + fromSdkClient(sdkContext, client.parent, rootApiVersions), + ); } // fill children if (client.children) { inputClient.children = client.children.map((c) => - fromSdkClient(sdkContext, c, rootApiVersions), + diagnostics.pipe(fromSdkClient(sdkContext, c, rootApiVersions)), ); } - return inputClient; + return diagnostics.wrap(inputClient); function fromSdkClientInitializationParameters( sdkContext: CSharpEmitterContext, parameters: (SdkEndpointParameter | SdkCredentialParameter | SdkMethodParameter)[], namespace: string, - ): InputParameter[] { + ): [InputParameter[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const inputParameters: InputParameter[] = []; for (const param of parameters) { if (param.kind === "endpoint") { // Convert endpoint parameters - const endpointParams = fromSdkEndpointParameter(param); + const endpointParams = diagnostics.pipe(fromSdkEndpointParameter(param)); inputParameters.push(...endpointParams); } else if (param.kind === "method") { // Convert method parameters - const methodParam = fromMethodParameter(sdkContext, param, namespace); + const methodParam = diagnostics.pipe(fromMethodParameter(sdkContext, param, namespace)); inputParameters.push(methodParam); } // Note: credential parameters are handled separately in service-authentication.ts // and are not included in the client parameters list } - return inputParameters; + return diagnostics.wrap(inputParameters); } - function fromSdkEndpointParameter(p: SdkEndpointParameter): InputEndpointParameter[] { + function fromSdkEndpointParameter( + p: SdkEndpointParameter, + ): [InputEndpointParameter[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); if (p.type.kind === "union") { - return fromSdkEndpointType(p.type.variantTypes[0]); + return diagnostics.wrap(diagnostics.pipe(fromSdkEndpointType(p.type.variantTypes[0]))); } else { - return fromSdkEndpointType(p.type); + return diagnostics.wrap(diagnostics.pipe(fromSdkEndpointType(p.type))); } } - function fromSdkEndpointType(type: SdkEndpointType): InputEndpointParameter[] { + function fromSdkEndpointType( + type: SdkEndpointType, + ): [InputEndpointParameter[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); // TODO: support free-style endpoint url with multiple parameters const endpointExpr = type.serverUrl .replace("https://", "") .replace("http://", "") .split("/")[0]; if (!/^\{\w+\}$/.test(endpointExpr)) { - sdkContext.logger.reportDiagnostic({ - code: "unsupported-endpoint-url", - format: { endpoint: type.serverUrl }, - target: NoTarget, - }); - return []; + diagnostics.add( + createDiagnostic({ + code: "unsupported-endpoint-url", + format: { endpoint: type.serverUrl }, + target: NoTarget, + }), + ); + return diagnostics.wrap([]); } const endpointVariableName = endpointExpr.substring(1, endpointExpr.length - 1); @@ -162,7 +182,7 @@ function fromSdkClient( crossLanguageDefinitionId: parameter.type.kind === "string" ? "TypeSpec.string" : "TypeSpec.url", } - : fromSdkType(sdkContext, parameter.type); // TODO: consolidate with converter.fromSdkEndpointType + : diagnostics.pipe(fromSdkType(sdkContext, parameter.type)); // TODO: consolidate with converter.fromSdkEndpointType parameters.push({ kind: "endpoint", name: parameter.name, @@ -174,19 +194,19 @@ function fromSdkClient( optional: parameter.optional, scope: InputParameterScope.Client, isEndpoint: isEndpoint, - defaultValue: getParameterDefaultValue( - sdkContext, - parameter.clientDefaultValue, - parameterType, + defaultValue: diagnostics.pipe( + getParameterDefaultValue(sdkContext, parameter.clientDefaultValue, parameterType), ), serverUrlTemplate: type.serverUrl, skipUrlEncoding: false, readOnly: isReadOnly(parameter), crossLanguageDefinitionId: parameter.crossLanguageDefinitionId, - methodParameterSegments: getMethodParameterSegments(sdkContext, parameter), + methodParameterSegments: diagnostics.pipe( + getMethodParameterSegments(sdkContext, parameter), + ), }); } - return parameters; + return diagnostics.wrap(parameters); } } diff --git a/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts b/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts index 15c4da86c86..f0fc8413bff 100644 --- a/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts +++ b/packages/http-client-csharp/emitter/src/lib/client-model-builder.ts @@ -6,6 +6,7 @@ import { SdkEnumType, SdkHttpOperation, } from "@azure-tools/typespec-client-generator-core"; +import { createDiagnosticCollector, Diagnostic } from "@typespec/compiler"; import { CSharpEmitterContext } from "../sdk-context.js"; import { CodeModel } from "../type/code-model.js"; import { InputEnumType, InputLiteralType, InputModelType } from "../type/input-type.js"; @@ -17,17 +18,29 @@ import { firstLetterToUpperCase, getClientNamespaceString } from "./utils.js"; /** * Creates the code model from the SDK context. + * This function follows TypeSpec best practices by returning diagnostics alongside the result. + * + * @example + * ```typescript + * import { createModel } from "@typespec/http-client-csharp"; + * + * const sdkContext = createCSharpEmitterContext(context, logger); + * const [codeModel, diagnostics] = createModel(sdkContext); + * // Process the code model and handle diagnostics + * ``` + * * @param sdkContext - The SDK context - * @returns The code model + * @returns A tuple containing the code model and any diagnostics that were generated * @beta */ -export function createModel(sdkContext: CSharpEmitterContext): CodeModel { +export function createModel(sdkContext: CSharpEmitterContext): [CodeModel, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const sdkPackage = sdkContext.sdkPackage; // TO-DO: Consider exposing the namespace hierarchy in the code model https://github.com/microsoft/typespec/issues/8332 - fromSdkNamespaces(sdkContext, sdkPackage.namespaces); + diagnostics.pipe(fromSdkNamespaces(sdkContext, sdkPackage.namespaces)); // TO-DO: Consider using the TCGC model + enum cache once https://github.com/Azure/typespec-azure/issues/3180 is resolved - navigateModels(sdkContext); + diagnostics.pipe(navigateModels(sdkContext)); const types = Array.from(sdkContext.__typeCache.types.values()); const [models, enums] = [ @@ -37,7 +50,7 @@ export function createModel(sdkContext: CSharpEmitterContext): CodeModel { const rootClients = sdkPackage.clients; const rootApiVersions = parseApiVersions(sdkPackage.enums, rootClients); - const inputClients = fromSdkClients(sdkContext, rootClients, rootApiVersions); + const inputClients = diagnostics.pipe(fromSdkClients(sdkContext, rootClients, rootApiVersions)); // TODO -- TCGC now does not have constants field in its sdkPackage, they might add it in the future. const constants = Array.from(sdkContext.__typeCache.constants.values()); @@ -52,10 +65,10 @@ export function createModel(sdkContext: CSharpEmitterContext): CodeModel { constants: constants, models: models, clients: inputClients, - auth: processServiceAuthentication(sdkContext, sdkPackage), + auth: diagnostics.pipe(processServiceAuthentication(sdkContext, sdkPackage)), }; - return clientModel; + return diagnostics.wrap(clientModel); } /** @@ -139,11 +152,13 @@ function fixNamingConflicts(models: InputModelType[], constants: InputLiteralTyp } } -function navigateModels(sdkContext: CSharpEmitterContext) { +function navigateModels(sdkContext: CSharpEmitterContext): [void, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); for (const m of sdkContext.sdkPackage.models) { - fromSdkType(sdkContext, m); + diagnostics.pipe(fromSdkType(sdkContext, m)); } for (const e of sdkContext.sdkPackage.enums) { - fromSdkType(sdkContext, e); + diagnostics.pipe(fromSdkType(sdkContext, e)); } + return diagnostics.wrap(undefined as void); } diff --git a/packages/http-client-csharp/emitter/src/lib/example-converter.ts b/packages/http-client-csharp/emitter/src/lib/example-converter.ts index 74b20a8c479..ce23c24eb70 100644 --- a/packages/http-client-csharp/emitter/src/lib/example-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/example-converter.ts @@ -16,6 +16,7 @@ import { SdkUnionExampleValue, SdkUnknownExampleValue, } from "@azure-tools/typespec-client-generator-core"; +import { createDiagnosticCollector, Diagnostic } from "@typespec/compiler"; import { CSharpEmitterContext } from "../sdk-context.js"; import { InputArrayExampleValue, @@ -47,8 +48,13 @@ import { fromSdkType } from "./type-converter.js"; export function fromSdkHttpExamples( sdkContext: CSharpEmitterContext, examples: SdkHttpOperationExample[], -): InputHttpOperationExample[] { - return examples.map((example) => fromSdkHttpExample(example)); +): [InputHttpOperationExample[], readonly Diagnostic[]] { + // Create a diagnostics collector for internal use + // Any errors in examples won't prevent the code model from being generated + const diagnostics = createDiagnosticCollector(); + + const result = examples.map((example) => fromSdkHttpExample(example)); + return diagnostics.wrap(result); function fromSdkHttpExample(example: SdkHttpOperationExample): InputHttpOperationExample { return { @@ -76,7 +82,7 @@ export function fromSdkHttpExamples( responseValue: SdkHttpResponseExampleValue, ): OperationResponseExample { return { - response: fromSdkHttpOperationResponse(sdkContext, responseValue.response), + response: diagnostics.pipe(fromSdkHttpOperationResponse(sdkContext, responseValue.response)), statusCode: responseValue.statusCode, bodyValue: responseValue.bodyValue ? fromSdkExample(responseValue.bodyValue) : undefined, }; @@ -108,7 +114,7 @@ export function fromSdkHttpExamples( function fromSdkStringExample(example: SdkStringExampleValue): InputStringExampleValue { return { kind: "string", - type: fromSdkType(sdkContext, example.type), + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)), value: example.value, }; } @@ -116,7 +122,7 @@ export function fromSdkHttpExamples( function fromSdkNumberExample(example: SdkNumberExampleValue): InputNumberExampleValue { return { kind: "number", - type: fromSdkType(sdkContext, example.type), + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)), value: example.value, }; } @@ -124,7 +130,7 @@ export function fromSdkHttpExamples( function fromSdkBooleanExample(example: SdkBooleanExampleValue): InputBooleanExampleValue { return { kind: example.kind, - type: fromSdkType(sdkContext, example.type) as InputPrimitiveType, + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)) as InputPrimitiveType, value: example.value, }; } @@ -132,7 +138,7 @@ export function fromSdkHttpExamples( function fromSdkUnionExample(example: SdkUnionExampleValue): InputUnionExampleValue { return { kind: example.kind, - type: fromSdkType(sdkContext, example.type) as InputUnionType, + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)) as InputUnionType, value: example.value, }; } @@ -140,7 +146,7 @@ export function fromSdkHttpExamples( function fromSdkArrayExample(example: SdkArrayExampleValue): InputArrayExampleValue { return { kind: example.kind, - type: fromSdkType(sdkContext, example.type) as InputArrayType, + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)) as InputArrayType, value: example.value.map((v) => fromSdkExample(v)), }; } @@ -150,7 +156,7 @@ export function fromSdkHttpExamples( ): InputDictionaryExampleValue { return { kind: example.kind, - type: fromSdkType(sdkContext, example.type) as InputDictionaryType, + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)) as InputDictionaryType, value: fromExampleRecord(example.value), }; } @@ -158,7 +164,7 @@ export function fromSdkHttpExamples( function fromSdkModelExample(example: SdkModelExampleValue): InputModelExampleValue { return { kind: example.kind, - type: fromSdkType(sdkContext, example.type) as InputModelType, + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)) as InputModelType, value: fromExampleRecord(example.value), additionalPropertiesValue: example.additionalPropertiesValue ? fromExampleRecord(example.additionalPropertiesValue) @@ -169,7 +175,7 @@ export function fromSdkHttpExamples( function fromSdkAnyExample(example: SdkUnknownExampleValue): InputUnknownExampleValue { return { kind: example.kind, - type: fromSdkType(sdkContext, example.type) as InputPrimitiveType, + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)) as InputPrimitiveType, value: example.value, }; } @@ -177,7 +183,7 @@ export function fromSdkHttpExamples( function fromSdkNullExample(example: SdkNullExampleValue): InputNullExampleValue { return { kind: example.kind, - type: fromSdkType(sdkContext, example.type) as InputNullableType, + type: diagnostics.pipe(fromSdkType(sdkContext, example.type)) as InputNullableType, value: example.value, }; } diff --git a/packages/http-client-csharp/emitter/src/lib/logger.ts b/packages/http-client-csharp/emitter/src/lib/logger.ts index 8b087a400f3..8b1682f0c27 100644 --- a/packages/http-client-csharp/emitter/src/lib/logger.ts +++ b/packages/http-client-csharp/emitter/src/lib/logger.ts @@ -1,12 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { DiagnosticReport, NoTarget, Program, Tracer } from "@typespec/compiler"; -import { - DiagnosticMessagesMap, - getTracer, - reportDiagnostic as libReportDiagnostic, -} from "./lib.js"; +import { Program, Tracer } from "@typespec/compiler"; +import { getTracer } from "./lib.js"; import { LoggerLevel } from "./logger-level.js"; /** @@ -16,12 +12,10 @@ import { LoggerLevel } from "./logger-level.js"; export class Logger { private tracer: Tracer; private level: LoggerLevel; - private program: Program; public constructor(program: Program, level: LoggerLevel) { this.tracer = getTracer(program); this.level = level; - this.program = program; } trace(level: LoggerLevel, message: string): void { @@ -60,25 +54,7 @@ export class Logger { } } - reportDiagnostic( - diag: DiagnosticReport, - ): void { - libReportDiagnostic(this.program, diag); - } - warn(message: string): void { - this.reportDiagnostic({ - code: "general-warning", - format: { message: message }, - target: NoTarget, - }); - } - - error(message: string): void { - this.reportDiagnostic({ - code: "general-error", - format: { message: message }, - target: NoTarget, - }); + this.tracer.trace("warning", message); } } diff --git a/packages/http-client-csharp/emitter/src/lib/namespace-converter.ts b/packages/http-client-csharp/emitter/src/lib/namespace-converter.ts index ef3f8f38195..cfc2eb761a0 100644 --- a/packages/http-client-csharp/emitter/src/lib/namespace-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/namespace-converter.ts @@ -1,18 +1,20 @@ import { SdkHttpOperation, SdkNamespace } from "@azure-tools/typespec-client-generator-core"; +import { createDiagnosticCollector, Diagnostic } from "@typespec/compiler"; import { CSharpEmitterContext } from "../sdk-context.js"; import { InputNamespace } from "../type/input-type.js"; export function fromSdkNamespaces( sdkContext: CSharpEmitterContext, namespaces: SdkNamespace[], -): InputNamespace[] { +): [InputNamespace[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const inputNamespaces: InputNamespace[] = []; for (const namespace of namespaces) { const inputNamespace = fromSdkNamespace(sdkContext, namespace); inputNamespaces.push(inputNamespace); } - return inputNamespaces; + return diagnostics.wrap(inputNamespaces); } function fromSdkNamespace( diff --git a/packages/http-client-csharp/emitter/src/lib/operation-converter.ts b/packages/http-client-csharp/emitter/src/lib/operation-converter.ts index a8effdf26fd..decc442eb79 100644 --- a/packages/http-client-csharp/emitter/src/lib/operation-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/operation-converter.ts @@ -5,6 +5,7 @@ import { getClientNamespace, getClientOptions, getHttpOperationParameter, + getParamAlias, isHttpMetadata, SdkBodyParameter, SdkBuiltInKinds, @@ -27,7 +28,13 @@ import { shouldGenerateConvenient, shouldGenerateProtocol, } from "@azure-tools/typespec-client-generator-core"; -import { getDeprecated, isErrorModel, NoTarget } from "@typespec/compiler"; +import { + createDiagnosticCollector, + Diagnostic, + getDeprecated, + isErrorModel, + NoTarget, +} from "@typespec/compiler"; import { HttpStatusCodeRange } from "@typespec/http"; import { getResourceOperation } from "@typespec/rest"; import { CSharpEmitterContext } from "../sdk-context.js"; @@ -64,6 +71,7 @@ import { parseHttpRequestMethod } from "../type/request-method.js"; import { ResponseLocation } from "../type/response-location.js"; import { getExternalDocs, getOperationId } from "./decorators.js"; import { fromSdkHttpExamples } from "./example-converter.js"; +import { createDiagnostic } from "./lib.js"; import { fromSdkType } from "./type-converter.js"; import { getClientNamespaceString, isReadOnly } from "./utils.js"; @@ -73,75 +81,83 @@ export function fromSdkServiceMethod( uri: string, rootApiVersions: string[], namespace: string, -): InputServiceMethod | undefined { +): [InputServiceMethod | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + let method = sdkContext.__typeCache.methods.get(sdkMethod); if (method) { - return method; + return diagnostics.wrap(method); } const methodKind = sdkMethod.kind; switch (methodKind) { case "basic": - method = createServiceMethod( - sdkContext, - sdkMethod, - uri, - rootApiVersions, - namespace, + method = diagnostics.pipe( + createServiceMethod( + sdkContext, + sdkMethod, + uri, + rootApiVersions, + namespace, + ), ); break; case "paging": - const pagingServiceMethod = createServiceMethod( - sdkContext, - sdkMethod, - uri, - rootApiVersions, - namespace, + const pagingServiceMethod = diagnostics.pipe( + createServiceMethod( + sdkContext, + sdkMethod, + uri, + rootApiVersions, + namespace, + ), ); - pagingServiceMethod.pagingMetadata = loadPagingServiceMetadata( - sdkContext, - sdkMethod, - rootApiVersions, - uri, - namespace, + pagingServiceMethod.pagingMetadata = diagnostics.pipe( + loadPagingServiceMetadata(sdkContext, sdkMethod, rootApiVersions, uri, namespace), ); method = pagingServiceMethod; break; case "lro": - const lroServiceMethod = createServiceMethod( - sdkContext, - sdkMethod, - uri, - rootApiVersions, - namespace, + const lroServiceMethod = diagnostics.pipe( + createServiceMethod( + sdkContext, + sdkMethod, + uri, + rootApiVersions, + namespace, + ), + ); + lroServiceMethod.lroMetadata = diagnostics.pipe( + loadLongRunningMetadata(sdkContext, sdkMethod), ); - lroServiceMethod.lroMetadata = loadLongRunningMetadata(sdkContext, sdkMethod); method = lroServiceMethod; break; case "lropaging": - const lroPagingMethod = createServiceMethod( - sdkContext, - sdkMethod, - uri, - rootApiVersions, - namespace, + const lroPagingMethod = diagnostics.pipe( + createServiceMethod( + sdkContext, + sdkMethod, + uri, + rootApiVersions, + namespace, + ), ); - lroPagingMethod.lroMetadata = loadLongRunningMetadata(sdkContext, sdkMethod); - lroPagingMethod.pagingMetadata = loadPagingServiceMetadata( - sdkContext, - sdkMethod, - rootApiVersions, - uri, - namespace, + lroPagingMethod.lroMetadata = diagnostics.pipe( + loadLongRunningMetadata(sdkContext, sdkMethod), + ); + lroPagingMethod.pagingMetadata = diagnostics.pipe( + loadPagingServiceMetadata(sdkContext, sdkMethod, rootApiVersions, uri, namespace), ); method = lroPagingMethod; break; default: - sdkContext.logger.reportDiagnostic({ - code: "unsupported-service-method", - format: { methodKind: methodKind }, - target: NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "unsupported-service-method", + format: { methodKind: methodKind }, + target: NoTarget, + }), + ); method = undefined; break; } @@ -150,7 +166,7 @@ export function fromSdkServiceMethod( sdkContext.__typeCache.updateSdkMethodReferences(sdkMethod, method); } - return method; + return diagnostics.wrap(method); } export function fromSdkServiceMethodOperation( @@ -158,21 +174,25 @@ export function fromSdkServiceMethodOperation( method: SdkServiceMethod, uri: string, rootApiVersions: string[], -): InputOperation { +): [InputOperation, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + let operation = sdkContext.__typeCache.operations.get(method.operation); if (operation) { - return operation; + return diagnostics.wrap(operation); } let generateConvenience = shouldGenerateConvenient(sdkContext, method.operation.__raw.operation); if (method.operation.verb === "patch" && generateConvenience) { - sdkContext.logger.reportDiagnostic({ - code: "unsupported-patch-convenience-method", - format: { - methodCrossLanguageDefinitionId: method.crossLanguageDefinitionId, - }, - target: method.__raw ?? NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "unsupported-patch-convenience-method", + format: { + methodCrossLanguageDefinitionId: method.crossLanguageDefinitionId, + }, + target: method.__raw ?? NoTarget, + }), + ); generateConvenience = false; } @@ -186,8 +206,12 @@ export function fromSdkServiceMethodOperation( summary: method.summary, doc: method.doc, accessibility: method.access, - parameters: fromSdkOperationParameters(sdkContext, method.operation, rootApiVersions), - responses: fromSdkHttpOperationResponses(sdkContext, method.operation.responses), + parameters: diagnostics.pipe( + fromSdkOperationParameters(sdkContext, method.operation, rootApiVersions), + ), + responses: diagnostics.pipe( + fromSdkHttpOperationResponses(sdkContext, method.operation.responses), + ), httpMethod: parseHttpRequestMethod(method.operation.verb), uri: uri, path: method.operation.path, @@ -199,7 +223,7 @@ export function fromSdkServiceMethodOperation( crossLanguageDefinitionId: method.crossLanguageDefinitionId, decorators: method.decorators, examples: method.operation.examples - ? fromSdkHttpExamples(sdkContext, method.operation.examples) + ? diagnostics.pipe(fromSdkHttpExamples(sdkContext, method.operation.examples)) : undefined, namespace: method.__raw?.namespace ? getClientNamespace(sdkContext, method.__raw.namespace) @@ -208,31 +232,33 @@ export function fromSdkServiceMethodOperation( sdkContext.__typeCache.updateSdkOperationReferences(method.operation, operation); - return operation; + return diagnostics.wrap(operation); } export function getParameterDefaultValue( sdkContext: CSharpEmitterContext, clientDefaultValue: any, parameterType: InputType, -): InputConstant | undefined { +): [InputConstant | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + if ( clientDefaultValue === undefined || // a constant parameter should overwrite client default value parameterType.kind === "constant" ) { - return undefined; + return diagnostics.wrap(undefined); } - const kind = getValueType(sdkContext, clientDefaultValue); - return { + const kind = diagnostics.pipe(getValueType(sdkContext, clientDefaultValue)); + return diagnostics.wrap({ type: { kind: kind, name: kind, crossLanguageDefinitionId: `TypeSpec.${kind}`, }, value: clientDefaultValue, - }; + }); } function createServiceMethod( @@ -241,44 +267,57 @@ function createServiceMethod( uri: string, rootApiVersions: string[], namespace: string, -): T { - return { +): [T, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + + return diagnostics.wrap({ kind: method.kind, name: method.name, accessibility: method.access, apiVersions: method.apiVersions, doc: method.doc, summary: method.summary, - operation: fromSdkServiceMethodOperation(sdkContext, method, uri, rootApiVersions), - parameters: fromSdkServiceMethodParameters(sdkContext, method, rootApiVersions, namespace), - response: fromSdkServiceMethodResponse(sdkContext, method.response), + operation: diagnostics.pipe( + fromSdkServiceMethodOperation(sdkContext, method, uri, rootApiVersions), + ), + parameters: diagnostics.pipe( + fromSdkServiceMethodParameters(sdkContext, method, rootApiVersions, namespace), + ), + response: diagnostics.pipe(fromSdkServiceMethodResponse(sdkContext, method.response)), exception: method.exception - ? fromSdkServiceMethodResponse(sdkContext, method.exception) + ? diagnostics.pipe(fromSdkServiceMethodResponse(sdkContext, method.exception)) : undefined, isOverride: method.isOverride, generateConvenient: method.generateConvenient, generateProtocol: method.generateProtocol, crossLanguageDefinitionId: method.crossLanguageDefinitionId, - } as T; + } as T); } -function getValueType(sdkContext: CSharpEmitterContext, value: any): SdkBuiltInKinds { +function getValueType( + sdkContext: CSharpEmitterContext, + value: any, +): [SdkBuiltInKinds, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + switch (typeof value) { case "string": - return "string"; + return diagnostics.wrap("string"); case "number": - return "int32"; + return diagnostics.wrap("int32"); case "boolean": - return "boolean"; + return diagnostics.wrap("boolean"); case "bigint": - return "int64"; + return diagnostics.wrap("int64"); default: - sdkContext.logger.reportDiagnostic({ - code: "unsupported-default-value-type", - format: { valueType: typeof value }, - target: NoTarget, - }); - return "unknown"; + diagnostics.add( + createDiagnostic({ + code: "unsupported-default-value-type", + format: { valueType: typeof value }, + target: NoTarget, + }), + ); + return diagnostics.wrap("unknown"); } } @@ -287,11 +326,12 @@ function fromSdkServiceMethodParameters( method: SdkServiceMethod, rootApiVersions: string[], namespace: string, -): InputMethodParameter[] { +): [InputMethodParameter[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const parameters: InputMethodParameter[] = []; for (const p of method.parameters) { - const methodInputParameter = fromMethodParameter(sdkContext, p, namespace); + const methodInputParameter = diagnostics.pipe(fromMethodParameter(sdkContext, p, namespace)); const operationHttpParameter = getHttpOperationParameter(method, p); if (!operationHttpParameter) { @@ -305,11 +345,12 @@ function fromSdkServiceMethodParameters( methodInputParameter, operationHttpParameter, rootApiVersions, + diagnostics, ); parameters.push(methodInputParameter); } - return parameters; + return diagnostics.wrap(parameters); } function updateMethodParameter( @@ -317,13 +358,12 @@ function updateMethodParameter( methodParameter: InputMethodParameter, operationHttpParameter: SdkHttpParameter | SdkModelPropertyType, rootApiVersions: string[], + diagnostics: ReturnType, ): void { // for content type parameter if (isContentType(operationHttpParameter)) { - methodParameter.type = fromSdkType( - sdkContext, - operationHttpParameter.type, - operationHttpParameter, + methodParameter.type = diagnostics.pipe( + fromSdkType(sdkContext, operationHttpParameter.type, operationHttpParameter), ); } methodParameter.serializedName = getNameInRequest(operationHttpParameter); @@ -336,10 +376,8 @@ function updateMethodParameter( if (methodParameter.location === RequestLocation.Body) { // Convert constants to enums if (methodParameter.type.kind === "constant") { - methodParameter.type = fromSdkType( - sdkContext, - operationHttpParameter.type, - operationHttpParameter, + methodParameter.type = diagnostics.pipe( + fromSdkType(sdkContext, operationHttpParameter.type, operationHttpParameter), ); } } @@ -348,75 +386,87 @@ function updateMethodParameter( function fromSdkServiceMethodResponse( sdkContext: CSharpEmitterContext, methodResponse: SdkMethodResponse, -): InputServiceMethodResponse { - return { - type: getResponseType(sdkContext, methodResponse.type), +): [InputServiceMethodResponse, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + + return diagnostics.wrap({ + type: diagnostics.pipe(getResponseType(sdkContext, methodResponse.type)), resultSegments: methodResponse.resultSegments?.map((segment) => getResponseSegmentName(segment), ), - }; + }); } function fromSdkOperationParameters( sdkContext: CSharpEmitterContext, operation: SdkHttpOperation, rootApiVersions: string[], -): InputHttpParameter[] { +): [InputHttpParameter[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const parameters: InputHttpParameter[] = []; + for (const p of operation.parameters) { if (p.kind === "cookie") { - sdkContext.logger.reportDiagnostic({ - code: "unsupported-cookie-parameter", - format: { parameterName: p.name, path: operation.path }, - target: NoTarget, - }); - return parameters; + diagnostics.add( + createDiagnostic({ + code: "unsupported-cookie-parameter", + format: { parameterName: p.name, path: operation.path }, + target: NoTarget, + }), + ); + return diagnostics.wrap(parameters); } - const param = fromParameter(sdkContext, p, rootApiVersions); + const param = diagnostics.pipe(fromParameter(sdkContext, p, rootApiVersions)); if (param) { parameters.push(param); } } if (operation.bodyParam) { - const bodyParam = fromParameter(sdkContext, operation.bodyParam, rootApiVersions); + const bodyParam = diagnostics.pipe( + fromParameter(sdkContext, operation.bodyParam, rootApiVersions), + ); if (bodyParam) { parameters.push(bodyParam); } } - return parameters; + return diagnostics.wrap(parameters); } export function fromParameter( sdkContext: CSharpEmitterContext, p: SdkHttpParameter | SdkModelPropertyType, rootApiVersions: string[], -): InputHttpParameter | undefined { +): [InputHttpParameter | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + let parameter = sdkContext.__typeCache.operationParameters.get(p); if (parameter) { - return parameter; + return diagnostics.wrap(parameter); } const parameterKind = p.kind; switch (parameterKind) { case "query": - parameter = fromQueryParameter(sdkContext, p, rootApiVersions); + parameter = diagnostics.pipe(fromQueryParameter(sdkContext, p, rootApiVersions)); break; case "path": - parameter = fromPathParameter(sdkContext, p, rootApiVersions); + parameter = diagnostics.pipe(fromPathParameter(sdkContext, p, rootApiVersions)); break; case "header": - parameter = fromHeaderParameter(sdkContext, p, rootApiVersions); + parameter = diagnostics.pipe(fromHeaderParameter(sdkContext, p, rootApiVersions)); break; case "body": - parameter = fromBodyParameter(sdkContext, p, rootApiVersions); + parameter = diagnostics.pipe(fromBodyParameter(sdkContext, p, rootApiVersions)); break; default: - sdkContext.logger.reportDiagnostic({ - code: "unsupported-parameter-kind", - format: { parameterKind }, - target: p.__raw ?? NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "unsupported-parameter-kind", + format: { parameterKind }, + target: p.__raw ?? NoTarget, + }), + ); parameter = undefined; break; } @@ -424,15 +474,16 @@ export function fromParameter( if (parameter) { sdkContext.__typeCache.operationParameters.set(p, parameter); } - return parameter; + return diagnostics.wrap(parameter); } function fromQueryParameter( sdkContext: CSharpEmitterContext, p: SdkQueryParameter, rootApiVersions: string[], -): InputQueryParameter { - const parameterType = fromSdkType(sdkContext, p.type, p); +): [InputQueryParameter, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + const parameterType = diagnostics.pipe(fromSdkType(sdkContext, p.type, p)); const retVar: InputQueryParameter = { kind: "query", @@ -443,26 +494,29 @@ function fromQueryParameter( type: parameterType, isApiVersion: p.isApiVersionParam, explode: isExploded(p), - defaultValue: getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + defaultValue: diagnostics.pipe( + getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + ), arraySerializationDelimiter: getArraySerializationDelimiter(p), optional: p.optional, scope: getParameterScope(p, parameterType, rootApiVersions.length > 0), decorators: p.decorators, crossLanguageDefinitionId: p.crossLanguageDefinitionId, readOnly: isReadOnly(p), - methodParameterSegments: getMethodParameterSegments(sdkContext, p), + methodParameterSegments: diagnostics.pipe(getMethodParameterSegments(sdkContext, p)), }; sdkContext.__typeCache.updateSdkOperationParameterReferences(p, retVar); - return retVar; + return diagnostics.wrap(retVar); } function fromPathParameter( sdkContext: CSharpEmitterContext, p: SdkPathParameter, rootApiVersions: string[], -): InputPathParameter { - const parameterType = fromSdkType(sdkContext, p.type, p); +): [InputPathParameter, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + const parameterType = diagnostics.pipe(fromSdkType(sdkContext, p.type, p)); const retVar: InputPathParameter = { kind: "path", @@ -476,25 +530,28 @@ function fromPathParameter( style: p.style, allowReserved: p.allowReserved, skipUrlEncoding: p.allowReserved, - defaultValue: getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + defaultValue: diagnostics.pipe( + getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + ), optional: p.optional, scope: getParameterScope(p, parameterType, rootApiVersions.length > 0), decorators: p.decorators, readOnly: isReadOnly(p), crossLanguageDefinitionId: p.crossLanguageDefinitionId, - methodParameterSegments: getMethodParameterSegments(sdkContext, p), + methodParameterSegments: diagnostics.pipe(getMethodParameterSegments(sdkContext, p)), }; sdkContext.__typeCache.updateSdkOperationParameterReferences(p, retVar); - return retVar; + return diagnostics.wrap(retVar); } function fromHeaderParameter( sdkContext: CSharpEmitterContext, p: SdkHeaderParameter, rootApiVersions: string[], -): InputHeaderParameter { - const parameterType = fromSdkType(sdkContext, p.type, p); +): [InputHeaderParameter, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + const parameterType = diagnostics.pipe(fromSdkType(sdkContext, p.type, p)); const retVar: InputHeaderParameter = { kind: "header", @@ -506,27 +563,30 @@ function fromHeaderParameter( isApiVersion: p.isApiVersionParam, collectionFormat: p.collectionFormat, arraySerializationDelimiter: getArraySerializationDelimiter(p), - defaultValue: getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + defaultValue: diagnostics.pipe( + getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + ), optional: p.optional, isContentType: isContentType(p), scope: getParameterScope(p, parameterType, rootApiVersions.length > 0), readOnly: isReadOnly(p), decorators: p.decorators, crossLanguageDefinitionId: p.crossLanguageDefinitionId, - methodParameterSegments: getMethodParameterSegments(sdkContext, p), - collectionHeaderPrefix: getCollectionHeaderPrefix(sdkContext, p), + methodParameterSegments: diagnostics.pipe(getMethodParameterSegments(sdkContext, p)), + collectionHeaderPrefix: diagnostics.pipe(getCollectionHeaderPrefix(sdkContext, p)), }; sdkContext.__typeCache.updateSdkOperationParameterReferences(p, retVar); - return retVar; + return diagnostics.wrap(retVar); } function fromBodyParameter( sdkContext: CSharpEmitterContext, p: SdkBodyParameter, rootApiVersions: string[], -): InputBodyParameter { - const parameterType = fromSdkType(sdkContext, p.type, p); +): [InputBodyParameter, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + const parameterType = diagnostics.pipe(fromSdkType(sdkContext, p.type, p)); const retVar: InputBodyParameter = { kind: "body", @@ -543,24 +603,28 @@ function fromBodyParameter( decorators: p.decorators, readOnly: isReadOnly(p), crossLanguageDefinitionId: p.crossLanguageDefinitionId, - methodParameterSegments: getMethodParameterSegments(sdkContext, p), + methodParameterSegments: diagnostics.pipe(getMethodParameterSegments(sdkContext, p)), }; sdkContext.__typeCache.updateSdkOperationParameterReferences(p, retVar); - return retVar; + return diagnostics.wrap(retVar); } export function fromMethodParameter( sdkContext: CSharpEmitterContext, p: SdkMethodParameter, namespace: string, -): InputMethodParameter { +): [InputMethodParameter, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + let retVar = sdkContext.__typeCache.methodParmeters.get(p); if (retVar) { - return retVar as InputMethodParameter; + return diagnostics.wrap(retVar as InputMethodParameter); } - const parameterType = fromSdkType(sdkContext, p.type, p, namespace); + const parameterType = diagnostics.pipe(fromSdkType(sdkContext, p.type, p, namespace)); + + const paramAlias = p.__raw ? getParamAlias(sdkContext, p.__raw) : undefined; retVar = { kind: "method", @@ -571,24 +635,29 @@ export function fromMethodParameter( type: parameterType, location: RequestLocation.None, isApiVersion: p.isApiVersionParam, - defaultValue: getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + defaultValue: diagnostics.pipe( + getParameterDefaultValue(sdkContext, p.clientDefaultValue, parameterType), + ), optional: p.optional, scope: InputParameterScope.Method, crossLanguageDefinitionId: p.crossLanguageDefinitionId, readOnly: isReadOnly(p), access: p.access, decorators: p.decorators, + paramAlias, }; sdkContext.__typeCache.updateSdkMethodParameterReferences(p, retVar); - return retVar; + return diagnostics.wrap(retVar); } function loadLongRunningMetadata( sdkContext: CSharpEmitterContext, method: SdkLroServiceMethod | SdkLroPagingServiceMethod, -): InputLongRunningServiceMetadata { - return { +): [InputLongRunningServiceMetadata, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + + return diagnostics.wrap({ finalStateVia: convertLroFinalStateVia(method.lroMetadata.finalStateVia), finalResponse: { // in swagger, we allow delete to return some meaningful body content @@ -596,60 +665,70 @@ function loadLongRunningMetadata( statusCodes: method.operation.verb === "delete" ? [204] : [200], bodyType: method.lroMetadata.finalResponse?.envelopeResult !== undefined - ? fromSdkType(sdkContext, method.lroMetadata.finalResponse.envelopeResult) + ? diagnostics.pipe( + fromSdkType(sdkContext, method.lroMetadata.finalResponse.envelopeResult), + ) : undefined, } as OperationResponse, resultPath: method.lroMetadata.finalResultPath, - }; + }); } function fromSdkHttpOperationResponses( sdkContext: CSharpEmitterContext, operationResponses: SdkHttpResponse[], -): OperationResponse[] { +): [OperationResponse[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const responses: OperationResponse[] = []; + for (const r of operationResponses) { - responses.push(fromSdkHttpOperationResponse(sdkContext, r)); + responses.push(diagnostics.pipe(fromSdkHttpOperationResponse(sdkContext, r))); } - return responses; + return diagnostics.wrap(responses); } export function fromSdkHttpOperationResponse( sdkContext: CSharpEmitterContext, sdkResponse: SdkHttpResponse, -): OperationResponse { +): [OperationResponse, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + let retVar = sdkContext.__typeCache.responses.get(sdkResponse); if (retVar) { - return retVar; + return diagnostics.wrap(retVar); } const range = sdkResponse.statusCodes; retVar = { statusCodes: toStatusCodesArray(range), - bodyType: getResponseType(sdkContext, sdkResponse.type), - headers: fromSdkServiceResponseHeaders(sdkContext, sdkResponse.headers), + bodyType: diagnostics.pipe(getResponseType(sdkContext, sdkResponse.type)), + headers: diagnostics.pipe(fromSdkServiceResponseHeaders(sdkContext, sdkResponse.headers)), isErrorResponse: sdkResponse.type !== undefined && isErrorModel(sdkContext.program, sdkResponse.type.__raw!), contentTypes: sdkResponse.contentTypes, }; sdkContext.__typeCache.updateSdkResponseReferences(sdkResponse, retVar); - return retVar; + return diagnostics.wrap(retVar); } function fromSdkServiceResponseHeaders( sdkContext: CSharpEmitterContext, headers: SdkServiceResponseHeader[], -): HttpResponseHeader[] { - return headers.map( - (h) => - ({ - name: h.__raw!.name, - nameInResponse: h.serializedName, - summary: h.summary, - doc: h.doc, - type: fromSdkType(sdkContext, h.type), - }) as HttpResponseHeader, +): [HttpResponseHeader[], readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + + return diagnostics.wrap( + headers.map( + (h) => + ({ + name: h.__raw!.name, + nameInResponse: h.serializedName, + summary: h.summary, + doc: h.doc, + type: diagnostics.pipe(fromSdkType(sdkContext, h.type)), + }) as HttpResponseHeader, + ), ); } @@ -702,27 +781,29 @@ function loadPagingServiceMetadata( rootApiVersions: string[], uri: string, namespace: string, -): InputPagingServiceMetadata { +): [InputPagingServiceMetadata, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + let nextLink: InputNextLink | undefined; if (method.pagingMetadata.nextLinkSegments) { nextLink = { responseSegments: method.pagingMetadata.nextLinkSegments.map((segment) => getResponseSegmentName(segment), ), - responseLocation: getResponseLocation( - context, - method, - method.pagingMetadata.nextLinkSegments[0], + responseLocation: diagnostics.pipe( + getResponseLocation(context, method, method.pagingMetadata.nextLinkSegments[0]), ), }; if (method.pagingMetadata.nextLinkOperation) { - nextLink.operation = fromSdkServiceMethod( - context, - method.pagingMetadata.nextLinkOperation, - uri, - rootApiVersions, - namespace, + nextLink.operation = diagnostics.pipe( + fromSdkServiceMethod( + context, + method.pagingMetadata.nextLinkOperation, + uri, + rootApiVersions, + namespace, + ), ); } @@ -738,7 +819,9 @@ function loadPagingServiceMetadata( ] as SdkModelPropertyType; const operationParameter = getHttpOperationParameter(method, lastParameterSegment); if (operationParameter) { - const parameter = fromParameter(context, operationParameter, rootApiVersions); + const parameter = diagnostics.pipe( + fromParameter(context, operationParameter, rootApiVersions), + ); if (parameter) { nextLinkReInjectedParameters.push(parameter); } @@ -759,10 +842,12 @@ function loadPagingServiceMetadata( const lastParameterSegment = method.pagingMetadata.continuationTokenParameterSegments[ method.pagingMetadata.continuationTokenParameterSegments.length - 1 ] as SdkModelPropertyType; - const continuationTokenParameter = fromParameter( - context, - getHttpOperationParameter(method, lastParameterSegment)!, - rootApiVersions, + const continuationTokenParameter = diagnostics.pipe( + fromParameter( + context, + getHttpOperationParameter(method, lastParameterSegment)!, + rootApiVersions, + ), ); if (continuationTokenParameter) { continuationToken = { @@ -770,10 +855,12 @@ function loadPagingServiceMetadata( responseSegments: method.pagingMetadata.continuationTokenResponseSegments!.map((segment) => getResponseSegmentName(segment), ), - responseLocation: getResponseLocation( - context, - method, - method.pagingMetadata.continuationTokenResponseSegments?.[0], + responseLocation: diagnostics.pipe( + getResponseLocation( + context, + method, + method.pagingMetadata.continuationTokenResponseSegments?.[0], + ), ), }; } @@ -786,12 +873,12 @@ function loadPagingServiceMetadata( ); } - return { + return diagnostics.wrap({ itemPropertySegments: method.response.resultSegments!.map((s) => getResponseSegmentName(s)), nextLink: nextLink, continuationToken: continuationToken, pageSizeParameterSegments: pageSizeParameterSegments, - }; + }); } function getResponseSegmentName(segment: SdkServiceResponseHeader | SdkModelPropertyType): string { @@ -810,23 +897,27 @@ function getResponseLocation( context: CSharpEmitterContext, method: SdkPagingServiceMethod | SdkLroPagingServiceMethod, p: SdkServiceResponseHeader | SdkModelPropertyType, -): ResponseLocation { +): [ResponseLocation, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + if (p.kind === "responseheader") { - return ResponseLocation.Header; + return diagnostics.wrap(ResponseLocation.Header); } if (isHttpMetadata(context, p)) { - context.logger.reportDiagnostic({ - code: "unsupported-continuation-location", - format: { - crossLanguageDefinitionId: method.crossLanguageDefinitionId, - }, - target: NoTarget, - }); - return ResponseLocation.None; + diagnostics.add( + createDiagnostic({ + code: "unsupported-continuation-location", + format: { + crossLanguageDefinitionId: method.crossLanguageDefinitionId, + }, + target: NoTarget, + }), + ); + return diagnostics.wrap(ResponseLocation.None); } - return ResponseLocation.Body; + return diagnostics.wrap(ResponseLocation.Body); } // TODO: https://github.com/Azure/typespec-azure/issues/1441 @@ -937,19 +1028,20 @@ function getArraySerializationDelimiter( export function getMethodParameterSegments( sdkContext: CSharpEmitterContext, p: SdkHttpParameter | SdkModelPropertyType, -): InputMethodParameter[] | undefined { +): [InputMethodParameter[] | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); // methodParameterSegments is a 2D array where each segment array represents a path to a method parameter // For spread body cases, there could be multiple paths, but we simplify by taking the first element // We need the complete segment path (e.g., ['Params', 'foo'] for accessing params.foo) const methodParameterSegments = (p as any).methodParameterSegments; if (!methodParameterSegments || methodParameterSegments.length === 0) { - return undefined; + return diagnostics.wrap(undefined); } // Take the first segment path (simplification - no spector scenario for multiple paths yet) const firstSegmentPath = methodParameterSegments[0]; if (!firstSegmentPath || firstSegmentPath.length === 0) { - return undefined; + return diagnostics.wrap(undefined); } const namespace = getClientNamespaceString(sdkContext) ?? ""; @@ -959,18 +1051,20 @@ export function getMethodParameterSegments( // This preserves the full path information (e.g., ['Params', 'foo']) for (const segment of firstSegmentPath) { const methodParam = segment as SdkMethodParameter; - methodParams.push(fromMethodParameter(sdkContext, methodParam, namespace)); + methodParams.push(diagnostics.pipe(fromMethodParameter(sdkContext, methodParam, namespace))); } - return methodParams.length > 0 ? methodParams : undefined; + return diagnostics.wrap(methodParams.length > 0 ? methodParams : undefined); } function getResponseType( sdkContext: CSharpEmitterContext, type: SdkType | undefined, -): InputType | undefined { +): [InputType | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + if (!type) { - return undefined; + return diagnostics.wrap(undefined); } // handle anonymous union enum response types by defaulting to the enum value type in the case of @@ -984,25 +1078,28 @@ function getResponseType( function getCollectionHeaderPrefix( sdkContext: CSharpEmitterContext, p: SdkHeaderParameter, -): string | undefined { +): [string | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const value = getClientOptions(p, "collectionHeaderPrefix"); if (value === undefined) { - return undefined; + return diagnostics.wrap(undefined); } // Only apply to dictionary types (unwrap nullable) const rawType = p.type.kind === "nullable" ? p.type.type : p.type; if (rawType.kind !== "dict") { - return undefined; + return diagnostics.wrap(undefined); } if (typeof value !== "string") { - sdkContext.logger.reportDiagnostic({ - code: "general-warning", - format: { - message: `The 'collectionHeaderPrefix' client option must be a string value, but got '${typeof value}'. The option will be ignored.`, - }, - target: p.__raw ?? NoTarget, - }); - return undefined; - } - return value; + diagnostics.add( + createDiagnostic({ + code: "general-warning", + format: { + message: `The 'collectionHeaderPrefix' client option must be a string value, but got '${typeof value}'. The option will be ignored.`, + }, + target: p.__raw ?? NoTarget, + }), + ); + return diagnostics.wrap(undefined); + } + return diagnostics.wrap(value); } diff --git a/packages/http-client-csharp/emitter/src/lib/service-authentication.ts b/packages/http-client-csharp/emitter/src/lib/service-authentication.ts index 728cd30c5f2..52b1b44de5a 100644 --- a/packages/http-client-csharp/emitter/src/lib/service-authentication.ts +++ b/packages/http-client-csharp/emitter/src/lib/service-authentication.ts @@ -7,16 +7,18 @@ import { SdkHttpOperation, SdkPackage, } from "@azure-tools/typespec-client-generator-core"; -import { NoTarget } from "@typespec/compiler"; +import { createDiagnosticCollector, Diagnostic, NoTarget } from "@typespec/compiler"; import { Oauth2Auth, OAuth2Flow } from "@typespec/http"; import { CSharpEmitterContext } from "../sdk-context.js"; import { InputAuth } from "../type/input-auth.js"; import { InputOAuth2Flow } from "../type/input-oauth2-auth.js"; +import { createDiagnostic } from "./lib.js"; export function processServiceAuthentication( sdkContext: CSharpEmitterContext, sdkPackage: SdkPackage, -): InputAuth | undefined { +): [InputAuth | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); let authClientParameter: SdkCredentialParameter | undefined = undefined; for (const client of sdkPackage.clients) { for (const parameter of client.clientInitialization.parameters) { @@ -28,29 +30,31 @@ export function processServiceAuthentication( } if (!authClientParameter) { - return undefined; + return diagnostics.wrap(undefined); } const inputAuth: InputAuth = {}; if (authClientParameter.type.kind === "credential") { - const auth = processAuthType(sdkContext, authClientParameter.type); + const auth = diagnostics.pipe(processAuthType(sdkContext, authClientParameter.type)); if (!auth && authClientParameter.type.scheme.type !== "noAuth") { - sdkContext.logger.reportDiagnostic({ - code: "unsupported-auth", - messageId: "onlyUnsupportedAuthProvided", - target: authClientParameter.type.__raw ?? NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "unsupported-auth", + messageId: "onlyUnsupportedAuthProvided", + target: authClientParameter.type.__raw ?? NoTarget, + }), + ); - return inputAuth; + return diagnostics.wrap(inputAuth); } - return auth; + return diagnostics.wrap(auth); } let containsNoAuth = false; for (const authType of authClientParameter.type.variantTypes) { containsNoAuth = containsNoAuth || authType.scheme.type === "noAuth"; - const auth = processAuthType(sdkContext, authType); + const auth = diagnostics.pipe(processAuthType(sdkContext, authType)); if (auth?.apiKey) { inputAuth.apiKey = auth.apiKey; } @@ -60,75 +64,86 @@ export function processServiceAuthentication( } if (containsNoAuth && !inputAuth.apiKey && !inputAuth.oAuth2) { - return undefined; + return diagnostics.wrap(undefined); } if (!inputAuth?.apiKey && !inputAuth?.oAuth2) { - sdkContext.logger.reportDiagnostic({ - code: "unsupported-auth", - messageId: "onlyUnsupportedAuthProvided", - target: authClientParameter.type.__raw ?? NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "unsupported-auth", + messageId: "onlyUnsupportedAuthProvided", + target: authClientParameter.type.__raw ?? NoTarget, + }), + ); } - return inputAuth; + return diagnostics.wrap(inputAuth); } function processAuthType( sdkContext: CSharpEmitterContext, credentialType: SdkCredentialType, -): InputAuth | undefined { +): [InputAuth | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const scheme = credentialType.scheme; switch (scheme.type) { case "apiKey": if (scheme.in !== "header") { - sdkContext.logger.reportDiagnostic({ - code: "unsupported-auth", - format: { - message: `Only header is supported for ApiKey authentication. ${scheme.in} is not supported.`, - }, - target: credentialType.__raw ?? NoTarget, - }); - return undefined; + diagnostics.add( + createDiagnostic({ + code: "unsupported-auth", + format: { + message: `Only header is supported for ApiKey authentication. ${scheme.in} is not supported.`, + }, + target: credentialType.__raw ?? NoTarget, + }), + ); + return diagnostics.wrap(undefined); } - return { apiKey: { name: scheme.name, in: scheme.in } } as InputAuth; + return diagnostics.wrap({ apiKey: { name: scheme.name, in: scheme.in } } as InputAuth); case "oauth2": - return processOAuth2(scheme); + return diagnostics.wrap(processOAuth2(scheme)); case "http": { const schemeOrApiKeyPrefix = scheme.scheme; switch (schemeOrApiKeyPrefix) { case "Basic": - sdkContext.logger.reportDiagnostic({ - code: "unsupported-auth", - format: { message: `${schemeOrApiKeyPrefix} auth method is currently not supported.` }, - target: credentialType.__raw ?? NoTarget, - }); - return undefined; + diagnostics.add( + createDiagnostic({ + code: "unsupported-auth", + format: { + message: `${schemeOrApiKeyPrefix} auth method is currently not supported.`, + }, + target: credentialType.__raw ?? NoTarget, + }), + ); + return diagnostics.wrap(undefined); case "Bearer": - return { + return diagnostics.wrap({ apiKey: { name: "Authorization", in: "header", prefix: "Bearer", }, - }; + }); default: - return { + return diagnostics.wrap({ apiKey: { name: "Authorization", in: "header", prefix: schemeOrApiKeyPrefix, }, - }; + }); } } default: - sdkContext.logger.reportDiagnostic({ - code: "unsupported-auth", - format: { message: `un-supported authentication scheme ${scheme.type}` }, - target: credentialType.__raw ?? NoTarget, - }); - return undefined; + diagnostics.add( + createDiagnostic({ + code: "unsupported-auth", + format: { message: `un-supported authentication scheme ${scheme.type}` }, + target: credentialType.__raw ?? NoTarget, + }), + ); + return diagnostics.wrap(undefined); } } diff --git a/packages/http-client-csharp/emitter/src/lib/type-converter.ts b/packages/http-client-csharp/emitter/src/lib/type-converter.ts index 7107cc7d4b1..ded35eb85e8 100644 --- a/packages/http-client-csharp/emitter/src/lib/type-converter.ts +++ b/packages/http-client-csharp/emitter/src/lib/type-converter.ts @@ -3,6 +3,8 @@ import { DecoratorInfo, + getAccessOverride, + isHttpMetadata, SdkArrayType, SdkBuiltInType, SdkConstantType, @@ -17,10 +19,8 @@ import { SdkType, SdkUnionType, UsageFlags, - getAccessOverride, - isHttpMetadata, } from "@azure-tools/typespec-client-generator-core"; -import { Model, NoTarget } from "@typespec/compiler"; +import { createDiagnosticCollector, Diagnostic, Model, NoTarget } from "@typespec/compiler"; import { CSharpEmitterContext } from "../sdk-context.js"; import { InputArrayType, @@ -39,6 +39,7 @@ import { InputType, InputUnionType, } from "../type/input-type.js"; +import { createDiagnostic } from "./lib.js"; import { isReadOnly } from "./utils.js"; // we have this complicated type here to let the caller of fromSdkType could infer the real return type of this function. @@ -75,36 +76,37 @@ export function fromSdkType( sdkType: T, sdkProperty?: SdkModelPropertyTypeBase, namespace?: string, -): InputReturnType { +): [InputReturnType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); let retVar = sdkContext.__typeCache.types.get(sdkType); if (retVar) { - return retVar as any; + return diagnostics.wrap(retVar as any); } switch (sdkType.kind) { case "nullable": const nullableType: InputNullableType = { kind: "nullable", - type: fromSdkType(sdkContext, sdkType.type, sdkProperty, namespace), + type: diagnostics.pipe(fromSdkType(sdkContext, sdkType.type, sdkProperty, namespace)), namespace: sdkType.namespace, external: fromSdkExternalTypeInfo(sdkType), }; retVar = nullableType; break; case "model": - retVar = fromSdkModelType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkModelType(sdkContext, sdkType)); break; case "enum": - retVar = fromSdkEnumType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkEnumType(sdkContext, sdkType)); break; case "enumvalue": - retVar = fromSdkEnumValueType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkEnumValueType(sdkContext, sdkType)); break; case "dict": - retVar = fromSdkDictionaryType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkDictionaryType(sdkContext, sdkType)); break; case "array": - retVar = fromSdkArrayType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkArrayType(sdkContext, sdkType)); break; case "constant": // Don't transform optional Content-Type headers into enums - keep them as constants @@ -124,27 +126,29 @@ export function fromSdkType( sdkType.valueType.kind !== "boolean" ) { // turn the constant into an extensible enum - retVar = createEnumType(sdkContext, sdkType, namespace!); + retVar = diagnostics.pipe(createEnumType(sdkContext, sdkType, namespace!)); } else { - retVar = fromSdkConstantType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkConstantType(sdkContext, sdkType)); } break; case "union": - retVar = fromUnionType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromUnionType(sdkContext, sdkType)); break; case "utcDateTime": case "offsetDateTime": - retVar = fromSdkDateTimeType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkDateTimeType(sdkContext, sdkType)); break; case "duration": - retVar = fromSdkDurationType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkDurationType(sdkContext, sdkType)); break; case "tuple": - sdkContext.logger.reportDiagnostic({ - code: "unsupported-sdk-type", - format: { sdkType: "tuple" }, - target: sdkType.__raw ?? NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "unsupported-sdk-type", + format: { sdkType: "tuple" }, + target: sdkType.__raw ?? NoTarget, + }), + ); const tupleType: InputPrimitiveType = { kind: "unknown", name: "tuple", @@ -160,11 +164,13 @@ export function fromSdkType( retVar = fromSdkEndpointType(); break; case "credential": - sdkContext.logger.reportDiagnostic({ - code: "unsupported-sdk-type", - format: { sdkType: "credential" }, - target: sdkType.__raw ?? NoTarget, - }); + diagnostics.add( + createDiagnostic({ + code: "unsupported-sdk-type", + format: { sdkType: "credential" }, + target: sdkType.__raw ?? NoTarget, + }), + ); const credentialType: InputPrimitiveType = { kind: "unknown", name: "credential", @@ -175,19 +181,20 @@ export function fromSdkType( retVar = credentialType; break; default: - retVar = fromSdkBuiltInType(sdkContext, sdkType); + retVar = diagnostics.pipe(fromSdkBuiltInType(sdkContext, sdkType)); break; } sdkContext.__typeCache.updateSdkTypeReferences(sdkType, retVar); // we have to cast to any because TypeScript's type narrowing does not automatically infer the return type for conditional types - return retVar as any; + return diagnostics.wrap(retVar as any); } function fromSdkModelType( sdkContext: CSharpEmitterContext, modelType: SdkModelType, -): InputModelType { +): [InputModelType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); // get all unique decorators for the model type from the namespace level and the model level let decorators: DecoratorInfo[] = modelType.decorators; const namespace = sdkContext.__typeCache.namespaces.get(modelType.namespace); @@ -213,12 +220,12 @@ function fromSdkModelType( sdkContext.__typeCache.updateSdkTypeReferences(modelType, inputModelType); inputModelType.additionalProperties = modelType.additionalProperties - ? fromSdkType(sdkContext, modelType.additionalProperties) + ? diagnostics.pipe(fromSdkType(sdkContext, modelType.additionalProperties)) : undefined; const properties: InputModelProperty[] = []; for (const property of modelType.properties) { - const ourProperty = fromSdkModelProperty(sdkContext, property, modelType); + const ourProperty = diagnostics.pipe(fromSdkModelProperty(sdkContext, property, modelType)); if (ourProperty) { properties.push(ourProperty); @@ -226,11 +233,11 @@ function fromSdkModelType( } inputModelType.discriminatorProperty = modelType.discriminatorProperty - ? fromSdkModelProperty(sdkContext, modelType.discriminatorProperty, modelType) + ? diagnostics.pipe(fromSdkModelProperty(sdkContext, modelType.discriminatorProperty, modelType)) : undefined; inputModelType.baseModel = modelType.baseModel - ? fromSdkType(sdkContext, modelType.baseModel) + ? diagnostics.pipe(fromSdkType(sdkContext, modelType.baseModel)) : undefined; inputModelType.properties = properties; @@ -239,25 +246,26 @@ function fromSdkModelType( const discriminatedSubtypes: Record = {}; for (const key in modelType.discriminatedSubtypes) { const subtype = modelType.discriminatedSubtypes[key]; - discriminatedSubtypes[key] = fromSdkType(sdkContext, subtype); + discriminatedSubtypes[key] = diagnostics.pipe(fromSdkType(sdkContext, subtype)); } inputModelType.discriminatedSubtypes = discriminatedSubtypes; } - return inputModelType; + return diagnostics.wrap(inputModelType); } function fromSdkModelProperty( sdkContext: CSharpEmitterContext, sdkProperty: SdkModelPropertyType, sdkModel: SdkModelType, -): InputModelProperty | undefined { +): [InputModelProperty | undefined, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); // TODO -- this returns undefined because some properties we do not support yet. let property = sdkContext.__typeCache.properties.get(sdkProperty) as | InputModelProperty | undefined; if (property) { - return property; + return diagnostics.wrap(property); } const serializedName = @@ -270,7 +278,9 @@ function fromSdkModelProperty( serializedName: serializedName, summary: sdkProperty.summary, doc: sdkProperty.doc, - type: fromSdkType(sdkContext, sdkProperty.type, sdkProperty, sdkModel.namespace), + type: diagnostics.pipe( + fromSdkType(sdkContext, sdkProperty.type, sdkProperty, sdkModel.namespace), + ), optional: sdkProperty.optional, readOnly: isReadOnly(sdkProperty), discriminator: sdkProperty.discriminator, @@ -287,18 +297,25 @@ function fromSdkModelProperty( sdkContext.__typeCache.updateSdkPropertyReferences(sdkProperty, property); } - return property; + return diagnostics.wrap(property); } -function fromSdkEnumType(sdkContext: CSharpEmitterContext, enumType: SdkEnumType): InputEnumType { - return createEnumType(sdkContext, enumType, enumType.namespace); +function fromSdkEnumType( + sdkContext: CSharpEmitterContext, + enumType: SdkEnumType, +): [InputEnumType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap( + diagnostics.pipe(createEnumType(sdkContext, enumType, enumType.namespace)), + ); } function createEnumType( sdkContext: CSharpEmitterContext, sdkType: SdkConstantType | SdkEnumType, namespace: string, -): InputEnumType { +): [InputEnumType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const values: InputEnumValueType[] = []; const inputEnumType: InputEnumType = { @@ -307,8 +324,8 @@ function createEnumType( crossLanguageDefinitionId: sdkType.kind === "enum" ? sdkType.crossLanguageDefinitionId : "", valueType: sdkType.kind === "enum" - ? fromSdkType(sdkContext, sdkType.valueType) - : fromSdkBuiltInType(sdkContext, sdkType.valueType), + ? (diagnostics.pipe(fromSdkType(sdkContext, sdkType.valueType)) as InputPrimitiveType) + : diagnostics.pipe(fromSdkBuiltInType(sdkContext, sdkType.valueType)), values: values, // constantType.access, TODO - constant type now does not have access. TCGC will add it later access: @@ -329,112 +346,130 @@ function createEnumType( if (sdkType.kind === "enum") { for (const v of sdkType.values) { - values.push(createEnumValueType(sdkContext, v, inputEnumType)); + values.push(diagnostics.pipe(createEnumValueType(sdkContext, v, inputEnumType))); } } else { - values.push(createEnumValueType(sdkContext, sdkType, inputEnumType)); + values.push(diagnostics.pipe(createEnumValueType(sdkContext, sdkType, inputEnumType))); } - return inputEnumType; + return diagnostics.wrap(inputEnumType); } function fromSdkDateTimeType( sdkContext: CSharpEmitterContext, dateTimeType: SdkDateTimeType, -): InputDateTimeType { - return { +): [InputDateTimeType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap({ kind: dateTimeType.kind, name: dateTimeType.name, encode: dateTimeType.encode, - wireType: fromSdkType(sdkContext, dateTimeType.wireType), + wireType: diagnostics.pipe(fromSdkType(sdkContext, dateTimeType.wireType)), crossLanguageDefinitionId: dateTimeType.crossLanguageDefinitionId, - baseType: dateTimeType.baseType ? fromSdkType(sdkContext, dateTimeType.baseType) : undefined, + baseType: dateTimeType.baseType + ? diagnostics.pipe(fromSdkType(sdkContext, dateTimeType.baseType)) + : undefined, decorators: dateTimeType.decorators, external: fromSdkExternalTypeInfo(dateTimeType), - }; + }); } function fromSdkDurationType( sdkContext: CSharpEmitterContext, durationType: SdkDurationType, -): InputDurationType { - return { +): [InputDurationType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap({ kind: durationType.kind, name: durationType.name, encode: durationType.encode, - wireType: fromSdkType(sdkContext, durationType.wireType), + wireType: diagnostics.pipe(fromSdkType(sdkContext, durationType.wireType)), crossLanguageDefinitionId: durationType.crossLanguageDefinitionId, - baseType: durationType.baseType ? fromSdkType(sdkContext, durationType.baseType) : undefined, + baseType: durationType.baseType + ? diagnostics.pipe(fromSdkType(sdkContext, durationType.baseType)) + : undefined, decorators: durationType.decorators, external: fromSdkExternalTypeInfo(durationType), - }; + }); } function fromSdkBuiltInType( sdkContext: CSharpEmitterContext, builtInType: SdkBuiltInType, -): InputPrimitiveType { - return { +): [InputPrimitiveType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap({ kind: builtInType.kind, name: builtInType.name, encode: builtInType.encode !== builtInType.kind ? builtInType.encode : undefined, crossLanguageDefinitionId: builtInType.crossLanguageDefinitionId, - baseType: builtInType.baseType ? fromSdkType(sdkContext, builtInType.baseType) : undefined, + baseType: builtInType.baseType + ? diagnostics.pipe(fromSdkType(sdkContext, builtInType.baseType)) + : undefined, decorators: builtInType.decorators, external: fromSdkExternalTypeInfo(builtInType), - }; + }); } -function fromUnionType(sdkContext: CSharpEmitterContext, union: SdkUnionType): InputUnionType { +function fromUnionType( + sdkContext: CSharpEmitterContext, + union: SdkUnionType, +): [InputUnionType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const variantTypes: InputType[] = []; for (const value of union.variantTypes) { - const variantType = fromSdkType(sdkContext, value); + const variantType = diagnostics.pipe(fromSdkType(sdkContext, value)); variantTypes.push(variantType); } - return { + return diagnostics.wrap({ kind: "union", name: union.name, variantTypes: variantTypes, namespace: union.namespace, decorators: union.decorators, external: fromSdkExternalTypeInfo(union), - }; + }); } function fromSdkConstantType( sdkContext: CSharpEmitterContext, constantType: SdkConstantType, -): InputLiteralType { +): [InputLiteralType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); const literalType = { kind: constantType.kind, name: constantType.name, namespace: "", // constantType.namespace, TODO - constant type now does not have namespace. TCGC will add it later access: undefined, // constantType.access, TODO - constant type now does not have access. TCGC will add it later usage: UsageFlags.None, // constantType.usage, TODO - constant type now does not have usage. TCGC will add it later - valueType: fromSdkType(sdkContext, constantType.valueType), + valueType: diagnostics.pipe(fromSdkType(sdkContext, constantType.valueType)), value: constantType.value, decorators: constantType.decorators, }; sdkContext.__typeCache.updateConstantCache(constantType, literalType); - return literalType; + return diagnostics.wrap(literalType); } function fromSdkEnumValueType( sdkContext: CSharpEmitterContext, enumValueType: SdkEnumValueType, -): InputEnumValueType { - return createEnumValueType(sdkContext, enumValueType, enumValueType.enumType); +): [InputEnumValueType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap( + diagnostics.pipe(createEnumValueType(sdkContext, enumValueType, enumValueType.enumType)), + ); } function createEnumValueType( sdkContext: CSharpEmitterContext, sdkType: SdkEnumValueType | SdkConstantType, enumType: InputEnumType, -): InputEnumValueType { - return { +): [InputEnumValueType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap({ kind: "enumvalue", name: sdkType.kind === "constant" @@ -444,39 +479,43 @@ function createEnumValueType( : sdkType.name, value: typeof sdkType.value === "boolean" ? (sdkType.value ? 1 : 0) : sdkType.value, valueType: - sdkType.kind === "constant" ? sdkType.valueType : fromSdkType(sdkContext, sdkType.valueType), + sdkType.kind === "constant" + ? sdkType.valueType + : diagnostics.pipe(fromSdkType(sdkContext, sdkType.valueType)), enumType: enumType, summary: sdkType.summary, doc: sdkType.doc, decorators: sdkType.decorators, - }; + }); } function fromSdkDictionaryType( sdkContext: CSharpEmitterContext, dictionaryType: SdkDictionaryType, -): InputDictionaryType { - return { +): [InputDictionaryType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap({ kind: "dict", - keyType: fromSdkType(sdkContext, dictionaryType.keyType), - valueType: fromSdkType(sdkContext, dictionaryType.valueType), + keyType: diagnostics.pipe(fromSdkType(sdkContext, dictionaryType.keyType)), + valueType: diagnostics.pipe(fromSdkType(sdkContext, dictionaryType.valueType)), decorators: dictionaryType.decorators, external: fromSdkExternalTypeInfo(dictionaryType), - }; + }); } function fromSdkArrayType( sdkContext: CSharpEmitterContext, arrayType: SdkArrayType, -): InputArrayType { - return { +): [InputArrayType, readonly Diagnostic[]] { + const diagnostics = createDiagnosticCollector(); + return diagnostics.wrap({ kind: "array", name: arrayType.name, - valueType: fromSdkType(sdkContext, arrayType.valueType), + valueType: diagnostics.pipe(fromSdkType(sdkContext, arrayType.valueType)), crossLanguageDefinitionId: arrayType.crossLanguageDefinitionId, decorators: arrayType.decorators, external: fromSdkExternalTypeInfo(arrayType), - }; + }); } function fromSdkEndpointType(): InputPrimitiveType { diff --git a/packages/http-client-csharp/emitter/src/lib/typespec-server.ts b/packages/http-client-csharp/emitter/src/lib/typespec-server.ts index 77cfe50b341..f31b9830dda 100644 --- a/packages/http-client-csharp/emitter/src/lib/typespec-server.ts +++ b/packages/http-client-csharp/emitter/src/lib/typespec-server.ts @@ -2,7 +2,13 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import { getClientType } from "@azure-tools/typespec-client-generator-core"; -import { getDoc, getSummary, Value } from "@typespec/compiler"; +import { + createDiagnosticCollector, + Diagnostic, + getDoc, + getSummary, + Value, +} from "@typespec/compiler"; import { HttpServer } from "@typespec/http"; import { getExtensions } from "@typespec/openapi"; import { CSharpEmitterContext } from "../sdk-context.js"; @@ -20,8 +26,11 @@ export interface TypeSpecServer { export function resolveServers( sdkContext: CSharpEmitterContext, servers: HttpServer[], -): TypeSpecServer[] { - return servers.map((server) => { +): [TypeSpecServer[], readonly Diagnostic[]] { + // Create a diagnostics collector for internal use + const diagnostics = createDiagnosticCollector(); + + const result = servers.map((server) => { const parameters: InputEndpointParameter[] = []; let url: string = server.url; const endpoint: string = url.replace("http://", "").replace("https://", "").split("/")[0]; @@ -35,7 +44,7 @@ export function resolveServers( name: "url", crossLanguageDefinitionId: "TypeSpec.url", } - : fromSdkType(sdkContext, getClientType(sdkContext, prop)); + : diagnostics.pipe(fromSdkType(sdkContext, getClientType(sdkContext, prop))); if (value) { defaultValue = { @@ -101,6 +110,8 @@ export function resolveServers( parameters, }; }); + + return diagnostics.wrap(result); } function getDefaultValue(value: Value): any { diff --git a/packages/http-client-csharp/emitter/src/options.ts b/packages/http-client-csharp/emitter/src/options.ts index 42196440cac..b980b4121f8 100644 --- a/packages/http-client-csharp/emitter/src/options.ts +++ b/packages/http-client-csharp/emitter/src/options.ts @@ -1,10 +1,8 @@ import { CreateSdkContextOptions } from "@azure-tools/typespec-client-generator-core"; import { EmitContext, JSONSchemaType } from "@typespec/compiler"; import { _defaultGeneratorName } from "./constants.js"; -import { CSharpEmitterContext } from "./index.js"; import { DYNAMIC_MODEL_DECORATOR_PATTERN } from "./lib/decorators.js"; import { LoggerLevel } from "./lib/logger-level.js"; -import { CodeModel } from "./type/code-model.js"; /** * The emitter options for the CSharp emitter. @@ -20,7 +18,7 @@ export interface CSharpEmitterOptions { "disable-xml-docs"?: boolean; "generator-name"?: string; "emitter-extension-path"?: string; - "update-code-model"?: (model: CodeModel, context: CSharpEmitterContext) => CodeModel; + plugins?: string[]; "sdk-context-options"?: CreateSdkContextOptions; "generate-protocol-methods"?: boolean; "generate-convenience-methods"?: boolean; @@ -116,11 +114,13 @@ export const CSharpEmitterOptionsSchema: JSONSchemaType = description: "Allows emitter authors to specify the path to a custom emitter package, allowing you to extend the emitter behavior. This should be set to `import.meta.url` if you are using a custom emitter.", }, - "update-code-model": { - type: "object", + plugins: { + type: "array", + items: { type: "string" }, nullable: true, description: - "Allows emitter authors to specify a custom function to modify the generated code model before emitting. This is useful for modifying the code model before it is passed to the generator.", + "Paths to generator plugin assemblies (DLLs) or directories containing plugin assemblies. " + + "Each plugin must contain a class that extends GeneratorPlugin.", }, license: { type: "object", @@ -160,7 +160,6 @@ export const defaultOptions = { debug: undefined, logLevel: LoggerLevel.INFO, "generator-name": _defaultGeneratorName, - "update-code-model": (model: CodeModel, context: CSharpEmitterContext) => model, "sdk-context-options": { additionalDecorators: [DYNAMIC_MODEL_DECORATOR_PATTERN], }, diff --git a/packages/http-client-csharp/emitter/src/type/input-type.ts b/packages/http-client-csharp/emitter/src/type/input-type.ts index 2f5ffd7d5fe..96189e1a161 100644 --- a/packages/http-client-csharp/emitter/src/type/input-type.ts +++ b/packages/http-client-csharp/emitter/src/type/input-type.ts @@ -199,6 +199,7 @@ export interface InputMethodParameter extends InputPropertyTypeBase { location: RequestLocation; scope: InputParameterScope; serializedName: string; + paramAlias?: string; } export interface InputQueryParameter extends InputPropertyTypeBase { diff --git a/packages/http-client-csharp/emitter/test/Unit/auth.test.ts b/packages/http-client-csharp/emitter/test/Unit/auth.test.ts index ee94b078d41..ceac4514668 100644 --- a/packages/http-client-csharp/emitter/test/Unit/auth.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/auth.test.ts @@ -30,8 +30,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - const diagnostics = context.program.diagnostics; + const [root, diagnostics] = createModel(sdkContext); const noAuthDiagnostics = diagnostics.filter( (d) => @@ -72,8 +71,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - const diagnostics = context.program.diagnostics; + const [root, diagnostics] = createModel(sdkContext); const noAuthDiagnostics = diagnostics.filter( (d) => @@ -114,8 +112,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - const diagnostics = context.program.diagnostics; + const [root, diagnostics] = createModel(sdkContext); const noAuthDiagnostics = diagnostics.filter( (d) => @@ -154,8 +151,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - const diagnostics = context.program.diagnostics; + const [root, diagnostics] = createModel(sdkContext); const noAuthDiagnostic = diagnostics.find( (d) => d.code === "@typespec/http-client-csharp/unsupported-auth", @@ -182,8 +178,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - const diagnostics = context.program.diagnostics; + const [root, diagnostics] = createModel(sdkContext); const noAuthDiagnostics = diagnostics.filter( (d) => d.code === "@typespec/http-client-csharp/unsupported-auth", @@ -216,8 +211,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - const diagnostics = context.program.diagnostics; + const [root, diagnostics] = createModel(sdkContext); const noAuthDiagnostics = diagnostics.filter( (d) => @@ -249,8 +243,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - const diagnostics = context.program.diagnostics; + const [root, diagnostics] = createModel(sdkContext); // Should have no auth-related diagnostics const authDiagnostics = diagnostics.filter( @@ -290,7 +283,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.auth?.oAuth2); strictEqual(root.auth.oAuth2.flows.length, 1); @@ -322,7 +315,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.auth?.oAuth2); strictEqual(root.auth.oAuth2.flows.length, 1); @@ -352,7 +345,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.auth?.oAuth2); strictEqual(root.auth.oAuth2.flows.length, 1); @@ -389,7 +382,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.auth?.oAuth2); strictEqual(root.auth.oAuth2.flows.length, 2); @@ -426,7 +419,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.auth?.oAuth2); strictEqual(root.auth.oAuth2.flows.length, 1); @@ -454,7 +447,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.auth?.oAuth2); strictEqual(root.auth.oAuth2.flows.length, 1); @@ -482,7 +475,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // Should have both OAuth2 and API key auth ok(root.auth?.oAuth2); @@ -513,7 +506,7 @@ describe("Test auth", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.auth?.oAuth2); strictEqual(root.auth.oAuth2.flows.length, 1); diff --git a/packages/http-client-csharp/emitter/test/Unit/client-converter.test.ts b/packages/http-client-csharp/emitter/test/Unit/client-converter.test.ts index 49d80ee6033..8aa7561cbf7 100644 --- a/packages/http-client-csharp/emitter/test/Unit/client-converter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/client-converter.test.ts @@ -28,7 +28,7 @@ describe("isMultiServiceClient", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok(client, "Client should exist"); @@ -81,7 +81,7 @@ describe("isMultiServiceClient", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.name, "Service.MultiService", "Root namespace should be Service.MultiService"); const client = root.clients[0]; @@ -147,7 +147,7 @@ describe("isMultiServiceClient", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.name, "Service.MultiService", "Root namespace should be Service.MultiService"); const client = root.clients[0]; @@ -219,7 +219,7 @@ describe("isMultiServiceClient", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.name, "Service.MultiService", "Root namespace should be Service.MultiService"); const clients = root.clients; @@ -293,7 +293,7 @@ describe("client name suffix", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok(client, "Client should exist"); @@ -338,7 +338,7 @@ describe("client name suffix", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok(client, "Client should exist"); @@ -383,7 +383,7 @@ describe("client name suffix", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok(client, "Client should exist"); @@ -435,7 +435,7 @@ describe("client name suffix", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok(client, "Client should exist"); diff --git a/packages/http-client-csharp/emitter/test/Unit/client-initialization.test.ts b/packages/http-client-csharp/emitter/test/Unit/client-initialization.test.ts index 8715259052f..e03f8fcffb5 100644 --- a/packages/http-client-csharp/emitter/test/Unit/client-initialization.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/client-initialization.test.ts @@ -4,6 +4,7 @@ import { TestHost } from "@typespec/compiler/testing"; import { ok, strictEqual } from "assert"; import { beforeEach, describe, it, vi } from "vitest"; import { createModel } from "../../src/lib/client-model-builder.js"; +import { InputMethodParameter } from "../../src/type/input-type.js"; import { createCSharpSdkContext, createEmitterContext, @@ -34,7 +35,7 @@ describe("ClientInitialization", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok(client, "Client should exist"); @@ -59,7 +60,7 @@ describe("ClientInitialization", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; // initializedBy field should exist on the client (may be undefined or have a value) @@ -84,7 +85,7 @@ describe("ClientInitialization", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok(client.parameters, "Client should have parameters"); @@ -113,7 +114,7 @@ describe("ClientInitialization", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const client = root.clients[0]; ok("initializedBy" in client, "Parent client should have initializedBy field"); @@ -123,4 +124,82 @@ describe("ClientInitialization", () => { ok("initializedBy" in childClient, "Child client should have initializedBy field"); } }); + + it("should include paramAlias on client parameters when @paramAlias is used", async () => { + const program = await typeSpecCompile( + ` + @service(#{ + title: "Test Service", + }) + @server("https://example.com", "Test endpoint") + namespace TestService; + + op upload(@path blobName: string): void; + + model TestServiceClientOptions { + @paramAlias("blobName") + blob: string; + } + + @@clientInitialization(TestService, {parameters: TestServiceClientOptions}); + `, + runner, + { IsNamespaceNeeded: false, IsTCGCNeeded: true }, + ); + + const context = createEmitterContext(program); + const sdkContext = await createCSharpSdkContext(context); + const [root] = createModel(sdkContext); + + const client = root.clients[0]; + ok(client, "Client should exist"); + ok(client.parameters, "Client should have parameters"); + + // Find the method parameter with paramAlias + const blobParam = client.parameters.find((p) => p.kind === "method" && p.name === "blob") as + | InputMethodParameter + | undefined; + ok(blobParam, "Should have a 'blob' method parameter"); + strictEqual(blobParam.paramAlias, "blobName", "paramAlias should be 'blobName'"); + }); + + it("should not include paramAlias when @paramAlias is not used", async () => { + const program = await typeSpecCompile( + ` + @service(#{ + title: "Test Service", + }) + @server("https://example.com", "Test endpoint") + namespace TestService; + + op upload(@path blobName: string): void; + + model TestServiceClientOptions { + blobName: string; + } + + @@clientInitialization(TestService, {parameters: TestServiceClientOptions}); + `, + runner, + { IsNamespaceNeeded: false, IsTCGCNeeded: true }, + ); + + const context = createEmitterContext(program); + const sdkContext = await createCSharpSdkContext(context); + const [root] = createModel(sdkContext); + + const client = root.clients[0]; + ok(client, "Client should exist"); + ok(client.parameters, "Client should have parameters"); + + const blobParam = client.parameters.find( + (p) => p.kind === "method" && p.name === "blobName", + ) as InputMethodParameter | undefined; + ok(blobParam, "Should have a 'blobName' method parameter"); + strictEqual( + blobParam.paramAlias, + undefined, + "paramAlias should be undefined when @paramAlias is not used", + ); + }); }); diff --git a/packages/http-client-csharp/emitter/test/Unit/client-model-builder.test.ts b/packages/http-client-csharp/emitter/test/Unit/client-model-builder.test.ts index 054bdde1853..908ed25ab19 100644 --- a/packages/http-client-csharp/emitter/test/Unit/client-model-builder.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/client-model-builder.test.ts @@ -58,7 +58,7 @@ describe("fixNamingConflicts", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // Find the real enum const realEnum = root.enums.find( @@ -142,7 +142,7 @@ describe("fixNamingConflicts", () => { namespace: targetNamespace, } as any); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // Get all ErrorResponse models - fixNamingConflicts should have resolved the conflicts const errorModels = root.models.filter( @@ -194,7 +194,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // The root apiVersions should include the version from the Versions enum // which is defined in the default namespace with version "2023-01-01-preview" @@ -228,7 +228,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // The root apiVersions should include all versions from the TestVersions enum strictEqual(root.apiVersions.length, 3, "Root apiVersions should have 3 versions"); @@ -247,7 +247,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // Single service client should have apiVersions from the @versioned decorator ok(root.apiVersions.length > 0, "Root apiVersions should not be empty for single service"); @@ -299,7 +299,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.apiVersions.length === 0, "Root apiVersions should be empty for multiservice"); @@ -358,7 +358,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root.apiVersions.length === 0, "Root apiVersions should be empty for multiservice"); }); @@ -415,7 +415,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok( root.apiVersions.length === 0, @@ -464,7 +464,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // Verify all three versions are present in the root apiVersions strictEqual(root.apiVersions.length, 3, "Should have 3 apiVersions"); @@ -496,7 +496,7 @@ describe("parseApiVersions", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // Verify versions are in the order TCGC provides them strictEqual(root.apiVersions.length, 3, "Should have 3 apiVersions"); @@ -505,3 +505,66 @@ describe("parseApiVersions", () => { strictEqual(root.apiVersions[2], "2025-01-01", "Third version should be 2025-01-01"); }); }); + +describe("createModel diagnostic collection", () => { + let runner: TestHost; + + beforeEach(async () => { + runner = await createEmitterTestHost(); + }); + + it("should return a tuple with CodeModel and diagnostics array", async () => { + const program = await typeSpecCompile( + ` + model TestModel { + name: string; + } + + @route("/test") + op test(): TestModel; + `, + runner, + ); + const context = createEmitterContext(program); + const sdkContext = await createCSharpSdkContext(context); + const result = createModel(sdkContext); + + // Verify the result is a tuple + ok(Array.isArray(result), "Result should be an array (tuple)"); + strictEqual(result.length, 2, "Result should have exactly 2 elements"); + + const [codeModel, diagnostics] = result; + + // Verify the code model + ok(codeModel, "CodeModel should be defined"); + strictEqual( + codeModel.name, + "Azure.Csharp.Testing", + "CodeModel name should be Azure.Csharp.Testing", + ); + + // Verify diagnostics is an array + ok(Array.isArray(diagnostics), "Diagnostics should be an array"); + }); + + it("should collect diagnostics when using diagnostic collection mode", async () => { + const program = await typeSpecCompile( + ` + model TestModel { + name: string; + } + + @route("/test") + op test(): TestModel; + `, + runner, + ); + const context = createEmitterContext(program); + const sdkContext = await createCSharpSdkContext(context); + const [, diagnostics] = createModel(sdkContext); + + // Verify diagnostics array exists (may be empty or contain diagnostics) + ok(diagnostics !== undefined, "Diagnostics should not be undefined"); + ok(Array.isArray(diagnostics), "Diagnostics should be an array"); + }); +}); diff --git a/packages/http-client-csharp/emitter/test/Unit/constant-type.test.ts b/packages/http-client-csharp/emitter/test/Unit/constant-type.test.ts index 595e936d2f5..3730f08dbdd 100644 --- a/packages/http-client-csharp/emitter/test/Unit/constant-type.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/constant-type.test.ts @@ -33,7 +33,7 @@ describe("Name for constant type", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const testModel = root.models.find((m) => m.name === "TestModel"); ok(testModel); const propertyType = testModel.properties[0].type; @@ -64,7 +64,7 @@ describe("Name for constant type", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const testModel1 = root.models.find((m) => m.name === "TestModel1"); ok(testModel1); const testModel2 = root.models.find((m) => m.name === "TestModel2"); @@ -103,7 +103,7 @@ describe("Constant enum conversion", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const testModel = root.models.find((m) => m.name === "TestModel"); ok(testModel); const propertyType = testModel.properties[0].type; @@ -134,7 +134,7 @@ describe("Constant enum conversion", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const testModel = root.models.find((m) => m.name === "TestModel"); ok(testModel); const propertyType = testModel.properties[0].type; diff --git a/packages/http-client-csharp/emitter/test/Unit/decorator-list.test.ts b/packages/http-client-csharp/emitter/test/Unit/decorator-list.test.ts index 37aaa5ad3fc..53df8aa6e86 100644 --- a/packages/http-client-csharp/emitter/test/Unit/decorator-list.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/decorator-list.test.ts @@ -34,7 +34,7 @@ describe("Test emitting decorator list", () => { const sdkContext = await createCSharpSdkContext(context, { additionalDecorators: ["Azure\\.ClientGenerator\\.Core\\.@clientName"], }); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const clients = root.clients; strictEqual(clients.length, 1); ok(clients[0].children); @@ -66,7 +66,7 @@ describe("Test emitting decorator list", () => { const sdkContext = await createCSharpSdkContext(context, { additionalDecorators: ["Azure\\.ClientGenerator\\.Core\\.@clientName"], }); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const methods = root.clients[0].methods; strictEqual(methods.length, 1); const operation = methods[0].operation; @@ -97,7 +97,7 @@ describe("Test emitting decorator list", () => { const sdkContext = await createCSharpSdkContext(context, { additionalDecorators: ["Azure\\.ClientGenerator\\.Core\\.@clientName"], }); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; strictEqual(models.length, 1); deepStrictEqual(models[0].decorators, [ @@ -127,7 +127,7 @@ describe("Test emitting decorator list", () => { const sdkContext = await createCSharpSdkContext(context, { additionalDecorators: ["Azure\\.ClientGenerator\\.Core\\.@clientName"], }); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; strictEqual(models.length, 1); deepStrictEqual(models[0].properties[0].decorators, [ @@ -153,7 +153,7 @@ describe("Test emitting decorator list", () => { const sdkContext = await createCSharpSdkContext(context, { additionalDecorators: ["Azure\\.ClientGenerator\\.Core\\.@clientName"], }); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const methods = root.clients[0].methods; strictEqual(methods.length, 1); const operation = methods[0].operation; diff --git a/packages/http-client-csharp/emitter/test/Unit/emitter.test.ts b/packages/http-client-csharp/emitter/test/Unit/emitter.test.ts index 6755c79fde1..d3078c9dc59 100644 --- a/packages/http-client-csharp/emitter/test/Unit/emitter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/emitter.test.ts @@ -1,6 +1,6 @@ vi.resetModules(); -import { EmitContext, Program } from "@typespec/compiler"; +import { Diagnostic, EmitContext, Program } from "@typespec/compiler"; import { TestHost } from "@typespec/compiler/testing"; import { strictEqual } from "assert"; import { statSync } from "fs"; @@ -19,6 +19,10 @@ import { describe("$onEmit tests", () => { let program: Program; let $onEmit: (arg0: EmitContext) => any; + let emitCodeModel: ( + context: EmitContext, + updateCodeModel?: (model: CodeModel, context: any) => CodeModel, + ) => any; beforeEach(async () => { // Reset the dynamically imported module to ensure a clean state vi.resetModules(); @@ -58,7 +62,7 @@ describe("$onEmit tests", () => { })); vi.mock("../../src/lib/client-model-builder.js", () => ({ - createModel: vi.fn().mockReturnValue({ Name: "TestNamespace" }), + createModel: vi.fn().mockReturnValue([{ name: "TestNamespace" }, []]), })); program = { @@ -79,18 +83,19 @@ describe("$onEmit tests", () => { reportDiagnostics: vi.fn(), } as unknown as Program; - // dynamically import the module to get the $onEmit function + // dynamically import the module to get the $onEmit and emitCodeModel functions // we avoid importing it at the top to allow mocking of dependencies - $onEmit = (await import("../../src/emitter.js")).$onEmit; + const emitterModule = await import("../../src/emitter.js"); + $onEmit = emitterModule.$onEmit; + emitCodeModel = emitterModule.emitCodeModel; }); - it("should apply the update-code-model callback just once", async () => { + it("should apply the updateCodeModel callback", async () => { const context: EmitContext = createEmitterContext(program); const updateCallback = vi.fn().mockImplementation((model: CodeModel) => { return model; }); - context.options["update-code-model"] = updateCallback; - await $onEmit(context); + await emitCodeModel(context, updateCallback); expect(updateCallback).toHaveBeenCalledTimes(1); }); @@ -179,11 +184,64 @@ describe("$onEmit tests", () => { }); }); +describe("emitCodeModel tests", () => { + let runner: TestHost; + let program: Program; + + beforeEach(async () => { + vi.restoreAllMocks(); + runner = await createEmitterTestHost(); + }); + + it("should return diagnostics array from emitCodeModel", async () => { + program = await typeSpecCompile( + ` + model TestModel { + name: string; + } + + @route("/test") + op test(): TestModel; + `, + runner, + ); + const context = createEmitterContext(program); + const { emitCodeModel } = await import("../../src/emitter.js"); + const [, diagnostics] = await emitCodeModel(context); + + // Verify that diagnostics is an array + expect(Array.isArray(diagnostics)).toBe(true); + // Diagnostics array should be defined (may be empty or have diagnostics) + expect(diagnostics).toBeDefined(); + }); + + it("should collect diagnostics from createModel in emitCodeModel", async () => { + program = await typeSpecCompile( + ` + model TestModel { + name: string; + } + + @route("/test") + op test(): TestModel; + `, + runner, + ); + const context = createEmitterContext(program); + const { emitCodeModel } = await import("../../src/emitter.js"); + const [, diagnostics] = await emitCodeModel(context); + + // The function should return diagnostics even if empty + expect(diagnostics).toBeDefined(); + expect(Array.isArray(diagnostics)).toBe(true); + }); +}); + describe("Test _validateDotNetSdk", () => { let runner: TestHost; let program: Program; const minVersion = 8; - let _validateDotNetSdk: (arg0: any, arg1: number) => Promise; + let _validateDotNetSdk: (arg0: any, arg1: number) => Promise<[boolean, readonly Diagnostic[]]>; beforeEach(async () => { vi.resetModules(); @@ -217,7 +275,9 @@ describe("Test _validateDotNetSdk", () => { (execAsync as Mock).mockRejectedValueOnce(error); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const result = await _validateDotNetSdk(sdkContext, minVersion); + const [result, diagnostics] = await _validateDotNetSdk(sdkContext, minVersion); + // Report collected diagnostics to program + program.reportDiagnostics(diagnostics); expect(result).toBe(false); strictEqual(program.diagnostics.length, 1); strictEqual( @@ -241,10 +301,10 @@ describe("Test _validateDotNetSdk", () => { }); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const result = await _validateDotNetSdk(sdkContext, minVersion); + const [result, diagnostics] = await _validateDotNetSdk(sdkContext, minVersion); expect(result).toBe(true); /* no diagnostics */ - strictEqual(program.diagnostics.length, 0); + strictEqual(diagnostics.length, 0); }); it("should return true for installed SDK version whose major greaters than min supported version", async () => { @@ -258,10 +318,10 @@ describe("Test _validateDotNetSdk", () => { }); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const result = await _validateDotNetSdk(sdkContext, minVersion); + const [result, diagnostics] = await _validateDotNetSdk(sdkContext, minVersion); expect(result).toBe(true); /* no diagnostics */ - strictEqual(program.diagnostics.length, 0); + strictEqual(diagnostics.length, 0); }); it("should return false and report diagnostic for invalid .NET SDK version", async () => { @@ -275,7 +335,9 @@ describe("Test _validateDotNetSdk", () => { }); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const result = await _validateDotNetSdk(sdkContext, minVersion); + const [result, diagnostics] = await _validateDotNetSdk(sdkContext, minVersion); + // Report collected diagnostics to program + program.reportDiagnostics(diagnostics); expect(result).toBe(false); strictEqual(program.diagnostics.length, 1); strictEqual( diff --git a/packages/http-client-csharp/emitter/test/Unit/encode.test.ts b/packages/http-client-csharp/emitter/test/Unit/encode.test.ts index 559d2d54dbb..6344bd3f4ca 100644 --- a/packages/http-client-csharp/emitter/test/Unit/encode.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/encode.test.ts @@ -32,7 +32,7 @@ describe("Test encode duration", () => { // validate method parameter const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const methodParamArray = root.clients[0].methods[0].parameters; strictEqual(1, methodParamArray.length); let type = methodParamArray[0].type; @@ -74,7 +74,7 @@ describe("Test encode duration", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // validate method parameter const methodParamArray = root.clients[0].methods[0].parameters; strictEqual(1, methodParamArray.length); @@ -117,7 +117,7 @@ describe("Test encode duration", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); // validate method parameter const methodParamArray = root.clients[0].methods[0].parameters; strictEqual(1, methodParamArray.length); @@ -161,7 +161,7 @@ describe("Test encode duration", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const models = codeModel.models; const durationModel = models.find((m) => m.name === "ISO8601DurationProperty"); ok(durationModel); @@ -190,7 +190,7 @@ describe("Test encode duration", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const models = codeModel.models; const durationModel = models.find((m) => m.name === "Int32SecondsDurationProperty"); ok(durationModel); @@ -219,7 +219,7 @@ describe("Test encode duration", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const models = codeModel.models; const durationModel = models.find((m) => m.name === "FloatSecondsDurationProperty"); ok(durationModel); diff --git a/packages/http-client-csharp/emitter/test/Unit/input-parameter.test.ts b/packages/http-client-csharp/emitter/test/Unit/input-parameter.test.ts index faabbefec9a..7e4db98cba1 100644 --- a/packages/http-client-csharp/emitter/test/Unit/input-parameter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/input-parameter.test.ts @@ -42,7 +42,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -72,7 +72,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -102,7 +102,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -136,7 +136,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -166,7 +166,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -196,7 +196,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -228,7 +228,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -258,7 +258,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -288,7 +288,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -320,7 +320,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -350,7 +350,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -380,7 +380,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -414,7 +414,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -445,7 +445,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -476,7 +476,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -509,7 +509,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -540,7 +540,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -571,7 +571,7 @@ describe("Test Parameter Explode", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "param", ); @@ -609,8 +609,7 @@ describe("Test Cookie Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const diagnostics = context.program.diagnostics; - createModel(sdkContext); + const [, diagnostics] = createModel(sdkContext); const unsupportedCookie = diagnostics.find( (d) => d.code === "@typespec/http-client-csharp/unsupported-cookie-parameter", @@ -653,8 +652,7 @@ describe("Endpoint parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const diagnostics = context.program.diagnostics; - createModel(sdkContext); + const [, diagnostics] = createModel(sdkContext); const unsupportedCookie = diagnostics.find( (d) => d.code === "@typespec/http-client-csharp/unsupported-endpoint-url", @@ -686,7 +684,7 @@ describe("Endpoint parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const client = codeModel.clients[0]; ok(client); ok(client.parameters); @@ -722,7 +720,7 @@ describe("Endpoint parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const client = codeModel.clients[0]; ok(client); ok(client.parameters); @@ -759,7 +757,7 @@ describe("Test Spread Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root); // validate service method @@ -802,7 +800,7 @@ describe("Test Spread Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root); // validate service method @@ -855,8 +853,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - + const [root] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const queryParam = operation.parameters.find((p) => p.name === "queryParam"); @@ -881,8 +878,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - + const [root] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const pathParam = operation.parameters.find((p) => p.name === "pathParam"); @@ -910,8 +906,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - + const [root] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const headerParam = operation.parameters.find((p) => p.name === "headerParam"); @@ -940,8 +935,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - + const [root] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const contentTypeParam = operation.parameters.find((p) => p.name === "contentType"); @@ -970,7 +964,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const metadataParam = operation.parameters.find((p) => p.name === "metadata"); @@ -999,7 +993,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root, modelDiagnostics] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const metadataParam = operation.parameters.find((p) => p.name === "metadata"); @@ -1010,8 +1004,7 @@ describe("Test Operation Parameters", () => { const typedParam = metadataParam as InputHeaderParameter; strictEqual(typedParam.collectionHeaderPrefix, undefined); - const diagnostics = context.program.diagnostics; - const warningDiagnostic = diagnostics.find( + const warningDiagnostic = modelDiagnostics.find( (d) => d.code === "@typespec/http-client-csharp/general-warning" && d.message?.includes("collectionHeaderPrefix"), @@ -1036,7 +1029,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const nameParam = operation.parameters.find((p) => p.name === "name"); @@ -1065,8 +1058,7 @@ describe("Test Operation Parameters", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); - + const [root] = createModel(sdkContext); const operation = root.clients[0].methods[0].operation; const bodyParam = operation.parameters.find((p) => p.name === "bodyParam"); diff --git a/packages/http-client-csharp/emitter/test/Unit/method-parameter-segments.test.ts b/packages/http-client-csharp/emitter/test/Unit/method-parameter-segments.test.ts index de2920346e3..0940caf23e7 100644 --- a/packages/http-client-csharp/emitter/test/Unit/method-parameter-segments.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/method-parameter-segments.test.ts @@ -38,7 +38,7 @@ describe("MethodParameterSegments", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root, "Output model should be generated"); const clients = root.clients; ok(clients && clients.length > 0, "Should have at least one client"); @@ -100,7 +100,7 @@ describe("MethodParameterSegments", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root, "Output model should be generated"); const clients = root.clients; ok(clients && clients.length > 0, "Should have at least one client"); @@ -153,7 +153,7 @@ describe("MethodParameterSegments", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root, "Output model should be generated"); const clients = root.clients; ok(clients && clients.length > 0, "Should have at least one client"); @@ -209,7 +209,7 @@ describe("MethodParameterSegments", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root, "Output model should be generated"); const clients = root.clients; ok(clients && clients.length > 0, "Should have at least one client"); @@ -247,7 +247,7 @@ describe("MethodParameterSegments", () => { const program = await typeSpecCompile(tsp, runner, { IsTCGCNeeded: true }); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root, "Output model should be generated"); const clients = root.clients; @@ -293,7 +293,7 @@ describe("MethodParameterSegments", () => { const program = await typeSpecCompile(tsp, runner, { IsTCGCNeeded: true }); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root, "Output model should be generated"); const clients = root.clients; diff --git a/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts b/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts index 51b9415430b..025e8f5ef91 100644 --- a/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/model-type.test.ts @@ -51,7 +51,7 @@ op test(@body input: Pet): Pet; ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const petModel = models.find((m) => m.name === "Pet"); const catModel = models.find((m) => m.name === "Cat"); @@ -135,7 +135,7 @@ op test(@body input: Pet): Pet; ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const models = codeModel.models; const pet = models.find((m) => m.name === "Pet"); assert(pet !== undefined); @@ -229,7 +229,7 @@ op test(@body input: Pet): Pet; ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const models = codeModel.models; const pet = models.find((m) => m.name === "Pet"); assert(pet !== undefined); @@ -350,7 +350,7 @@ op op5(@body body: ExtendsFooArray): ExtendsFooArray; ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const extendsUnknownModel = models.find((m) => m.name === "ExtendsUnknown"); const extendsStringModel = models.find((m) => m.name === "ExtendsString"); @@ -442,7 +442,7 @@ op op5(@body body: IsFooArray): IsFooArray; ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const isUnknownModel = models.find((m) => m.name === "IsUnknown"); const isStringModel = models.find((m) => m.name === "IsString"); @@ -493,7 +493,7 @@ op op1(): void; ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const isEmptyModel = models.find((m) => m.name === "Empty"); ok(isEmptyModel); @@ -522,7 +522,7 @@ model Foo { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const model = models.find((m) => m.name === "Foo"); ok(model); @@ -560,7 +560,7 @@ describe("Anonymous models should be included in library", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); ok(root); // validate service method @@ -602,7 +602,7 @@ op testOperation(@bodyRoot body: HeaderModel): void; const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const isEmptyModel = models.find((m) => m.name === "HeaderModel"); ok(isEmptyModel); @@ -647,7 +647,7 @@ op testOperation(@bodyRoot body: HeaderModel): void; const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const isEmptyModel = models.find((m) => m.name === "HeaderModel"); ok(isEmptyModel); @@ -680,7 +680,7 @@ op testOperation(@bodyRoot body: HeaderModel): void; const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const isEmptyModel = models.find((m) => m.name === "HeaderModel"); ok(isEmptyModel); @@ -707,7 +707,7 @@ op testOperation(@bodyRoot body: HeaderModel): void; const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const isEmptyModel = models.find((m) => m.name === "HeaderModel"); ok(isEmptyModel); @@ -757,7 +757,7 @@ describe("typespec-client-generator-core: general decorators list", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; strictEqual(models.length, 1); deepStrictEqual(models[0].decorators, [ @@ -799,7 +799,7 @@ describe("Access decorator on enums", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const enums = root.enums; const colorEnum = enums.find((e) => e.name === "Color"); @@ -830,7 +830,7 @@ describe("Access decorator on enums", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const enums = root.enums; const colorEnum = enums.find((e) => e.name === "Color"); @@ -860,7 +860,7 @@ describe("Access decorator on enums", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const enums = root.enums; const statusEnum = enums.find((e) => e.name === "Status"); @@ -898,7 +898,7 @@ describe("Usage decorator on enums", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const enums = root.enums; const colorEnum = enums.find((e) => e.name === "Color"); @@ -928,7 +928,7 @@ describe("Usage decorator on enums", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const enums = root.enums; const colorEnum = enums.find((e) => e.name === "Color"); @@ -971,7 +971,7 @@ describe("XML serialization options", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const bookModel = models.find((m) => m.name === "Book"); @@ -1035,7 +1035,7 @@ describe("XML serialization options", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const xmlModel = models.find((m) => m.name === "XmlModel"); @@ -1079,7 +1079,7 @@ describe("XML serialization options", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const models = root.models; const containerModel = models.find((m) => m.name === "Container"); diff --git a/packages/http-client-csharp/emitter/test/Unit/namespace-converter.test.ts b/packages/http-client-csharp/emitter/test/Unit/namespace-converter.test.ts index 95583fb6fc2..8179f78486b 100644 --- a/packages/http-client-csharp/emitter/test/Unit/namespace-converter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/namespace-converter.test.ts @@ -50,7 +50,7 @@ describe("Namespace Converter", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); const sdkPackage = sdkContext.sdkPackage; - const parsedNamespaces = fromSdkNamespaces(sdkContext, sdkPackage.namespaces); + const [parsedNamespaces] = fromSdkNamespaces(sdkContext, sdkPackage.namespaces); strictEqual(parsedNamespaces.length, 1); diff --git a/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts b/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts index ddaea32c419..af8d27f6fc0 100644 --- a/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/operation-converter.test.ts @@ -35,7 +35,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -106,7 +106,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -176,7 +176,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -231,7 +231,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -275,7 +275,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -314,7 +314,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -346,7 +346,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -382,7 +382,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); @@ -434,7 +434,7 @@ describe("Operation Converter", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); strictEqual(root.clients.length, 1); strictEqual(root.clients[0].methods.length, 1); diff --git a/packages/http-client-csharp/emitter/test/Unit/operation-paging.test.ts b/packages/http-client-csharp/emitter/test/Unit/operation-paging.test.ts index d5f5cd66d54..5338c2f7f53 100644 --- a/packages/http-client-csharp/emitter/test/Unit/operation-paging.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/operation-paging.test.ts @@ -39,7 +39,7 @@ describe("Next link operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -93,7 +93,7 @@ describe("Next link operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -138,7 +138,7 @@ describe("Next link operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -174,7 +174,7 @@ describe("Next link operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -208,7 +208,7 @@ describe("Next link operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root, modelDiagnostics] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -220,13 +220,13 @@ describe("Next link operations", () => { strictEqual(paging.nextLink?.responseSegments.length, 1); strictEqual(paging.nextLink?.responseSegments[0], "next"); - strictEqual(program.diagnostics.length, 1); + strictEqual(modelDiagnostics.length, 1); strictEqual( - program.diagnostics[0].code, + modelDiagnostics[0].code, "@typespec/http-client-csharp/unsupported-continuation-location", ); strictEqual( - program.diagnostics[0].message, + modelDiagnostics[0].message, `Unsupported continuation location for operation ${root.clients[0].methods[0].operation.crossLanguageDefinitionId}.`, ); }); @@ -256,7 +256,7 @@ describe("Continuation token operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -291,7 +291,7 @@ describe("Continuation token operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -327,7 +327,7 @@ describe("Continuation token operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -363,7 +363,7 @@ describe("Continuation token operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -399,7 +399,7 @@ describe("Continuation token operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root, modelDiagnostics] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -415,13 +415,13 @@ describe("Continuation token operations", () => { strictEqual(continuationToken.responseLocation, ResponseLocation.None); strictEqual(continuationToken.responseSegments.length, 1); strictEqual(continuationToken.responseSegments[0], "nextToken"); - strictEqual(program.diagnostics.length, 1); + strictEqual(modelDiagnostics.length, 1); strictEqual( - program.diagnostics[0].code, + modelDiagnostics[0].code, "@typespec/http-client-csharp/unsupported-continuation-location", ); strictEqual( - program.diagnostics[0].message, + modelDiagnostics[0].message, `Unsupported continuation location for operation ${root.clients[0].methods[0].operation.crossLanguageDefinitionId}.`, ); }); @@ -453,7 +453,7 @@ describe("PageSize parameter operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); @@ -491,7 +491,7 @@ describe("PageSize parameter operations", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const method = root.clients[0].methods[0]; strictEqual(method.kind, "paging"); diff --git a/packages/http-client-csharp/emitter/test/Unit/options.test.ts b/packages/http-client-csharp/emitter/test/Unit/options.test.ts index 77b240ade30..2d82da0c25d 100644 --- a/packages/http-client-csharp/emitter/test/Unit/options.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/options.test.ts @@ -162,4 +162,27 @@ describe("Configuration tests", async () => { expect(config["generate-protocol-methods"]).toBeUndefined(); expect(config["generate-convenience-methods"]).toBeUndefined(); }); + + it("should pass plugins option to configuration", async () => { + const options: CSharpEmitterOptions = { + "package-name": "test-package", + plugins: ["/path/to/Plugin.dll", "/path/to/plugin-dir"], + }; + const context = createEmitterContext(program, options); + const sdkContext = await createCSharpSdkContext(context); + const config = createConfiguration(options, "namespace", sdkContext); + + expect(config["plugins"]).toEqual(["/path/to/Plugin.dll", "/path/to/plugin-dir"]); + }); + + it("should not include plugins in configuration when not set", async () => { + const options: CSharpEmitterOptions = { + "package-name": "test-package", + }; + const context = createEmitterContext(program, options); + const sdkContext = await createCSharpSdkContext(context); + const config = createConfiguration(options, "namespace", sdkContext); + + expect(config["plugins"]).toBeUndefined(); + }); }); diff --git a/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts b/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts index 5de9f067d45..e3589538bd3 100644 --- a/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/property-type.test.ts @@ -28,7 +28,7 @@ describe("Test GetInputType for array", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "input", ); @@ -49,7 +49,7 @@ describe("Test GetInputType for array", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const bodyType = root.clients[0].methods[0].operation.responses[0].bodyType; strictEqual(bodyType?.kind, "array"); strictEqual(bodyType.crossLanguageDefinitionId, "TypeSpec.Array"); @@ -86,7 +86,7 @@ describe("Test GetInputType for enum", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "input", ); @@ -130,7 +130,7 @@ describe("Test GetInputType for enum", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "input", ); @@ -169,7 +169,7 @@ describe("Test GetInputType for enum", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "input", ); diff --git a/packages/http-client-csharp/emitter/test/Unit/scalar.test.ts b/packages/http-client-csharp/emitter/test/Unit/scalar.test.ts index 015d4ca3c43..cea35899816 100644 --- a/packages/http-client-csharp/emitter/test/Unit/scalar.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/scalar.test.ts @@ -28,7 +28,7 @@ describe("Test GetInputType for scalar", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "location", ); diff --git a/packages/http-client-csharp/emitter/test/Unit/string-format.test.ts b/packages/http-client-csharp/emitter/test/Unit/string-format.test.ts index 2f86dc8409e..3eea60ca0d1 100644 --- a/packages/http-client-csharp/emitter/test/Unit/string-format.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/string-format.test.ts @@ -27,7 +27,7 @@ describe("Test string format", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const inputParamArray = root.clients[0].methods[0].operation.parameters.filter( (p) => p.name === "sourceUrl", ); @@ -51,7 +51,7 @@ describe("Test string format", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const codeModel = createModel(sdkContext); + const [codeModel] = createModel(sdkContext); const models = codeModel.models; const foo = models.find((m) => m.name === "Foo"); ok(foo); diff --git a/packages/http-client-csharp/emitter/test/Unit/type-converter.test.ts b/packages/http-client-csharp/emitter/test/Unit/type-converter.test.ts index 081708c903f..b6fb88bbdf9 100644 --- a/packages/http-client-csharp/emitter/test/Unit/type-converter.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/type-converter.test.ts @@ -69,7 +69,7 @@ describe("Enum value references", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const enumType = root.enums.find((e) => e.name === "TestEnum"); ok(enumType, "TestEnum should exist in the enums list"); strictEqual(enumType.values.length, 3, "TestEnum should have 3 values"); @@ -119,7 +119,7 @@ describe("External types", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const testModel = root.models.find((m) => m.name === "TestModel"); ok(testModel, "TestModel should exist"); @@ -164,7 +164,7 @@ describe("External types", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const testModel = root.models.find((m) => m.name === "TestModel"); ok(testModel, "TestModel should exist"); diff --git a/packages/http-client-csharp/emitter/test/Unit/usage.test.ts b/packages/http-client-csharp/emitter/test/Unit/usage.test.ts index a20ee81a401..ee0923b0174 100644 --- a/packages/http-client-csharp/emitter/test/Unit/usage.test.ts +++ b/packages/http-client-csharp/emitter/test/Unit/usage.test.ts @@ -33,7 +33,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooModel = root.models.find((model) => model.name === "Foo"); ok(fooModel); @@ -54,7 +54,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooModel = root.models.find((model) => model.name === "Foo"); ok(fooModel); @@ -75,7 +75,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooModel = root.models.find((model) => model.name === "Foo"); ok(fooModel); @@ -97,7 +97,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooModel = root.models.find((model) => model.name === "Foo"); ok(fooModel); @@ -124,7 +124,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooModel = root.models.find((model) => model.name === "Foo"); const templateModel = root.models.find((model) => model.name === "TemplateModelFoo"); @@ -154,7 +154,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const baseModel = root.models.find((model) => model.name === "BaseModel"); const fooModel = root.models.find((model) => model.name === "Foo"); @@ -191,7 +191,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const baseModel = root.models.find((model) => model.name === "BaseModel"); const fooModel = root.models.find((model) => model.name === "Foo"); const propertyModel = root.models.find((model) => model.name === "PropertyModel"); @@ -218,7 +218,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooAlias = root.models.find((model) => model.name === "TestRequest"); ok(fooAlias); @@ -266,7 +266,7 @@ describe("Test Usage", () => { ); const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooInfo = root.models.find((model) => model.name === "FooInfo"); const batchCreateFooListItemsRequest = root.models.find( (model) => model.name === "BatchCreateFooListItemsRequest", @@ -312,7 +312,7 @@ describe("Test Usage", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const fooModel = root.models.find((model) => model.name === "Foo"); ok(fooModel); @@ -371,7 +371,7 @@ describe("Test Usage", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const baseModel = root.models.find((model) => model.name === "BaseModelWithDiscriminator"); const derivedModel = root.models.find( (model) => model.name === "DerivedModelWithDiscriminatorA", @@ -441,7 +441,7 @@ describe("Test Usage", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const baseModel = root.models.find((model) => model.name === "BaseModelWithDiscriminator"); const derivedModel = root.models.find( (model) => model.name === "DerivedModelWithDiscriminatorA", @@ -478,7 +478,7 @@ describe("Test Usage", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const simpleEnumRenamed = root.enums.find((enumType) => enumType.name === "SimpleEnumRenamed"); ok(simpleEnumRenamed); @@ -502,7 +502,7 @@ describe("Test Usage", () => { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const renamedModel = root.models.find((model) => model.name === "RenamedModel"); ok(renamedModel); @@ -660,7 +660,7 @@ interface LegacyLro { const context = createEmitterContext(program); const sdkContext = await createCSharpSdkContext(context); - const root = createModel(sdkContext); + const [root] = createModel(sdkContext); const radiologyInsightsInferenceResult = root.models.find( (model) => model.name === "RadiologyInsightsInferenceResult", ); diff --git a/packages/http-client-csharp/eng/pipeline/publish.yml b/packages/http-client-csharp/eng/pipeline/publish.yml index 37e8b562677..e369e98bebd 100644 --- a/packages/http-client-csharp/eng/pipeline/publish.yml +++ b/packages/http-client-csharp/eng/pipeline/publish.yml @@ -5,8 +5,6 @@ trigger: paths: include: - packages/http-client-csharp/ - exclude: - - packages/http-client-csharp/eng/ pr: none @@ -102,6 +100,7 @@ extends: os: linux jobs: - job: CreatePR + timeoutInMinutes: 90 steps: - checkout: self - pwsh: | @@ -123,7 +122,7 @@ extends: - task: NuGetAuthenticate@1 - pwsh: | - Write-Host "Creating .npmrc file $(Build.SourcesDirectory)/packages/http-client-csharp/.npmrc for registry https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest/npm/registry/" + Write-Host "Creating .npmrc file $(Build.SourcesDirectory)/packages/http-client-csharp/.npmrc for registry https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/" $parentFolder = Split-Path -Path '$(Build.SourcesDirectory)/packages/http-client-csharp/.npmrc' -Parent if (!(Test-Path $parentFolder)) { @@ -131,7 +130,7 @@ extends: New-Item -Path $parentFolder -ItemType Directory | Out-Null } - $content = "registry=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest/npm/registry/`n`nalways-auth=true" + $content = "registry=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry/`n`nalways-auth=true" $content | Out-File '$(Build.SourcesDirectory)/packages/http-client-csharp/.npmrc' Write-Host "##[section].npmrc file created successfully. Contents:" @@ -152,6 +151,10 @@ extends: npm install -g @azure-tools/typespec-client-generator-cli@latest displayName: Install tsp-client + - pwsh: | + npm install -g semver + displayName: Install semver + - task: PowerShell@2 displayName: Update package.json with injected dependencies inputs: diff --git a/packages/http-client-csharp/eng/scripts/Build-Packages.ps1 b/packages/http-client-csharp/eng/scripts/Build-Packages.ps1 index 587a46bb1ce..e606da1c6f5 100644 --- a/packages/http-client-csharp/eng/scripts/Build-Packages.ps1 +++ b/packages/http-client-csharp/eng/scripts/Build-Packages.ps1 @@ -150,7 +150,7 @@ finally } if ($PublishType -eq "internal") { - $feedUrl = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest/npm/registry" + $feedUrl = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry" $overrides = @{ "@typespec/http-client-csharp" = "$feedUrl/@typespec/http-client-csharp/-/http-client-csharp-$emitterVersion.tgz" diff --git a/packages/http-client-csharp/eng/scripts/Check-GitChanges.ps1 b/packages/http-client-csharp/eng/scripts/Check-GitChanges.ps1 index c4bde91a49e..9c7190758cb 100644 --- a/packages/http-client-csharp/eng/scripts/Check-GitChanges.ps1 +++ b/packages/http-client-csharp/eng/scripts/Check-GitChanges.ps1 @@ -20,3 +20,12 @@ Invoke-LoggedCommand "git -c core.safecrlf=false diff --ignore-space-at-eol --ex if($LastExitCode -ne 0) { throw "Changes detected" } + +# Check for untracked files that should have been committed (e.g. newly generated files) +$generatorRoot = "$packageRoot/generator" +$untrackedOutput = Invoke-LoggedCommand "git ls-files --others --exclude-standard -- $generatorRoot" +if ($untrackedOutput) { + Write-Host "Untracked files detected:" + Write-Host $untrackedOutput + throw "Untracked files detected" +} diff --git a/packages/http-client-csharp/eng/scripts/RegenPreview.psm1 b/packages/http-client-csharp/eng/scripts/RegenPreview.psm1 index f7dba494aba..4f08d46666f 100644 --- a/packages/http-client-csharp/eng/scripts/RegenPreview.psm1 +++ b/packages/http-client-csharp/eng/scripts/RegenPreview.psm1 @@ -554,15 +554,24 @@ function Update-OpenAIGenerator { $packageJson | ConvertTo-Json -Depth 100 | Set-Content $codegenPackageJsonPath -Encoding UTF8 - # Delete package-lock.json to force regeneration with new dependencies + # Remove stale node_modules and package-lock.json to ensure clean dependency resolution + Write-Host "Removing stale node_modules and package-lock.json..." -ForegroundColor Gray + $rootNodeModules = Join-Path $OpenAIRepoPath "node_modules" + if (Test-Path $rootNodeModules) { + Remove-Item $rootNodeModules -Recurse -Force + } + $codegenNodeModules = Join-Path $OpenAIRepoPath "codegen" "node_modules" + if (Test-Path $codegenNodeModules) { + Remove-Item $codegenNodeModules -Recurse -Force + } $packageLockPath = Join-Path $OpenAIRepoPath "package-lock.json" if (Test-Path $packageLockPath) { Write-Host "Deleting package-lock.json..." -ForegroundColor Gray Remove-Item $packageLockPath -Force } - # Run npm install to regenerate package-lock.json with local dependencies - Write-Host "Installing dependencies in openai directory..." -ForegroundColor Gray + # Install dependencies + Write-Host "Installing dependencies..." -ForegroundColor Gray Push-Location $OpenAIRepoPath try { $npmOutput = Invoke "npm install" $OpenAIRepoPath @@ -576,25 +585,23 @@ function Update-OpenAIGenerator { Pop-Location } - # Update OpenAI.Library.Plugin.csproj - $pluginCsprojPath = Join-Path $OpenAIRepoPath "codegen" "generator" "src" "OpenAI.Library.Plugin.csproj" - if (-not (Test-Path $pluginCsprojPath)) { - throw "OpenAI.Library.Plugin.csproj not found: $pluginCsprojPath" + # Update Directory.Packages.props + $directoryPackagesPropsPath = Join-Path $OpenAIRepoPath "Directory.Packages.props" + if (-not (Test-Path $directoryPackagesPropsPath)) { + throw "Directory.Packages.props not found: $directoryPackagesPropsPath" } - Write-Host "Updating OpenAI.Library.Plugin.csproj..." -ForegroundColor Gray - [xml]$csproj = Get-Content $pluginCsprojPath - - $packageReference = $csproj.Project.ItemGroup.PackageReference | - Where-Object { $_.Include -eq "Microsoft.TypeSpec.Generator.ClientModel" } | - Select-Object -First 1 + Write-Host "Updating Directory.Packages.props..." -ForegroundColor Gray + $propsContent = Get-Content $directoryPackagesPropsPath -Raw + $pattern = '(&1 + $checkResult = & npm view "$PackageName@$Version" version --registry $DevFeedUrl 2>&1 if ($LASTEXITCODE -eq 0) { Write-Host "✓ Found $PackageName@$Version" @@ -61,7 +64,7 @@ function Get-PackageDependencyVersion { ) Write-Host "Getting $DependencyName version from $PackageName@$PackageVersion..." - $result = & npm view "$PackageName@$PackageVersion" devDependencies.$DependencyName 2>&1 + $result = & npm view "$PackageName@$PackageVersion" devDependencies.$DependencyName --registry $DevFeedUrl 2>&1 if ($LASTEXITCODE -eq 0 -and $result) { $dependencyVersion = $result.Trim() @@ -74,6 +77,90 @@ function Get-PackageDependencyVersion { } } +# Function to get the latest GA (non-prerelease) version of a package +function Get-LatestGAVersion { + param( + [string]$PackageName + ) + + Write-Host "Getting latest GA version for $PackageName..." + $result = & npm view $PackageName dist-tags.latest --registry $DevFeedUrl 2>&1 + + if ($LASTEXITCODE -eq 0 -and $result) { + $latestVersion = $result.Trim() + Write-Host "Found latest GA version for ${PackageName}: $latestVersion" + return $latestVersion + } else { + Write-Warning "Could not determine latest GA version for $PackageName" + return $null + } +} + +# Function to check if a dependency version's peer dep on tcgc is satisfied by our tcgcVersion +function Test-TcgcCompatibility { + param( + [string]$PackageName, + [string]$PackageVersion, + [string]$TcgcVersion + ) + + Write-Host "Checking if $PackageName@$PackageVersion is compatible with tcgc@$TcgcVersion..." + $tcgcRange = & npm view "${PackageName}@${PackageVersion}" "peerDependencies.@azure-tools/typespec-client-generator-core" --registry $DevFeedUrl 2>&1 + + if ($LASTEXITCODE -ne 0 -or -not $tcgcRange) { + Write-Host " No tcgc peer dependency found, assuming compatible" + return $true + } + + $tcgcRange = ($tcgcRange | Out-String).Trim() + Write-Host " Requires tcgc: $tcgcRange" + + $semverResult = & npx semver -r $tcgcRange $TcgcVersion 2>&1 + + if ($LASTEXITCODE -eq 0 -and $semverResult) { + Write-Host " ✓ Compatible" + return $true + } else { + Write-Host " ✗ Not compatible" + return $false + } +} + +# Function to get previous GA versions of a package sorted descending, before a given version +function Get-PreviousGAVersions { + param( + [string]$PackageName, + [string]$BeforeVersion + ) + + Write-Host "Getting previous GA versions of $PackageName (before $BeforeVersion)..." + $result = & npm view $PackageName versions --json --registry $DevFeedUrl 2>&1 + + if ($LASTEXITCODE -ne 0) { + Write-Warning "Could not retrieve versions for $PackageName" + return @() + } + + $allVersions = ($result | Out-String) | ConvertFrom-Json + + if ($allVersions -isnot [array]) { + $allVersions = @($allVersions) + } + + # Filter to GA only (no prerelease) and versions strictly less than BeforeVersion + $gaVersions = @($allVersions | Where-Object { + $_ -notmatch '-' -and ([version]$_ -lt [version]$BeforeVersion) + } | Sort-Object { [version]$_ } -Descending) + + if ($gaVersions.Count -gt 0) { + Write-Host " Found $($gaVersions.Count) previous GA version(s), most recent: $($gaVersions[0])" + } else { + Write-Host " No previous GA versions found" + } + + return $gaVersions +} + # Resolve paths $PackageJsonPath = Resolve-Path $PackageJsonPath @@ -121,22 +208,53 @@ try { $dependencyVersions = @{} foreach ($dependency in $InjectedDependencies) { - $versionToUse = $tcgcVersion + $versionToUse = $null + + # 1. Try the tcgc version if it exists and is compatible with our tcgc + if ((Test-PackageVersion -PackageName $dependency -Version $tcgcVersion) -and + (Test-TcgcCompatibility -PackageName $dependency -PackageVersion $tcgcVersion -TcgcVersion $tcgcVersion)) { + $versionToUse = $tcgcVersion + } + + # 2. Search up to 2 previous GA versions for one compatible with our tcgc + if (-not $versionToUse) { + Write-Host "Searching previous GA versions of $dependency compatible with tcgc@$tcgcVersion..." + $previousVersions = Get-PreviousGAVersions -PackageName $dependency -BeforeVersion $tcgcVersion + $attempts = 0 + foreach ($prevVersion in $previousVersions) { + if ($attempts -ge 2) { break } + $attempts++ + + if (Test-TcgcCompatibility -PackageName $dependency -PackageVersion $prevVersion -TcgcVersion $tcgcVersion) { + $versionToUse = $prevVersion + Write-Host "Found compatible previous version: $dependency@$prevVersion" + break + } + } + } - # Check if the tcgc version exists for this dependency - if (-not (Test-PackageVersion -PackageName $dependency -Version $tcgcVersion)) { - Write-Warning "Version $tcgcVersion not found for $dependency" - - # Use the version from tcgc's @azure-tools/typespec-azure-core dependency as fallback - if ($fallbackVersion) { - Write-Host "Using fallback version $fallbackVersion for all injected dependencies" + # 3. Fallback: use the version from tcgc's azure-core dependency + if (-not $versionToUse -and $fallbackVersion) { + if (Test-PackageVersion -PackageName $dependency -Version $fallbackVersion) { + Write-Host "Using fallback version $fallbackVersion for $dependency" $versionToUse = $fallbackVersion - } else { - Write-Error "Could not determine a valid version for $dependency (no fallback available)" - exit 1 } } + # 4. Final fallback: latest GA version + if (-not $versionToUse) { + $latestGA = Get-LatestGAVersion -PackageName $dependency + if ($latestGA) { + Write-Host "Using latest GA version $latestGA for $dependency" + $versionToUse = $latestGA + } + } + + if (-not $versionToUse) { + Write-Error "Could not determine a valid version for $dependency (no fallback available)" + exit 1 + } + # Store the version to use for this dependency $dependencyVersions[$dependency] = $versionToUse @@ -168,7 +286,7 @@ try { # Validate dependencies by running npm install Write-Host "Validating dependencies with npm install..." - $npmInstallResult = & npm install 2>&1 + $npmInstallResult = & npm install --registry $DevFeedUrl 2>&1 if ($LASTEXITCODE -ne 0) { Write-Error "npm install failed after injecting dependencies: $npmInstallResult" exit 1 @@ -179,4 +297,4 @@ try { catch { Write-Error "Script failed with error: $_" exit 1 -} \ No newline at end of file +} diff --git a/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts b/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts index 76b42972fcf..8089a3929f5 100644 --- a/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts +++ b/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts @@ -1,4 +1,9 @@ -import type { DecoratorContext, Model, Namespace } from "@typespec/compiler"; +import type { + DecoratorContext, + DecoratorValidatorCallbacks, + Model, + Namespace, +} from "@typespec/compiler"; /** * Marks a model or namespace as dynamic, indicating it should generate dynamic model code. @@ -20,7 +25,10 @@ import type { DecoratorContext, Model, Namespace } from "@typespec/compiler"; * } * ``` */ -export type DynamicModelDecorator = (context: DecoratorContext, target: Model | Namespace) => void; +export type DynamicModelDecorator = ( + context: DecoratorContext, + target: Model | Namespace, +) => DecoratorValidatorCallbacks | void; export type TypeSpecHttpClientCSharpDecorators = { dynamicModel: DynamicModelDecorator; diff --git a/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts-test.ts b/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts-test.ts index 91be891162c..3b48cb2111d 100644 --- a/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts-test.ts +++ b/packages/http-client-csharp/generated-defs/TypeSpec.HttpClient.CSharp.ts-test.ts @@ -7,4 +7,4 @@ import type { TypeSpecHttpClientCSharpDecorators } from "./TypeSpec.HttpClient.C /** * An error here would mean that the exported decorator is not using the same signature. Make sure to have export const $decName: DecNameDecorator = (...) => ... */ -const _: TypeSpecHttpClientCSharpDecorators = $decorators["TypeSpec.HttpClient.CSharp"]; +const _decs: TypeSpecHttpClientCSharpDecorators = $decorators["TypeSpec.HttpClient.CSharp"]; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel.StubLibrary/src/StubLibraryVisitor.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel.StubLibrary/src/StubLibraryVisitor.cs index c3ea6a82987..a24a1b21c42 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel.StubLibrary/src/StubLibraryVisitor.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel.StubLibrary/src/StubLibraryVisitor.cs @@ -46,6 +46,7 @@ internal class StubLibraryVisitor : ScmLibraryVisitor if (!IsCallingBaseCtor(constructor) && !IsEffectivelyPublic(constructor.Signature.Modifiers) && !IsParameterlessInternalCtorOnMrwSerializationType(constructor) && + !IsInternalClientConstructor(constructor) && (constructor.EnclosingType is not ModelProvider model || model.DerivedModels.Count == 0)) return null; @@ -57,6 +58,14 @@ internal class StubLibraryVisitor : ScmLibraryVisitor return constructor; } + private static bool IsInternalClientConstructor(ConstructorProvider constructor) + { + if (!constructor.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Internal)) + return false; + + return constructor.EnclosingType is ClientProvider; + } + private static bool IsParameterlessInternalCtorOnMrwSerializationType(ConstructorProvider constructor) { if (constructor.Signature.Parameters.Count != 0) @@ -78,7 +87,13 @@ private static bool IsCallingBaseCtor(ConstructorProvider constructor) protected override FieldProvider? VisitField(FieldProvider field) { // For ClientOptions, keep the non-public field as this currently represents the latest service version for a client. - return (field.Modifiers.HasFlag(FieldModifiers.Public) || field.EnclosingType.BaseType?.Equals(typeof(ClientPipelineOptions)) == true) + // For ClientProvider, keep const and static fields as they are referenced by stub constructor initializers + // (e.g. AuthorizationHeader const used in this() API key ctor, _flows static used in this() OAuth2 ctor). + return (field.Modifiers.HasFlag(FieldModifiers.Public) + || field.EnclosingType.BaseType?.Equals(typeof(ClientPipelineOptions)) == true + || (field.EnclosingType is ClientProvider + && (field.Modifiers.HasFlag(FieldModifiers.Const) + || field.Modifiers.HasFlag(FieldModifiers.Static)))) ? field : null; } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ConfigurationSchemaGenerator.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ConfigurationSchemaGenerator.cs new file mode 100644 index 00000000000..1eb7b022861 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ConfigurationSchemaGenerator.cs @@ -0,0 +1,456 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Nodes; +using Microsoft.TypeSpec.Generator.ClientModel.Providers; +using Microsoft.TypeSpec.Generator.Input.Extensions; +using Microsoft.TypeSpec.Generator.Primitives; +using Microsoft.TypeSpec.Generator.Providers; + +namespace Microsoft.TypeSpec.Generator.ClientModel +{ + /// + /// Generates a ConfigurationSchema.json file for JSON IntelliSense support in appsettings.json. + /// The schema defines well-known client names and their configuration properties. + /// Common definitions (credential, options) are inherited from the System.ClientModel base schema + /// and not duplicated here. Only additional types specific to the generated client (e.g., enums, + /// custom models) are defined locally. + /// + internal static class ConfigurationSchemaGenerator + { + internal const string DefaultSectionName = "Clients"; + internal const string DefaultOptionsRef = "options"; + + private static readonly JsonSerializerOptions s_jsonOptions = new() + { + WriteIndented = true + }; + + /// + /// Generates the ConfigurationSchema.json content based on the output library's type providers. + /// Returns null if no clients with are found. + /// + internal static string? Generate(OutputLibrary output, string sectionName = DefaultSectionName, string optionsRef = DefaultOptionsRef) + { + var clientsWithSettings = output.TypeProviders + .OfType() + .Where(c => c.ClientSettings != null && c.DeclarationModifiers.HasFlag(TypeSignatureModifiers.Public)) + .ToList(); + + if (clientsWithSettings.Count == 0) + { + return null; + } + + var schema = BuildSchema(clientsWithSettings, sectionName, optionsRef); + return JsonSerializer.Serialize(schema, s_jsonOptions).ReplaceLineEndings("\n") + "\n"; + } + + private static JsonObject BuildSchema( + List clients, + string sectionName, + string optionsRef) + { + // Collect local definitions for non-base types during schema generation + var localDefinitions = new Dictionary(); + var clientProperties = new JsonObject(); + + foreach (var client in clients) + { + var clientEntry = BuildClientEntry(client, optionsRef, localDefinitions); + clientProperties[client.Name] = clientEntry; + } + + var schema = new JsonObject + { + ["type"] = "object", + ["properties"] = new JsonObject + { + [sectionName] = new JsonObject + { + ["type"] = "object", + ["properties"] = clientProperties, + ["additionalProperties"] = new JsonObject + { + ["type"] = "object", + ["description"] = "Configuration for a named client instance." + } + } + } + }; + + // Add local definitions only for types not covered by the base schema + if (localDefinitions.Count > 0) + { + var definitions = new JsonObject(); + foreach (var (name, definition) in localDefinitions.OrderBy(kvp => kvp.Key)) + { + definitions[name] = definition; + } + schema["definitions"] = definitions; + } + + return schema; + } + + private static JsonObject BuildClientEntry(ClientProvider client, string optionsRef, Dictionary localDefinitions) + { + var settings = client.ClientSettings!; + var properties = new JsonObject(); + + // Add endpoint property (Name is already transformed by PropertyProvider construction) + if (settings.EndpointProperty != null) + { + properties[settings.EndpointProperty.Name] = BuildPropertySchema(settings.EndpointProperty, localDefinitions); + } + + // Add other required parameters (raw param names need ToIdentifierName() for PascalCase) + foreach (var param in settings.OtherRequiredParams) + { + var propName = param.Name.ToIdentifierName(); + properties[propName] = GetJsonSchemaForType(param.Type, localDefinitions); + } + + // Add custom constructor parameters from custom code (e.g., hand-written constructors + // added via partial classes) that are not already covered by generated parameters. + // Only consider public constructors — internal/private constructors contain infrastructure + // parameters (pipeline, key credentials, etc.) that are not suitable for configuration. + var customConstructors = client.CustomCodeView?.Constructors; + if (customConstructors != null) + { + var knownProps = new HashSet(properties.Select(p => p.Key)); + knownProps.Add("Credential"); + knownProps.Add("Options"); + foreach (var ctor in customConstructors) + { + if (!ctor.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Public) || + settings.HasSettingsParameter(ctor)) + { + continue; + } + + foreach (var param in ctor.Signature.Parameters) + { + var propName = param.Name.ToIdentifierName(); + if (!knownProps.Contains(propName) && + !ClientSettingsProvider.IsStandardParameterType(param.Type)) + { + properties[propName] = GetJsonSchemaForType(param.Type, localDefinitions); + knownProps.Add(propName); + } + } + } + } + + // Add credential reference (defined in System.ClientModel base schema) + properties["Credential"] = new JsonObject + { + ["$ref"] = "#/definitions/credential" + }; + + // Add options + properties["Options"] = BuildOptionsSchema(client, optionsRef, localDefinitions); + + return new JsonObject + { + ["type"] = "object", + ["description"] = $"Configuration for {client.Name}.", + ["properties"] = properties + }; + } + + private static JsonObject BuildOptionsSchema(ClientProvider client, string optionsRef, Dictionary localDefinitions) + { + var clientOptions = client.EffectiveClientOptions; + if (clientOptions == null) + { + return new JsonObject + { + ["$ref"] = $"#/definitions/{optionsRef}" + }; + } + + // Build a named local definition for this client's options type that inherits from the base options. + // This follows the same pattern used in the Azure emitter where client options types extend the + // core options type using allOf. + var optionsTypeName = clientOptions.Name; + var definitionName = optionsTypeName.Length > 1 + ? char.ToLowerInvariant(optionsTypeName[0]) + optionsTypeName.Substring(1) + : optionsTypeName.ToLowerInvariant(); + + if (!localDefinitions.ContainsKey(definitionName)) + { + // Get client-specific option properties (public, non-version properties) + var customProperties = clientOptions.Properties + .Where(p => p.Modifiers.HasFlag(MethodSignatureModifiers.Public)) + .ToList(); + + // Also include custom code properties (e.g., hand-written properties added via partial classes) + // that are not already in the generated properties set. + var generatedPropNames = new HashSet(customProperties.Select(p => p.Name)); + var customCodeProperties = clientOptions.CustomCodeView?.Properties; + if (customCodeProperties != null) + { + foreach (var prop in customCodeProperties) + { + if (prop.Modifiers.HasFlag(MethodSignatureModifiers.Public) && + !generatedPropNames.Contains(prop.Name)) + { + customProperties.Add(prop); + generatedPropNames.Add(prop.Name); + } + } + } + + var allOfArray = new JsonArray + { + new JsonObject { ["$ref"] = $"#/definitions/{optionsRef}" } + }; + + if (customProperties.Count > 0) + { + var extensionProperties = new JsonObject(); + foreach (var prop in customProperties) + { + extensionProperties[prop.Name] = GetJsonSchemaForType(prop.Type, localDefinitions); + } + + allOfArray.Add(new JsonObject + { + ["type"] = "object", + ["properties"] = extensionProperties + }); + } + + localDefinitions[definitionName] = new JsonObject + { + ["allOf"] = allOfArray + }; + } + + return new JsonObject + { + ["$ref"] = $"#/definitions/{definitionName}" + }; + } + + private static JsonObject BuildPropertySchema(PropertyProvider property, Dictionary localDefinitions) + { + var schema = GetJsonSchemaForType(property.Type, localDefinitions); + + if (property.Description != null) + { + var descriptionText = property.Description.ToString(); + if (!string.IsNullOrEmpty(descriptionText)) + { + schema["description"] = descriptionText; + } + } + + return schema; + } + + internal static JsonObject GetJsonSchemaForType(CSharpType type, Dictionary? localDefinitions = null) + { + // Unwrap nullable types + var effectiveType = type.IsNullable ? type.WithNullable(false) : type; + + // Handle non-framework types + if (!effectiveType.IsFrameworkType) + { + if (effectiveType.IsEnum) + { + return GetJsonSchemaForEnum(effectiveType, localDefinitions); + } + + if (effectiveType.IsStruct) + { + // Non-enum struct — look up custom code constructor to determine the underlying type + return GetJsonSchemaForNonEnumStruct(effectiveType, localDefinitions); + } + + return GetJsonSchemaForModel(effectiveType, localDefinitions); + } + + // Handle collection types + if (effectiveType.IsList) + { + return BuildArraySchema(effectiveType, localDefinitions); + } + + var frameworkType = effectiveType.FrameworkType; + + if (frameworkType == typeof(string)) + { + return new JsonObject { ["type"] = "string" }; + } + if (frameworkType == typeof(bool)) + { + return new JsonObject { ["type"] = "boolean" }; + } + if (frameworkType == typeof(int) || frameworkType == typeof(long)) + { + return new JsonObject { ["type"] = "integer" }; + } + if (frameworkType == typeof(float) || frameworkType == typeof(double)) + { + return new JsonObject { ["type"] = "number" }; + } + if (frameworkType == typeof(Uri)) + { + return new JsonObject { ["type"] = "string", ["format"] = "uri" }; + } + if (frameworkType == typeof(TimeSpan)) + { + return new JsonObject { ["type"] = "string" }; + } + + return new JsonObject { ["type"] = "object" }; + } + + private static JsonObject GetJsonSchemaForEnum(CSharpType enumType, Dictionary? localDefinitions) + { + // Search both top-level and nested types (e.g., service version enums nested in options) in a single pass + var enumProvider = CodeModelGenerator.Instance.OutputLibrary.TypeProviders + .SelectMany(t => new[] { t }.Concat(t.NestedTypes)) + .OfType() + .FirstOrDefault(e => e.Type.Equals(enumType)); + + if (enumProvider != null) + { + var values = new JsonArray(); + foreach (var member in enumProvider.EnumValues) + { + values.Add(JsonValue.Create(member.Value?.ToString())); + } + + JsonObject enumSchema; + if (enumType.IsStruct) + { + // Extensible enum — use anyOf to allow known values + custom strings + enumSchema = new JsonObject + { + ["anyOf"] = new JsonArray + { + new JsonObject { ["enum"] = values }, + new JsonObject { ["type"] = "string" } + } + }; + } + else + { + // Fixed enum + enumSchema = new JsonObject { ["enum"] = values }; + } + + // Register as a local definition if we're collecting them + if (localDefinitions != null) + { + var name = enumProvider.Name; + var definitionName = name.Length > 1 + ? char.ToLowerInvariant(name[0]) + name.Substring(1) + : name.ToLowerInvariant(); + if (!localDefinitions.ContainsKey(definitionName)) + { + localDefinitions[definitionName] = enumSchema; + } + return new JsonObject { ["$ref"] = $"#/definitions/{definitionName}" }; + } + + return enumSchema; + } + + // Fallback: just string + return new JsonObject { ["type"] = "string" }; + } + + private static JsonObject GetJsonSchemaForNonEnumStruct(CSharpType structType, Dictionary? localDefinitions) + { + // Look up the struct's constructor to determine the underlying value type + var underlyingType = ClientSettingsProvider.TryGetStructUnderlyingType(structType); + + if (underlyingType != null) + { + var ft = underlyingType.FrameworkType; + if (ft == typeof(string)) + { + return new JsonObject { ["type"] = "string" }; + } + if (ft == typeof(int) || ft == typeof(long)) + { + return new JsonObject { ["type"] = "integer" }; + } + if (ft == typeof(float) || ft == typeof(double)) + { + return new JsonObject { ["type"] = "number" }; + } + } + + // Fallback: treat as object to be consistent with AppendComplexObjectBinding + return new JsonObject { ["type"] = "object" }; + } + + private static JsonObject GetJsonSchemaForModel(CSharpType modelType, Dictionary? localDefinitions) + { + // Search for the model provider in the output library + var modelProvider = CodeModelGenerator.Instance.OutputLibrary.TypeProviders + .SelectMany(t => new[] { t }.Concat(t.NestedTypes)) + .FirstOrDefault(m => m is ModelProvider && m.Type.Equals(modelType)); + + if (modelProvider != null) + { + var name = modelProvider.Name; + var definitionName = name.Length > 1 + ? char.ToLowerInvariant(name[0]) + name.Substring(1) + : name.ToLowerInvariant(); + + if (localDefinitions != null && !localDefinitions.ContainsKey(definitionName)) + { + var modelProperties = new JsonObject(); + foreach (var prop in modelProvider.Properties + .Where(p => p.Modifiers.HasFlag(MethodSignatureModifiers.Public))) + { + modelProperties[prop.Name] = GetJsonSchemaForType(prop.Type, localDefinitions); + } + + var modelSchema = new JsonObject { ["type"] = "object" }; + if (modelProperties.Count > 0) + { + modelSchema["properties"] = modelProperties; + } + + localDefinitions[definitionName] = modelSchema; + } + + if (localDefinitions != null) + { + return new JsonObject { ["$ref"] = $"#/definitions/{definitionName}" }; + } + } + + return new JsonObject { ["type"] = "object" }; + } + + private static JsonObject BuildArraySchema(CSharpType listType, Dictionary? localDefinitions) + { + if (listType.Arguments.Count > 0) + { + return new JsonObject + { + ["type"] = "array", + ["items"] = GetJsonSchemaForType(listType.Arguments[0], localDefinitions) + }; + } + + return new JsonObject + { + ["type"] = "array", + ["items"] = new JsonObject { ["type"] = "string" } + }; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ConfigurationSchemaOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ConfigurationSchemaOptions.cs new file mode 100644 index 00000000000..c1ad887b65c --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ConfigurationSchemaOptions.cs @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +namespace Microsoft.TypeSpec.Generator.ClientModel +{ + /// + /// Options that control ConfigurationSchema.json generation. + /// + public class ConfigurationSchemaOptions + { + /// + /// Gets or sets the top-level section name used in the generated ConfigurationSchema.json. + /// Defaults to "Clients". Azure SDK generators should set this to "AzureClients". + /// + public string SectionName { get; set; } = ConfigurationSchemaGenerator.DefaultSectionName; + + /// + /// Gets or sets the $ref value used for the base options definition in the generated ConfigurationSchema.json. + /// Defaults to "options". Azure SDK generators should set this to "azureOptions". + /// + public string OptionsRef { get; set; } = ConfigurationSchemaGenerator.DefaultOptionsRef; + + /// + /// Gets or sets whether to generate the .NuGet.targets file alongside the ConfigurationSchema.json. + /// Defaults to true. Set to false when the build infrastructure handles targets file packing centrally. + /// + public bool GenerateNuGetTargets { get; set; } = true; + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Microsoft.TypeSpec.Generator.ClientModel.csproj b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Microsoft.TypeSpec.Generator.ClientModel.csproj index a14cd844c1c..3179721bdfb 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Microsoft.TypeSpec.Generator.ClientModel.csproj +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Microsoft.TypeSpec.Generator.ClientModel.csproj @@ -9,6 +9,7 @@ + diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/BinaryContentProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/BinaryContentProvider.cs index d7e452714fd..6b0d2fbcfcf 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/BinaryContentProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/BinaryContentProvider.cs @@ -3,10 +3,10 @@ using System.ClientModel; using Microsoft.TypeSpec.Generator.ClientModel.Snippets; -using static Microsoft.TypeSpec.Generator.Snippets.Snippet; using Microsoft.TypeSpec.Generator.Expressions; -using Microsoft.TypeSpec.Generator.Statements; using Microsoft.TypeSpec.Generator.Primitives; +using Microsoft.TypeSpec.Generator.Statements; +using static Microsoft.TypeSpec.Generator.Snippets.Snippet; namespace Microsoft.TypeSpec.Generator.ClientModel.Providers { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientOptionsProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientOptionsProvider.cs index 7001641f55e..e0a0bf9edf8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientOptionsProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientOptionsProvider.cs @@ -11,6 +11,7 @@ using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; using Microsoft.TypeSpec.Generator.Shared; +using Microsoft.TypeSpec.Generator.Snippets; using Microsoft.TypeSpec.Generator.Statements; using Microsoft.TypeSpec.Generator.Utilities; using static Microsoft.TypeSpec.Generator.Snippets.Snippet; @@ -19,7 +20,6 @@ namespace Microsoft.TypeSpec.Generator.ClientModel.Providers { public class ClientOptionsProvider : TypeProvider { - private const string ServicePrefix = "Service"; private const string VersionSuffix = "Version"; private const string ApiVersionSuffix = "ApiVersion"; private const string LatestPrefix = "Latest"; @@ -133,9 +133,26 @@ private static bool UseSingletonInstance(InputClient inputClient) var properties = new Dictionary(_serviceVersionsEnums.Count); foreach (var (inputEnum, enumProvider) in _serviceVersionsEnums) { - var versionPropertyName = _inputClient.IsMultiServiceClient - ? ClientHelper.BuildNameForService(inputEnum.Namespace, ServicePrefix, ApiVersionSuffix) - : VersionSuffix; + string versionPropertyName; + if (!_inputClient.IsMultiServiceClient) + { + versionPropertyName = VersionSuffix; + } + else + { + var serviceNamespace = inputEnum.Namespace; + if (!string.IsNullOrEmpty(serviceNamespace) && + ClientHelper.HasLastSegmentCollision(serviceNamespace, inputEnum, _serviceVersionsEnums.Keys)) + { + // Last segment collides — find the shortest unique namespace suffix. + string uniquePrefix = ClientHelper.GetShortestUniqueNamespacePrefix(serviceNamespace, inputEnum, _serviceVersionsEnums.Keys); + versionPropertyName = $"{uniquePrefix.ToIdentifierName()}{ApiVersionSuffix}"; + } + else + { + versionPropertyName = ClientHelper.BuildNameForService(serviceNamespace ?? string.Empty, string.Empty, ApiVersionSuffix); + } + } var versionProperty = new PropertyProvider( null, @@ -159,11 +176,28 @@ private static bool UseSingletonInstance(InputClient inputClient) } Dictionary latestVersionFields = new(_serviceVersionsEnums.Count); - foreach (var enumProvider in _serviceVersionsEnums.Values) + foreach (var (inputEnum, enumProvider) in _serviceVersionsEnums) { - var fieldName = _inputClient.IsMultiServiceClient - ? $"{LatestPrefix}{enumProvider.Name.ToIdentifierName()}" - : LatestVersionFieldName; + string fieldName; + if (!_inputClient.IsMultiServiceClient) + { + fieldName = LatestVersionFieldName; + } + else + { + var serviceNamespace = inputEnum.Namespace; + if (!string.IsNullOrEmpty(serviceNamespace) && + ClientHelper.HasLastSegmentCollision(serviceNamespace, inputEnum, _serviceVersionsEnums.Keys)) + { + // Last segment collides — find the shortest unique namespace suffix. + string uniquePrefix = ClientHelper.GetShortestUniqueNamespacePrefix(serviceNamespace, inputEnum, _serviceVersionsEnums.Keys); + fieldName = $"{LatestPrefix}{uniquePrefix.ToIdentifierName()}{VersionSuffix}"; + } + else + { + fieldName = ClientHelper.BuildNameForService(serviceNamespace ?? string.Empty, LatestPrefix, VersionSuffix); + } + } var field = new FieldProvider( modifiers: FieldModifiers.Private | FieldModifiers.Const, type: enumProvider.Type, @@ -230,9 +264,15 @@ protected override TypeProvider[] BuildNestedTypes() protected override ConstructorProvider[] BuildConstructors() { + var configSectionCtor = BuildConfigurationSectionConstructor(); + if (LatestVersionsFields is null) { - return []; + var defaultCtor = new ConstructorProvider( + new ConstructorSignature(Type, $"Initializes a new instance of {_clientProvider.Name}Options.", MethodSignatureModifiers.Public, []), + MethodBodyStatement.Empty, + this); + return [defaultCtor, configSectionCtor]; } var constructorBody = new List(); @@ -249,10 +289,7 @@ protected override ConstructorProvider[] BuildConstructors() FormattableString versionParamDescription = $"The service version"; if (_inputClient.IsMultiServiceClient) { - versionParameterName = ClientHelper.BuildNameForService( - serviceVersionEnum.Name, - ServicePrefix, - VersionSuffix).ToVariableName(); + versionParameterName = serviceVersionEnum.Name.ToVariableName(); versionParamDescription = $"The {serviceVersionEnum.Name} service version"; } @@ -281,7 +318,110 @@ protected override ConstructorProvider[] BuildConstructors() new ConstructorSignature(Type, $"Initializes a new instance of {_clientProvider.Name}Options.", MethodSignatureModifiers.Public, constructorParameters), constructorBody, this); - return [constructor]; + return [constructor, configSectionCtor]; + } + + private ConstructorProvider BuildConfigurationSectionConstructor() + { + var sectionParam = new ParameterProvider( + "section", + $"The configuration section.", + ClientSettingsProvider.IConfigurationSectionType); + + var experimentalAttr = new AttributeStatement( + typeof(System.Diagnostics.CodeAnalysis.ExperimentalAttribute), + [Literal(ClientSettingsProvider.ClientSettingsDiagnosticId)]); + + // Set version to latest version before the guard so it is always initialized + var body = new List(); + if (LatestVersionsFields != null && VersionProperties != null) + { + foreach (var (_, serviceVersionEnum) in LatestVersionsFields.OrderBy(kvp => kvp.Key.Name)) + { + if (VersionProperties.TryGetValue(serviceVersionEnum, out var versionProperty)) + { + var latestVersion = serviceVersionEnum.EnumValues[^1]; + body.Add(versionProperty.Assign(Literal(latestVersion.Value)).Terminate()); + } + } + } + + // if (section is null || !section.Exists()) { return; } + var guardCondition = sectionParam.Is(Null).Or(Not(sectionParam.Invoke("Exists"))); + var guardStatement = new IfStatement(guardCondition) { Return() }; + + body.Add(guardStatement); + + // Bind version properties from configuration (after guard, default already set before guard) + if (LatestVersionsFields != null && VersionProperties != null) + { + foreach (var (_, serviceVersionEnum) in LatestVersionsFields.OrderBy(kvp => kvp.Key.Name)) + { + if (VersionProperties.TryGetValue(serviceVersionEnum, out var versionProperty)) + { + // if (section["VersionPropertyName"] is string version) { Version = version; } + var versionVarDecl = Declare(versionProperty.Name.ToVariableName(), new CSharpType(typeof(string)), out var versionVar); + var ifVersionStatement = new IfStatement(new IndexerExpression(sectionParam, Literal(versionProperty.Name)).Is(versionVarDecl)); + ifVersionStatement.Add(This.Property(versionProperty.Name).Assign(versionVar).Terminate()); + body.Add(ifVersionStatement); + } + } + } + + // Build a set of version property names for O(1) lookup + var versionPropertyNames = VersionProperties?.Values.Select(vp => vp.Name).ToHashSet(); + + // Bind non-version properties from configuration using type-aware binding + foreach (var property in Properties) + { + if (versionPropertyNames?.Contains(property.Name) == true) + { + continue; + } + + ClientSettingsProvider.AppendBindingForProperty( + body, + sectionParam, + property.Name, + property.Name.ToVariableName(), + property.Type); + } + + // Also bind custom code properties (e.g., hand-written properties added via partial classes) + var generatedPropNames = new HashSet(Properties.Select(p => p.Name)); + if (versionPropertyNames != null) + { + generatedPropNames.UnionWith(versionPropertyNames); + } + var customCodeProperties = CustomCodeView?.Properties; + if (customCodeProperties != null) + { + foreach (var prop in customCodeProperties) + { + if (prop.Modifiers.HasFlag(MethodSignatureModifiers.Public) && + !generatedPropNames.Contains(prop.Name)) + { + ClientSettingsProvider.AppendBindingForProperty( + body, + sectionParam, + prop.Name, + prop.Name.ToVariableName(), + prop.Type); + generatedPropNames.Add(prop.Name); + } + } + } + + return new ConstructorProvider( + new ConstructorSignature( + Type, + $"Initializes a new instance of {_clientProvider.Name}Options from configuration.", + MethodSignatureModifiers.Internal, + [sectionParam], + attributes: [experimentalAttr], + initializer: new ConstructorInitializer(true, [sectionParam])), + new MethodBodyStatements([.. body]), + this); } protected override PropertyProvider[] BuildProperties() diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs index c58ae32a555..5b6d76d93b6 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientProvider.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Threading; @@ -36,9 +37,12 @@ private record ApiVersionFields(FieldProvider Field, PropertyProvider? Correspon private const string TokenProviderFieldName = "_tokenProvider"; private const string TokenCredentialFieldName = "_tokenCredential"; private const string EndpointFieldName = "_endpoint"; + private const string CredentialParamName = "credential"; + private const string SettingsParamName = "settings"; private const string ClientSuffix = "Client"; private readonly FormattableString _publicCtorDescription; private readonly InputClient _inputClient; + internal InputClient InputClient => _inputClient; private readonly InputAuth? _inputAuth; private readonly ParameterProvider _endpointParameter; /// @@ -102,6 +106,11 @@ public ClientProvider(InputClient inputClient) _publicCtorDescription = $"Initializes a new instance of {Name}."; ClientOptions = _inputClient.Parent is null ? ClientOptionsProvider.CreateClientOptionsProvider(_inputClient, this) : null; ClientOptionsParameter = ClientOptions != null ? ScmKnownParameters.ClientOptions(ClientOptions.Type) : null; + bool isIndividuallyInitialized = (_inputClient.InitializedBy & InputClientInitializedBy.Individually) != 0; + ClientSettings = isIndividuallyInitialized + && DeclarationModifiers.HasFlag(TypeSignatureModifiers.Public) + ? new ClientSettingsProvider(_inputClient, this) + : null; IsMultiServiceClient = _inputClient.IsMultiServiceClient; var apiKey = _inputAuth?.ApiKey; @@ -128,8 +137,7 @@ public ClientProvider(InputClient inputClient) this, initializationValue: Literal(apiKey.Prefix)) : null; - // skip auth fields for sub-clients - _apiKeyAuthFields = ClientOptions is null ? null : new(apiKeyAuthField, authorizationHeaderField, authorizationApiKeyPrefixField); + _apiKeyAuthFields = isIndividuallyInitialized ? new(apiKeyAuthField, authorizationHeaderField, authorizationApiKeyPrefixField) : null; } var tokenAuth = _inputAuth?.OAuth2; @@ -153,8 +161,7 @@ public ClientProvider(InputClient inputClient) var tokenCredentialScopesField = BuildTokenCredentialScopesField(tokenAuth, tokenCredentialType); - // skip auth fields for sub-clients - _oauth2Fields = ClientOptions is null ? null : new(tokenCredentialField, tokenCredentialScopesField); + _oauth2Fields = isIndividuallyInitialized ? new(tokenCredentialField, tokenCredentialScopesField) : null; } EndpointField = new( FieldModifiers.Private | FieldModifiers.ReadOnly, @@ -189,6 +196,7 @@ public ClientProvider(InputClient inputClient) _additionalClientFields = new(BuildAdditionalClientFields); _subClientInternalConstructorParams = new(GetSubClientInternalConstructorParameters); _clientParameters = new(GetClientParameters); + _effectiveClientParamNames = new(() => GetEffectiveParameterNames(_inputClient.Parameters)); _subClients = new(GetSubClients); _allClientParameters = GetAllClientParameters(); } @@ -295,14 +303,8 @@ private IReadOnlyList GetSubClientInternalConstructorParamete PipelineProperty.AsParameter }; - if (_apiKeyAuthFields != null) - { - subClientParameters.Add(_apiKeyAuthFields.AuthField.AsParameter); - } - if (_oauth2Fields != null) - { - subClientParameters.Add(_oauth2Fields.AuthField.AsParameter); - } + // Auth credentials are NOT included here — the parent passes its authenticated + // pipeline, so the sub-client doesn't need separate credential parameters. subClientParameters.Add(_endpointParameter); subClientParameters.AddRange(ClientParameters); @@ -316,15 +318,36 @@ private IReadOnlyList GetSubClientInternalConstructorParamete /// internal bool HasAccessorOnlyParameters(InputClient parentInputClient) { - var parentParamNames = parentInputClient.Parameters - .Select(p => p.Name) - .ToHashSet(StringComparer.OrdinalIgnoreCase); + var parentParamNames = GetEffectiveParameterNames(parentInputClient.Parameters); return _inputClient.Parameters .Where(p => !p.IsApiVersion && !(p is InputEndpointParameter ep && ep.IsEndpoint)) - .Any(p => !parentParamNames.Contains(p.Name)); + .Any(p => !IsSupersededByClientParameter(p, parentParamNames)); + } + + /// + /// Builds a set of effective parameter names. When a parameter has a ParamAlias, + /// the alias is used instead of the parameter name. + /// + private static HashSet GetEffectiveParameterNames(IReadOnlyList parameters) + { + var names = new HashSet(StringComparer.OrdinalIgnoreCase); + foreach (var p in parameters) + { + if (p is InputMethodParameter { ParamAlias: string alias }) + { + names.Add(alias); + } + else + { + names.Add(p.Name); + } + } + return names; } + private Lazy> _effectiveClientParamNames; + private Lazy> _clientParameters; internal IReadOnlyList ClientParameters => _clientParameters.Value; private IReadOnlyList GetClientParameters() @@ -378,6 +401,13 @@ private IReadOnlyList GetClientParameters() /// public RestClientProvider RestClient => _restClient ??= new RestClientProvider(_inputClient, this); public ClientOptionsProvider? ClientOptions { get; } + public ClientSettingsProvider? ClientSettings { get; } + + /// + /// Gets the effective — the client's own options for root clients, + /// or the root client's options for individually-initialized sub-clients. + /// + internal ClientOptionsProvider? EffectiveClientOptions => ClientOptions ?? GetRootClient()?.ClientOptions; public PropertyProvider PipelineProperty { get; } public FieldProvider EndpointField { get; } @@ -394,7 +424,7 @@ protected override FieldProvider[] BuildFields() if (_apiKeyAuthFields != null) { - fields.Add(_apiKeyAuthFields.AuthField); + // No longer add AuthField (_keyCredential) — auth is handled via AuthenticationPolicy parameter in the internal constructor fields.Add(_apiKeyAuthFields.AuthorizationHeaderField); if (_apiKeyAuthFields.AuthorizationApiKeyPrefixField != null) { @@ -404,7 +434,7 @@ protected override FieldProvider[] BuildFields() if (_oauth2Fields != null) { - fields.Add(_oauth2Fields.AuthField); + // No longer add AuthField (_tokenProvider) — auth is handled via AuthenticationPolicy parameter in the internal constructor fields.Add(_oauth2Fields.AuthorizationScopesField); } @@ -569,45 +599,89 @@ protected override ConstructorProvider[] BuildConstructors() var primaryConstructors = new List(); var secondaryConstructors = new List(); + bool hasAnyAuth = _apiKeyAuthFields != null || _oauth2Fields != null; + + // The internal implementation constructor takes AuthenticationPolicy? as first parameter. + // It is shared across all auth types - add it once. + if (hasAnyAuth || _apiKeyAuthFields == null && _oauth2Fields == null) + { + // Always add the single internal implementation constructor + var authPolicyParam = new ParameterProvider( + "authenticationPolicy", + $"The authentication policy to use for pipeline creation.", + new CSharpType(typeof(AuthenticationPolicy), isNullable: true)); + + var requiredNonAuthParams = GetRequiredParameters(null); + ParameterProvider[] internalConstructorParameters = [authPolicyParam, _endpointParameter, .. requiredNonAuthParams, ClientOptionsParameter]; + + // Use the first available auth fields to determine pipeline auth type + AuthFields? firstAuthFields = _apiKeyAuthFields as AuthFields ?? _oauth2Fields; + var internalConstructor = new ConstructorProvider( + new ConstructorSignature(Type, _publicCtorDescription, MethodSignatureModifiers.Internal, internalConstructorParameters), + BuildPrimaryConstructorBody(internalConstructorParameters, firstAuthFields, authPolicyParam, ClientOptions, ClientOptionsParameter, addExplicitValidation: true), + this); + primaryConstructors.Add(internalConstructor); + } + // if there is key auth if (_apiKeyAuthFields != null) { - AppendConstructors(_apiKeyAuthFields, primaryConstructors, secondaryConstructors); + AppendPublicConstructors(_apiKeyAuthFields, primaryConstructors, secondaryConstructors); } // if there is oauth2 auth if (_oauth2Fields != null) { - AppendConstructors(_oauth2Fields, primaryConstructors, secondaryConstructors); + AppendPublicConstructors(_oauth2Fields, primaryConstructors, secondaryConstructors); } bool onlyContainsUnsupportedAuth = _inputAuth != null && _apiKeyAuthFields == null && _oauth2Fields == null; // if there is no auth if (_apiKeyAuthFields == null && _oauth2Fields == null) { - AppendConstructors(null, primaryConstructors, secondaryConstructors, onlyContainsUnsupportedAuth); + AppendPublicConstructors(null, primaryConstructors, secondaryConstructors, onlyContainsUnsupportedAuth); } var shouldIncludeMockingConstructor = !onlyContainsUnsupportedAuth && secondaryConstructors.All(c => c.Signature.Parameters.Count > 0); + var settingsConstructors = BuildSettingsConstructors(); + return shouldIncludeMockingConstructor - ? [ConstructorProviderHelper.BuildMockingConstructor(this), .. secondaryConstructors, .. primaryConstructors] - : [.. secondaryConstructors, .. primaryConstructors]; + ? [ConstructorProviderHelper.BuildMockingConstructor(this), .. secondaryConstructors, .. primaryConstructors, .. settingsConstructors] + : [.. secondaryConstructors, .. primaryConstructors, .. settingsConstructors]; - void AppendConstructors( + void AppendPublicConstructors( AuthFields? authFields, List primaryConstructors, List secondaryConstructors, bool onlyContainsUnsupportedAuth = false) { + // Public constructor with credential parameter — delegates to the internal constructor. var requiredParameters = GetRequiredParameters(authFields?.AuthField); ParameterProvider[] primaryConstructorParameters = [_endpointParameter, .. requiredParameters, ClientOptionsParameter]; - // If auth exists but it's not supported, we will make the constructor internal. var constructorModifier = onlyContainsUnsupportedAuth ? MethodSignatureModifiers.Internal : MethodSignatureModifiers.Public; + + // Build the auth policy expression for the this() initializer + ValueExpression authPolicyArg = BuildAuthPolicyArgument(authFields, requiredParameters); + var initializerArgs = new List { authPolicyArg, _endpointParameter }; + // Add non-auth required parameters from the SAME parameter list (requiredParameters) + // to ensure the initializer references the same objects as the constructor signature. + string? authParamName = authFields != null + ? (authFields.AuthField.Name != TokenProviderFieldName ? CredentialParamName : authFields.AuthField.AsParameter.Name) + : null; + foreach (var p in requiredParameters) + { + if (authParamName == null || p.Name != authParamName) + { + initializerArgs.Add(p); + } + } + initializerArgs.Add(ClientOptionsParameter!); + var primaryConstructor = new ConstructorProvider( - new ConstructorSignature(Type, _publicCtorDescription, constructorModifier, primaryConstructorParameters), - BuildPrimaryConstructorBody(primaryConstructorParameters, authFields, ClientOptions, ClientOptionsParameter), + new ConstructorSignature(Type, _publicCtorDescription, constructorModifier, primaryConstructorParameters, + initializer: new ConstructorInitializer(false, initializerArgs)), + MethodBodyStatement.Empty, this); - primaryConstructors.Add(primaryConstructor); // If the endpoint parameter contains an initialization value, it is not required. @@ -631,67 +705,170 @@ void AppendConstructors( } } + private IEnumerable BuildSettingsConstructors() + { + if (ClientSettings == null || ClientSettings.EndpointProperty == null) + { + yield break; + } + + // Only publicly constructible clients should get the Settings constructor. + // Internal clients (e.g., those made internal via custom code) cannot be + // constructed by consumers, so a public Settings constructor is not useful. + if (!DeclarationModifiers.HasFlag(TypeSignatureModifiers.Public)) + { + yield break; + } + + var settingsParam = new ParameterProvider(SettingsParamName, $"The settings for {Name}.", ClientSettings.Type); + var experimentalAttr = new AttributeStatement(typeof(ExperimentalAttribute), [Literal(ClientSettingsProvider.ClientSettingsDiagnosticId)]); + + // Build the arguments for the this(...) internal constructor initializer: + // this(AuthenticationPolicy.Create(settings), settings?.Endpoint, otherParams..., settings?.Options) + var args = new List(); + + // auth policy argument: AuthenticationPolicy.Create(settings) +#pragma warning disable SCME0002 + args.Add(Static(typeof(AuthenticationPolicy)).Invoke("Create", settingsParam)); +#pragma warning restore SCME0002 + + // endpoint argument - we know EndpointProperty is not null at this point + args.Add(new MemberExpression(new NullConditionalExpression(settingsParam), ClientSettings.EndpointProperty.Name)); + + // other required parameters (non-auth, non-endpoint) in primary constructor order + foreach (var param in ClientSettings.OtherRequiredParams) + { + var propName = param.Name.ToIdentifierName(); + var propAccess = new MemberExpression(new NullConditionalExpression(settingsParam), propName); + // Value types (enums, primitives) need ?? default since null-conditional returns T? + ValueExpression arg = param.Type.IsValueType + ? propAccess.NullCoalesce(new KeywordExpression("default", null)) + : propAccess; + args.Add(arg); + } + + // options argument + args.Add(new MemberExpression(new NullConditionalExpression(settingsParam), "Options")); + + var settingsConstructor = new ConstructorProvider( + new ConstructorSignature( + Type, + $"Initializes a new instance of {Name} from a .", + MethodSignatureModifiers.Public, + [settingsParam], + attributes: [experimentalAttr], + initializer: new ConstructorInitializer(false, args)), + MethodBodyStatement.Empty, + this); + + yield return settingsConstructor; + } + private void AppendSubClientPublicConstructors(List constructors) { // For sub-clients that can be initialized individually, we need to create public constructors - // similar to the root client constructors but adapted for sub-client needs + // with the same auth pattern as the root client. var primaryConstructors = new List(); var secondaryConstructors = new List(); - // if there is key auth + var rootClient = GetRootClient(); + var clientOptionsParameter = rootClient?.ClientOptionsParameter; + var clientOptionsProvider = rootClient?.ClientOptions; + + if (clientOptionsParameter == null || clientOptionsProvider == null) + { + return; + } + + // Add the internal AuthenticationPolicy constructor first — public constructors chain to it. + var authPolicyParam = new ParameterProvider( + "authenticationPolicy", + $"The authentication policy to use for pipeline creation.", + new CSharpType(typeof(AuthenticationPolicy), isNullable: true)); + + var requiredNonAuthParams = GetRequiredParameters(null); + ParameterProvider[] internalConstructorParameters = [authPolicyParam, _endpointParameter, .. requiredNonAuthParams, clientOptionsParameter]; + + var internalConstructor = new ConstructorProvider( + new ConstructorSignature(Type, _publicCtorDescription, MethodSignatureModifiers.Internal, internalConstructorParameters), + BuildPrimaryConstructorBody(internalConstructorParameters, null, authPolicyParam, clientOptionsProvider, clientOptionsParameter, addExplicitValidation: true), + this); + primaryConstructors.Add(internalConstructor); + + // Add public constructors with auth — same pattern as root client if (_apiKeyAuthFields != null) { AppendSubClientPublicConstructorsForAuth(_apiKeyAuthFields, primaryConstructors, secondaryConstructors); } - // if there is oauth2 auth if (_oauth2Fields != null) { AppendSubClientPublicConstructorsForAuth(_oauth2Fields, primaryConstructors, secondaryConstructors); } - // if there is no auth + bool onlyContainsUnsupportedAuth = _inputAuth != null && _apiKeyAuthFields == null && _oauth2Fields == null; if (_apiKeyAuthFields == null && _oauth2Fields == null) { - AppendSubClientPublicConstructorsForAuth(null, primaryConstructors, secondaryConstructors); + AppendSubClientPublicConstructorsForAuth(null, primaryConstructors, secondaryConstructors, onlyContainsUnsupportedAuth); } constructors.AddRange(secondaryConstructors); constructors.AddRange(primaryConstructors); + // Add Settings constructor for individually-initialized sub-clients + foreach (var settingsConstructor in BuildSettingsConstructors()) + { + constructors.Add(settingsConstructor); + } + void AppendSubClientPublicConstructorsForAuth( AuthFields? authFields, List primaryConstructors, - List secondaryConstructors) - { - // For a sub-client with individual initialization, we need: - // - endpoint parameter - // - auth parameter (if auth exists) - // - client options parameter (we need to get this from the root client) - var rootClient = GetRootClient(); - var clientOptionsParameter = rootClient?.ClientOptionsParameter; - var clientOptionsProvider = rootClient?.ClientOptions; - if (clientOptionsParameter == null || clientOptionsProvider == null) + List secondaryConstructors, + bool onlyContainsUnsupportedAuth = false) + { + // Public constructor with credential parameter — delegates to the internal constructor via this(...). + var requiredParameters = GetRequiredParameters(authFields?.AuthField); + ParameterProvider[] primaryConstructorParameters = [_endpointParameter, .. requiredParameters, clientOptionsParameter]; + var constructorModifier = onlyContainsUnsupportedAuth ? MethodSignatureModifiers.Internal : MethodSignatureModifiers.Public; + + // Build the auth policy expression for the this() initializer + ValueExpression authPolicyArg = BuildAuthPolicyArgument(authFields, requiredParameters); + var initializerArgs = new List { authPolicyArg, _endpointParameter }; + string? authParamName = authFields != null + ? (authFields.AuthField.Name != TokenProviderFieldName ? CredentialParamName : authFields.AuthField.AsParameter.Name) + : null; + foreach (var p in requiredParameters) { - // Cannot create public constructor without client options - return; + if (authParamName == null || p.Name != authParamName) + { + initializerArgs.Add(p); + } } + initializerArgs.Add(clientOptionsParameter!); - var requiredParameters = GetRequiredParameters(authFields?.AuthField); - ParameterProvider[] primaryConstructorParameters = [_endpointParameter, .. requiredParameters, clientOptionsParameter]; var primaryConstructor = new ConstructorProvider( - new ConstructorSignature(Type, _publicCtorDescription, MethodSignatureModifiers.Public, primaryConstructorParameters), - BuildPrimaryConstructorBody(primaryConstructorParameters, authFields, clientOptionsProvider, clientOptionsParameter), + new ConstructorSignature(Type, _publicCtorDescription, constructorModifier, primaryConstructorParameters, + initializer: new ConstructorInitializer(false, initializerArgs)), + MethodBodyStatement.Empty, this); - primaryConstructors.Add(primaryConstructor); // If the endpoint parameter contains an initialization value, it is not required. ParameterProvider[] secondaryConstructorParameters = _endpointParameter.InitializationValue is null ? [_endpointParameter, .. requiredParameters] : [.. requiredParameters]; - var secondaryConstructor = BuildSecondaryConstructor(secondaryConstructorParameters, primaryConstructorParameters, MethodSignatureModifiers.Public); + var secondaryConstructor = BuildSecondaryConstructor(secondaryConstructorParameters, primaryConstructorParameters, constructorModifier); secondaryConstructors.Add(secondaryConstructor); + + // When endpoint has a default value and there are required parameters, + // add an additional constructor that accepts required parameters + options. + if (_endpointParameter.InitializationValue is not null && requiredParameters.Count > 0) + { + ParameterProvider[] simplifiedConstructorWithOptionsParameters = [.. requiredParameters, clientOptionsParameter]; + var simplifiedConstructorWithOptions = BuildSecondaryConstructor(simplifiedConstructorWithOptionsParameters, primaryConstructorParameters, constructorModifier); + secondaryConstructors.Add(simplifiedConstructorWithOptions); + } } } @@ -734,7 +911,7 @@ private IReadOnlyList GetRequiredParameters(FieldProvider? au var authParameter = authField.AsParameter; if (authField.Name != TokenProviderFieldName) { - authParameter.Update(name: "credential"); + authParameter.Update(name: CredentialParamName); } requiredParameters.Add(authParameter); } @@ -753,12 +930,34 @@ private IReadOnlyList GetRequiredParameters(FieldProvider? au return param; } - private MethodBodyStatement[] BuildPrimaryConstructorBody(IReadOnlyList primaryConstructorParameters, AuthFields? authFields, ClientOptionsProvider? clientOptionsProvider, ParameterProvider? clientOptionsParameter) + private MethodBodyStatement[] BuildPrimaryConstructorBody(IReadOnlyList primaryConstructorParameters, AuthFields? authFields, ParameterProvider? authPolicyParam, ClientOptionsProvider? clientOptionsProvider, ParameterProvider? clientOptionsParameter, bool addExplicitValidation = false) { if (clientOptionsProvider is null || clientOptionsParameter is null) { return [MethodBodyStatement.Empty]; } + + List body = []; + // Add parameter validation assertions explicitly only for internal constructors. + // The framework's automatic validation only applies to public methods, so internal + // implementation constructors need explicit validation since they contain the body. + if (addExplicitValidation) + { + bool hasValidation = false; + foreach (var p in primaryConstructorParameters) + { + if (p.Validation != ParameterValidationType.None) + { + body.Add(ArgumentSnippets.ValidateParameter(p)); + hasValidation = true; + } + } + if (hasValidation) + { + body.Add(MethodBodyStatement.EmptyLine); + } + } + AssignmentExpression endpointAssignment; if (_endpointParameter.Type.Equals(typeof(string))) { @@ -773,11 +972,9 @@ private MethodBodyStatement[] BuildPrimaryConstructorBody(IReadOnlyList body = [ - clientOptionsParameter.Assign(clientOptionsParameter.InitializationValue!, nullCoalesce: true).Terminate(), - MethodBodyStatement.EmptyLine, - endpointAssignment.Terminate() - ]; + body.Add(clientOptionsParameter.Assign(clientOptionsParameter.InitializationValue!, nullCoalesce: true).Terminate()); + body.Add(MethodBodyStatement.EmptyLine); + body.Add(endpointAssignment.Terminate()); // add other parameter assignments to their corresponding fields foreach (var p in primaryConstructorParameters) @@ -798,23 +995,39 @@ private MethodBodyStatement[] BuildPrimaryConstructorBody(IReadOnlyList().KeyAuthorizationPolicy(keyAuthFields.AuthField, keyAuthFields.AuthorizationHeaderField, keyPrefixExpression)); - perRetryPolicies = New.Array(ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType, isInline: true, [.. perRetryPoliciesList]); - break; - case OAuth2Fields oauth2AuthFields: - perRetryPoliciesList.Add(This.ToApi().TokenAuthorizationPolicy(oauth2AuthFields.AuthField, oauth2AuthFields.AuthorizationScopesField)); - perRetryPolicies = New.Array(ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType, isInline: true, [.. perRetryPoliciesList]); - break; - default: - perRetryPolicies = New.Array(ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType, isInline: true, [.. perRetryPoliciesList]); - break; + // Internal implementation constructor: generate a runtime null check for the auth policy. + // No-auth clients pass null, so we must guard against adding null to the policies array. + var pipelinePolicyType = ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType; + var perRetryWithoutAuth = New.Array(pipelinePolicyType, isInline: true, [.. perRetryPoliciesList]); + var perRetryWithAuth = New.Array(pipelinePolicyType, isInline: true, [.. perRetryPoliciesList, authPolicyParam]); + + body.Add(new IfElseStatement( + authPolicyParam.NotEqual(Null), + PipelineProperty.Assign(This.ToApi().Create(clientOptionsParameter, perRetryWithAuth)).Terminate(), + PipelineProperty.Assign(This.ToApi().Create(clientOptionsParameter, perRetryWithoutAuth)).Terminate())); } + else + { + switch (authFields) + { + case ApiKeyFields keyAuthFields: + ValueExpression? keyPrefixExpression = keyAuthFields.AuthorizationApiKeyPrefixField != null ? (ValueExpression)keyAuthFields.AuthorizationApiKeyPrefixField : null; + perRetryPoliciesList.Add(This.ToApi().KeyAuthorizationPolicy(keyAuthFields.AuthField, keyAuthFields.AuthorizationHeaderField, keyPrefixExpression)); + perRetryPolicies = New.Array(ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType, isInline: true, [.. perRetryPoliciesList]); + break; + case OAuth2Fields oauth2AuthFields: + perRetryPoliciesList.Add(This.ToApi().TokenAuthorizationPolicy(oauth2AuthFields.AuthField, oauth2AuthFields.AuthorizationScopesField)); + perRetryPolicies = New.Array(ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType, isInline: true, [.. perRetryPoliciesList]); + break; + default: + perRetryPolicies = New.Array(ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType, isInline: true, [.. perRetryPoliciesList]); + break; + } - body.Add(PipelineProperty.Assign(This.ToApi().Create(clientOptionsParameter, perRetryPolicies)).Terminate()); + body.Add(PipelineProperty.Assign(This.ToApi().Create(clientOptionsParameter, perRetryPolicies)).Terminate()); + } foreach (var f in Fields) { @@ -828,6 +1041,37 @@ private MethodBodyStatement[] BuildPrimaryConstructorBody(IReadOnlyList + /// Builds the ValueExpression for the AuthenticationPolicy argument passed to the internal constructor initializer. + /// + private ValueExpression BuildAuthPolicyArgument(AuthFields? authFields, IReadOnlyList requiredParameters) + { + if (authFields is ApiKeyFields keyFields) + { + // ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader, prefix?) + var credParam = requiredParameters.FirstOrDefault(p => p.Name == CredentialParamName); + if (credParam != null) + { + ValueExpression? keyPrefixExpression = keyFields.AuthorizationApiKeyPrefixField != null ? (ValueExpression)keyFields.AuthorizationApiKeyPrefixField : null; + return This.ToApi().KeyAuthorizationPolicy(credParam, keyFields.AuthorizationHeaderField, keyPrefixExpression); + } + } + else if (authFields is OAuth2Fields oauth2Fields) + { + // new BearerTokenPolicy(tokenProvider, AuthorizationScopes) + // The param name is derived from the field name: _tokenProvider → tokenProvider, _tokenCredential → credential + var credParam = requiredParameters.FirstOrDefault(p => + p.Name == TokenProviderFieldName.ToVariableName() || + p.Name == CredentialParamName); + if (credParam != null) + { + return This.ToApi().TokenAuthorizationPolicy(credParam, oauth2Fields.AuthorizationScopesField); + } + } + + return Null; + } + /// /// Builds the secondary constructor for the client. The secondary constructor contains all required parameters as arguments. /// @@ -922,11 +1166,8 @@ protected override ScmMethodProvider[] BuildMethods() // Identify subclient-specific parameters by comparing with the parent's input parameters. // Parameters present on both parent and subclient are shared (sourced from parent fields/properties). - var parentInputParamNames = _inputClient.Parameters - .Select(p => p.Name) - .ToHashSet(StringComparer.OrdinalIgnoreCase); var subClientSpecificParamNames = subClient._inputClient.Parameters - .Where(p => !parentInputParamNames.Contains(p.Name)) + .Where(p => !IsSupersededByClientParameter(p, _effectiveClientParamNames.Value)) .Select(p => p.Name) .ToHashSet(StringComparer.OrdinalIgnoreCase); @@ -1276,10 +1517,17 @@ private IReadOnlyList GetSubClients() private IReadOnlyList GetAllClientParameters() { - // Get all parameters from the client and its methods, deduplicating by SerializedName to handle renamed parameters + var clientParamNames = _effectiveClientParamNames.Value; + + // Get all parameters from the client and its methods, deduplicating by SerializedName to handle renamed parameters. + // When @paramAlias is used (via @clientInitialization), an operation parameter may map + // to a client parameter via MethodParameterSegments or ParamAlias. Exclude such operation + // parameters since the client parameter supersedes them. var parameters = _inputClient.Parameters.Concat( _inputClient.Methods.SelectMany(m => m.Operation.Parameters) - .Where(p => p.Scope == InputParameterScope.Client)).DistinctBy(p => p.SerializedName ?? p.Name).ToArray(); + .Where(p => p.Scope == InputParameterScope.Client) + .Where(p => !IsSupersededByClientParameter(p, clientParamNames))) + .DistinctBy(p => p.SerializedName ?? p.Name).ToArray(); foreach (var subClient in _subClients.Value) { @@ -1291,6 +1539,26 @@ private IReadOnlyList GetAllClientParameters() return parameters; } + /// + /// Determines whether a parameter is superseded by an existing client parameter, + /// either by direct name match or via MethodParameterSegments. + /// + private static bool IsSupersededByClientParameter(InputParameter param, HashSet clientParamNames) + { + if (clientParamNames.Contains(param.Name)) + { + return true; + } + + if (param.MethodParameterSegments is { Count: > 0 } segments && + clientParamNames.Contains(segments[0].Name)) + { + return true; + } + + return false; + } + private FieldProvider BuildTokenCredentialScopesField(InputOAuth2Auth oauth2Auth, CSharpType tokenCredentialType) { return tokenCredentialType.Equals(ClientPipelineProvider.Instance.TokenCredentialType) @@ -1326,7 +1594,7 @@ [new MemberExpression(typeof(GetTokenOptions), nameof(GetTokenOptions.ScopesProp } return new FieldProvider( - FieldModifiers.Private | FieldModifiers.ReadOnly, + FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, typeof(Dictionary[]), TokenCredentialFlowsFieldName, this, diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientResultProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientResultProvider.cs index 50c312cc161..ab246abdb3d 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientResultProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientResultProvider.cs @@ -1,14 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using System.ClientModel.Primitives; using System.ClientModel; +using System.ClientModel.Primitives; using Microsoft.TypeSpec.Generator.Expressions; using Microsoft.TypeSpec.Generator.Input; -using Microsoft.TypeSpec.Generator.Snippets; -using static Microsoft.TypeSpec.Generator.Snippets.Snippet; using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; +using Microsoft.TypeSpec.Generator.Snippets; +using static Microsoft.TypeSpec.Generator.Snippets.Snippet; namespace Microsoft.TypeSpec.Generator.ClientModel.Providers { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientSettingsProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientSettingsProvider.cs new file mode 100644 index 00000000000..69f14aca61c --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ClientSettingsProvider.cs @@ -0,0 +1,561 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using Microsoft.Extensions.Configuration; +using Microsoft.TypeSpec.Generator.Expressions; +using Microsoft.TypeSpec.Generator.Input; +using Microsoft.TypeSpec.Generator.Input.Extensions; +using Microsoft.TypeSpec.Generator.Primitives; +using Microsoft.TypeSpec.Generator.Providers; +using Microsoft.TypeSpec.Generator.Snippets; +using Microsoft.TypeSpec.Generator.Statements; +using static Microsoft.TypeSpec.Generator.Snippets.Snippet; + +namespace Microsoft.TypeSpec.Generator.ClientModel.Providers +{ + public class ClientSettingsProvider : TypeProvider + { + internal const string ClientSettingsDiagnosticId = "SCME0002"; + + private readonly ClientProvider _clientProvider; + +#pragma warning disable SCME0002 // ClientSettings is for evaluation purposes only + internal static readonly CSharpType ClientSettingsType = typeof(ClientSettings); +#pragma warning restore SCME0002 + + internal static readonly CSharpType IConfigurationSectionType = typeof(IConfigurationSection); + + internal ClientSettingsProvider(InputClient inputClient, ClientProvider clientProvider) + { + _clientProvider = clientProvider; + + var inputEndpointParam = inputClient.Parameters + .FirstOrDefault(p => p is InputEndpointParameter ep && ep.IsEndpoint) as InputEndpointParameter; + + if (inputEndpointParam != null) + { + var endpointType = ScmCodeModelGenerator.Instance.TypeFactory.CreateCSharpType(inputEndpointParam.Type); + if (endpointType != null) + { + EndpointProperty = new PropertyProvider( + null, + MethodSignatureModifiers.Public, + endpointType.WithNullable(true), + inputEndpointParam.Name.ToIdentifierName(), + new AutoPropertyBody(true), + this); + } + } + + // Collect non-endpoint, non-apiVersion required parameters (auth params come separately via InputClient.Auth) + OtherRequiredParams = inputClient.Parameters + .Where(p => p.IsRequired && !p.IsApiVersion && + !(p is InputEndpointParameter ep && ep.IsEndpoint)) + .Select(p => ScmCodeModelGenerator.Instance.TypeFactory.CreateParameter(p)) + .Where(p => p != null) + .Select(p => p!) + .ToList(); + } + + /// Gets the endpoint property (name and type) when the client has an endpoint parameter. + internal PropertyProvider? EndpointProperty { get; } + + /// Gets non-endpoint, non-auth required parameters that have settings properties. + internal IReadOnlyList OtherRequiredParams { get; } + + protected override FormattableString BuildDescription() + => $"Represents the settings used to configure a that can be loaded from an ."; + + protected override string BuildRelativeFilePath() => Path.Combine("src", "Generated", $"{Name}.cs"); + + protected override string BuildName() => $"{_clientProvider.Name}Settings"; + + protected override string BuildNamespace() => _clientProvider.Type.Namespace; + + protected override CSharpType BuildBaseType() => ClientSettingsType; + + protected override IReadOnlyList BuildAttributes() + { + return [new AttributeStatement(typeof(ExperimentalAttribute), Literal(ClientSettingsDiagnosticId))]; + } + + protected override PropertyProvider[] BuildProperties() + { + var properties = new List(); + + if (EndpointProperty != null) + { + properties.Add(EndpointProperty); + } + + foreach (var param in OtherRequiredParams) + { + properties.Add(new PropertyProvider( + null, + MethodSignatureModifiers.Public, + param.Type.WithNullable(true), + param.Name.ToIdentifierName(), + new AutoPropertyBody(true), + this)); + } + + // Include custom constructor parameters from custom code (e.g., hand-written constructors + // added via partial classes) that are not already covered by generated parameters. + // Only consider public constructors — internal/private constructors contain infrastructure + // parameters (pipeline, key credentials, etc.) that are not suitable for configuration binding. + var customConstructors = _clientProvider.CustomCodeView?.Constructors; + if (customConstructors != null) + { + var knownProps = new HashSet(properties.Select(p => p.Name)); + knownProps.Add("Credential"); + knownProps.Add("Options"); + foreach (var ctor in customConstructors) + { + if (!ctor.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Public) || + HasSettingsParameter(ctor)) + { + continue; + } + + foreach (var param in ctor.Signature.Parameters) + { + var propName = param.Name.ToIdentifierName(); + if (!knownProps.Contains(propName) && !IsStandardParameterType(param.Type)) + { + properties.Add(new PropertyProvider( + null, + MethodSignatureModifiers.Public, + param.Type.WithNullable(true), + propName, + new AutoPropertyBody(true), + this)); + knownProps.Add(propName); + } + } + } + } + + var clientOptions = _clientProvider.EffectiveClientOptions; + if (clientOptions != null) + { + properties.Add(new PropertyProvider( + null, + MethodSignatureModifiers.Public, + clientOptions.Type.WithNullable(true), + "Options", + new AutoPropertyBody(true), + this)); + } + + return [.. properties]; + } + + protected override MethodProvider[] BuildMethods() + { + var sectionParam = new ParameterProvider("section", $"The configuration section.", IConfigurationSectionType); + var body = new List(); + + if (EndpointProperty != null) + { + AppendBindingForProperty(body, sectionParam, EndpointProperty.Name, EndpointProperty.Name.ToVariableName(), EndpointProperty.Type); + } + + foreach (var param in OtherRequiredParams) + { + var propName = param.Name.ToIdentifierName(); + AppendBindingForProperty(body, sectionParam, propName, param.Name.ToVariableName(), param.Type); + } + + // Bind custom constructor parameters from custom code. + // Only consider public constructors — internal/private constructors contain infrastructure + // parameters (pipeline, key credentials, etc.) that are not suitable for configuration binding. + var customConstructors = _clientProvider.CustomCodeView?.Constructors; + if (customConstructors != null) + { + var knownProps = new HashSet(); + if (EndpointProperty != null) + { + knownProps.Add(EndpointProperty.Name); + } + foreach (var param in OtherRequiredParams) + { + knownProps.Add(param.Name.ToIdentifierName()); + } + knownProps.Add("Credential"); + knownProps.Add("Options"); + foreach (var ctor in customConstructors) + { + if (!ctor.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Public) || + HasSettingsParameter(ctor)) + { + continue; + } + + foreach (var param in ctor.Signature.Parameters) + { + var propName = param.Name.ToIdentifierName(); + if (!knownProps.Contains(propName) && !IsStandardParameterType(param.Type)) + { + AppendBindingForProperty(body, sectionParam, propName, param.Name.ToVariableName(), param.Type); + knownProps.Add(propName); + } + } + } + } + + var clientOptions = _clientProvider.EffectiveClientOptions; + if (clientOptions != null) + { + AppendComplexObjectBinding(body, sectionParam, "Options", "options", clientOptions.Type); + } + + var bindCoreMethod = new MethodProvider( + new MethodSignature( + "BindCore", + $"Binds configuration values from the given section.", + MethodSignatureModifiers.Protected | MethodSignatureModifiers.Override, + null, + null, + [sectionParam]), + new MethodBodyStatements([.. body]), + this); + + return [bindCoreMethod]; + } + + /// + /// Dispatches to the appropriate binding method based on the property type. + /// + internal static void AppendBindingForProperty( + List body, + ParameterProvider sectionParam, + string propName, + string varName, + CSharpType type) + { + // Handle non-framework types (enums, complex objects) + if (!type.IsFrameworkType) + { + if (type.IsEnum) + { + if (type.IsStruct) + { + AppendEnumBinding(body, sectionParam, propName, varName, type); + } + else + { + AppendFixedEnumBinding(body, sectionParam, propName, varName, type); + } + } + else if (type.IsStruct && TryGetStructUnderlyingType(type) is { } underlyingType) + { + // Non-enum struct with a discoverable constructor parameter type. + // Use the constructor's parameter type to pick the correct binding. + if (underlyingType.FrameworkType == typeof(string)) + { + AppendEnumBinding(body, sectionParam, propName, varName, type); + } + else if (underlyingType.FrameworkType == typeof(int) || underlyingType.FrameworkType == typeof(long)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(int)); + } + else if (underlyingType.FrameworkType == typeof(float) || underlyingType.FrameworkType == typeof(double)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(double)); + } + else + { + AppendComplexObjectBinding(body, sectionParam, propName, varName, type); + } + } + else + { + AppendComplexObjectBinding(body, sectionParam, propName, varName, type); + } + return; + } + + // Handle collection types (string[]/List) + if (type.IsList) + { + AppendStringListBinding(body, sectionParam, propName, varName, type); + return; + } + + var frameworkType = type.FrameworkType; + + if (frameworkType == typeof(string)) + { + AppendStringBinding(body, sectionParam, propName, varName); + } + else if (frameworkType == typeof(bool)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(bool)); + } + else if (frameworkType == typeof(int)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(int)); + } + else if (frameworkType == typeof(long)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(long)); + } + else if (frameworkType == typeof(float)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(float)); + } + else if (frameworkType == typeof(double)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(double)); + } + else if (frameworkType == typeof(TimeSpan)) + { + AppendTryParseBinding(body, sectionParam, propName, varName, typeof(TimeSpan)); + } + else if (frameworkType == typeof(Uri)) + { + AppendUriTryCreateBinding(body, sectionParam, propName, varName); + } + else + { + AppendComplexObjectBinding(body, sectionParam, propName, varName, type); + } + } + + /// + /// Appends a string binding: string? val = section[name]; if (!string.IsNullOrEmpty(val)) PropName = val; + /// + internal static void AppendStringBinding( + List body, + ParameterProvider sectionParam, + string propName, + string varName) + { + body.Add(Declare(varName, new CSharpType(typeof(string), isNullable: true), new IndexerExpression(sectionParam, Literal(propName)), out var valVar)); + var ifStatement = new IfStatement(Not(StringSnippets.IsNullOrEmpty(valVar.As()))); + ifStatement.Add(This.Property(propName).Assign(valVar).Terminate()); + body.Add(ifStatement); + } + + /// + /// Appends a TryParse-based binding statement: if (Type.TryParse(section[name], out Type val)) PropName = val; + /// + internal static void AppendTryParseBinding( + List body, + ParameterProvider sectionParam, + string propName, + string varName, + Type parseType) + { + var outDecl = new DeclarationExpression(parseType, varName, out var parsedVar, isOut: true); + var ifStatement = new IfStatement(Static(parseType).Invoke("TryParse", + new ValueExpression[] + { + new IndexerExpression(sectionParam, Literal(propName)), + outDecl + })); + ifStatement.Add(This.Property(propName).Assign(parsedVar).Terminate()); + body.Add(ifStatement); + } + + /// + /// Appends a Uri.TryCreate binding: if (Uri.TryCreate(section[name], UriKind.Absolute, out Uri val)) PropName = val; + /// + internal static void AppendUriTryCreateBinding( + List body, + ParameterProvider sectionParam, + string propName, + string varName) + { + var outUriDecl = new DeclarationExpression(typeof(Uri), varName, out var uriVar, isOut: true); + var ifStatement = new IfStatement(Static(typeof(Uri)).Invoke("TryCreate", + new ValueExpression[] + { + new IndexerExpression(sectionParam, Literal(propName)), + new MemberExpression(typeof(UriKind), nameof(UriKind.Absolute)), + outUriDecl + })); + ifStatement.Add(This.Property(propName).Assign(uriVar).Terminate()); + body.Add(ifStatement); + } + + /// + /// Appends a string list binding: IConfigurationSection s = section.GetSection(name); + /// if (s.Exists()) { PropName = s.GetChildren().Where(c => c.Value is not null).Select(c => c.Value!).ToList(); } + /// + internal static void AppendStringListBinding( + List body, + ParameterProvider sectionParam, + string propName, + string varName, + CSharpType type) + { + // Only handle List for now + if (type.Arguments.Count == 0 || + !type.Arguments[0].IsFrameworkType || + type.Arguments[0].FrameworkType != typeof(string)) + { + return; + } + + // IConfigurationSection listSection = section.GetSection("PropName"); + body.Add(Declare((propName + "Section").ToVariableName(), IConfigurationSectionType, sectionParam.Invoke("GetSection", Literal(propName)), out var sectionVar)); + + // if (listSection.Exists()) + var ifExistsStatement = new IfStatement(sectionVar.Invoke("Exists")); + + // listSection.GetChildren().Where(c => c.Value is not null).Select(c => c.Value!).ToList() + var cWhereVar = new VariableExpression(IConfigurationSectionType, "c"); + var whereCondition = cWhereVar.Property("Value").IsNot(Null); + var whereLambda = new FuncExpression([cWhereVar.Declaration], whereCondition); + var whereResult = sectionVar.Invoke("GetChildren") + .Invoke("Where", [whereLambda], null, false, extensionType: typeof(Enumerable)); + + var cSelectVar = new VariableExpression(IConfigurationSectionType, "c"); + var selectBody = new UnaryOperatorExpression("!", cSelectVar.Property("Value"), true); + var selectLambda = new FuncExpression([cSelectVar.Declaration], selectBody); + var selectResult = whereResult + .Invoke("Select", [selectLambda], null, false, extensionType: typeof(Enumerable)); + + var toListResult = selectResult.ToList(); + + ifExistsStatement.Add(This.Property(propName).Assign(toListResult).Terminate()); + body.Add(ifExistsStatement); + } + + /// + /// Appends an extensible enum binding: if (section[name] is string val) { PropName = new TypeName(val); } + /// + internal static void AppendEnumBinding( + List body, + ParameterProvider sectionParam, + string propName, + string varName, + CSharpType type) + { + var decl = Declare(varName, new CSharpType(typeof(string)), out var declVar); + var ifStatement = new IfStatement(new IndexerExpression(sectionParam, Literal(propName)).Is(decl)); + ifStatement.Add(This.Property(propName).Assign(New.Instance(type, declVar)).Terminate()); + body.Add(ifStatement); + } + + /// + /// Appends a fixed enum binding: if (Enum.TryParse(section[name], out TypeName val)) { PropName = val; } + /// + internal static void AppendFixedEnumBinding( + List body, + ParameterProvider sectionParam, + string propName, + string varName, + CSharpType type) + { + var outDecl = new DeclarationExpression(type, varName, out var parsedVar, isOut: true); + var ifStatement = new IfStatement(Static(typeof(Enum)).Invoke("TryParse", + new ValueExpression[] + { + new IndexerExpression(sectionParam, Literal(propName)), + outDecl + })); + ifStatement.Add(This.Property(propName).Assign(parsedVar).Terminate()); + body.Add(ifStatement); + } + + /// + /// Appends a complex object binding: IConfigurationSection s = section.GetSection(name); + /// if (s.Exists()) { PropName = new TypeName(s); } + /// + internal static void AppendComplexObjectBinding( + List body, + ParameterProvider sectionParam, + string propName, + string varName, + CSharpType type) + { + // IConfigurationSection {name}Section = section.GetSection("PropName"); + body.Add(Declare((propName + "Section").ToVariableName(), IConfigurationSectionType, sectionParam.Invoke("GetSection", Literal(propName)), out var sectionVar)); + + // if ({name}Section.Exists()) { PropName = new TypeName({name}Section); } + var ifExistsStatement = new IfStatement(sectionVar.Invoke("Exists")); + ifExistsStatement.Add(This.Property(propName).Assign(New.Instance(type, sectionVar)).Terminate()); + body.Add(ifExistsStatement); + } + + /// + /// Finds the single-value constructor parameter type for a non-framework struct type + /// by looking up the type's constructors in custom code. Returns null if no suitable + /// constructor is found. + /// + internal static CSharpType? TryGetStructUnderlyingType(CSharpType type) + { + var typeProvider = CodeModelGenerator.Instance.SourceInputModel + .FindForTypeInCustomization(type.Namespace, type.Name); + + if (typeProvider == null) + { + return null; + } + + foreach (var ctor in typeProvider.Constructors) + { + var parameters = ctor.Signature.Parameters; + if (parameters.Count == 1 && parameters[0].Type.IsFrameworkType) + { + return parameters[0].Type; + } + } + + return null; + } + + /// + /// Checks if a type is a standard client parameter type that should not be included as a + /// custom settings property (credential types, endpoint types, or options types). + /// + internal static bool IsStandardParameterType(CSharpType type) + { + var effectiveType = type.IsNullable ? type.WithNullable(false) : type; + + // Skip endpoint types (Uri) + if (effectiveType.IsFrameworkType && effectiveType.FrameworkType == typeof(Uri)) + { + return true; + } + + // Skip credential types — compare by both type equality and name since the CSharpType + // from CustomCodeView (Roslyn-based) may not directly equal typeof()-based CSharpType. + var tokenCredentialType = ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.TokenCredentialType; + if (tokenCredentialType != null) + { + if (effectiveType.Equals(tokenCredentialType) || + effectiveType.Name == tokenCredentialType.Name) + { + return true; + } + } + + // Skip options types (derives from ClientPipelineOptions) + var optionsType = ScmCodeModelGenerator.Instance.TypeFactory.ClientPipelineApi.ClientPipelineOptionsType; + if (effectiveType.Equals(optionsType) || effectiveType.Name == optionsType.Name) + { + return true; + } + + return false; + } + + /// + /// Returns true if the constructor has a parameter whose type matches this client's + /// settings type. + /// + internal bool HasSettingsParameter(ConstructorProvider ctor) + { + return ctor.Signature.Parameters.Any(p => p.Type.Name == Type.Name); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/CollectionResultDefinition.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/CollectionResultDefinition.cs index d704c3eec74..453815faea3 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/CollectionResultDefinition.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/CollectionResultDefinition.cs @@ -182,7 +182,34 @@ private PropertyProvider FindPropertyInModelHierarchy(TypeProvider model, string protected override string BuildNamespace() => Client.Type.Namespace; protected override string BuildName() - => $"{Client.Type.Name}{Operation.Name.ToIdentifierName()}{(IsAsync ? "Async" : "")}CollectionResult{(ItemModelType == null ? "" : "OfT")}"; + { + var operationName = Operation.Name.ToIdentifierName(); + // Check if there is another paging operation in the same client whose name would produce a collision. + // If so, use the OriginalName to differentiate. + if (HasPagingOperationNameCollision(operationName)) + { + operationName = (Operation.OriginalName ?? Operation.Name).ToIdentifierName(); + } + return $"{Client.Type.Name}{operationName}{(IsAsync ? "Async" : "")}CollectionResult{(ItemModelType == null ? "" : "OfT")}"; + } + + private bool HasPagingOperationNameCollision(string operationName) + { + var pagingMethods = Client.InputClient.Methods.OfType(); + int count = 0; + foreach (var method in pagingMethods) + { + if (method.Operation.Name.ToIdentifierName() == operationName) + { + count++; + if (count > 1) + { + return true; + } + } + } + return false; + } protected override TypeSignatureModifiers BuildDeclarationModifiers() => TypeSignatureModifiers.Internal | TypeSignatureModifiers.Partial | TypeSignatureModifiers.Class; @@ -531,7 +558,7 @@ private ScopedApi InvokeCreateRequestForNextLink(ValueExpressio Client.RestClient.GetCreateNextLinkRequestMethod(Operation).Signature.Name; return ClientField.Invoke( createNextLinkRequestMethodName, - [nextPageUri, ..RequestFields]) + [nextPageUri, .. RequestFields]) .As(); } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.Xml.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.Xml.cs index 7fbbdfd8292..1cb7f967592 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.Xml.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.Xml.cs @@ -139,9 +139,31 @@ private MethodBodyStatement[] BuildXmlWriteMethodBody() ? _xmlWriterSnippet.WriteStartElement(ns.Prefix, nameHintExpression, ns.Namespace) : _xmlWriterSnippet.WriteStartElement(nameHintExpression); + // When the model has a root namespace, pre-declare property namespaces that + // differ from the root so they appear on the root element rather than inline. + var nsDeclarations = new List(); + if (ns != null) + { + var propertyNamespaces = AllCategorizedXmlProperties.Namespaces; + if (propertyNamespaces != null) + { + foreach (var kvp in propertyNamespaces) + { + if (kvp.Key != ns.Namespace) + { + nsDeclarations.Add( + _xmlWriterSnippet.WriteNamespaceDeclaration(kvp.Value.Prefix, kvp.Key)); + } + } + } + } + + var ifBody = new List { writeStartElement }; + ifBody.AddRange(nsDeclarations); + return [ - new IfStatement(nameHintNotNull) { writeStartElement }, + new IfStatement(nameHintNotNull) { ifBody.ToArray() }, MethodBodyStatement.EmptyLine, This.Invoke(XmlModelWriteCoreMethodName, _xmlWriterParameter, _serializationOptionsParameter).Terminate(), MethodBodyStatement.EmptyLine, @@ -161,7 +183,6 @@ private MethodBodyStatement CreateXmlWriteAttributeStatement(XmlPropertyInfo pro var xmlWireInfo = prop.XmlWireInfo; if (xmlWireInfo.Namespace != null && namespaces?.TryGetValue(xmlWireInfo.Namespace.Namespace, out var nsInfo) == true) { - var stringValue = CreateXmlSerializeValueExpression(prop.SerializationExp, prop.PropertyType, prop.SerializationFormat); var writeStatement = _xmlWriterSnippet.WriteAttributeString( nsInfo.Prefix, xmlWireInfo.Name, @@ -246,9 +267,7 @@ private MethodBodyStatement CreateXmlWriteValueStatement(ValueExpression value, if (!underlyingType.IsFrameworkType) { - return underlyingType.IsEnum - ? _xmlWriterSnippet.WriteValue(CreateXmlSerializeValueExpression(value, valueType, serializationFormat)) - : _xmlWriterSnippet.WriteObjectValue(value.As(valueType), _serializationOptionsParameter); + return ScmCodeModelGenerator.Instance.TypeFactory.SerializeXmlValue(valueType, value, _xmlWriterSnippet, _mrwOptionsParameterSnippet, serializationFormat); } return underlyingType.FrameworkType switch @@ -260,7 +279,7 @@ Type t when (t == typeof(byte[]) || t == typeof(BinaryData)) && serializationFor ? value.As().ToArray() : value.NullableStructValue(valueType), serializationFormat.ToFormatSpecifier()), - _ => _xmlWriterSnippet.WriteValue(CreateXmlSerializeValueExpression(value, valueType, serializationFormat)) + _ => ScmCodeModelGenerator.Instance.TypeFactory.SerializeXmlValue(valueType, value, _xmlWriterSnippet, _mrwOptionsParameterSnippet, serializationFormat) }; } @@ -408,27 +427,8 @@ private MethodBodyStatement CreateXmlWriteDictionaryEntryStatement( private MethodBodyStatement CreateXmlWriteTextContentStatement(XmlPropertyInfo prop) { - var serializedValue = CreateXmlSerializeValueExpression(prop.SerializationExp, prop.PropertyType, prop.SerializationFormat); - return WrapInIsDefinedCheck(prop, _xmlWriterSnippet.WriteValue(serializedValue)); - } - - private ValueExpression CreateXmlSerializeValueExpression(ValueExpression value, CSharpType valueType, SerializationFormat serializationFormat) - { - var underlyingType = valueType.IsNullable && valueType.Arguments.Count > 0 - ? valueType.Arguments[0] - : valueType; - - if (underlyingType.IsEnum) - { - return underlyingType.ToSerial(value.NullableStructValue(valueType)); - } - - if (!underlyingType.IsFrameworkType) - { - return value; - } - - return CreateXmlSerializePrimitiveExpression(value.NullableStructValue(valueType), underlyingType, serializationFormat); + var writeStatement = ScmCodeModelGenerator.Instance.TypeFactory.SerializeXmlValue(prop.PropertyType, prop.SerializationExp, _xmlWriterSnippet, _mrwOptionsParameterSnippet, prop.SerializationFormat); + return WrapInIsDefinedCheck(prop, writeStatement); } private static ValueExpression CreateXmlSerializePrimitiveExpression(ValueExpression value, CSharpType valueType, SerializationFormat serializationFormat) @@ -864,7 +864,7 @@ private MethodBodyStatement CreateXmlDeserializePropertyAssignment( return CreateXmlDeserializeDictionaryAssignment(childElement, propertyType, propertyExpression, xmlWireInfo, serializationFormat); } - var deserializedValue = CreateXmlDeserializeValueExpression(childElement, propertyType, serializationFormat); + var deserializedValue = ScmCodeModelGenerator.Instance.TypeFactory.DeserializeXmlValue(propertyType, childElement, _mrwOptionsParameterSnippet, serializationFormat); return propertyExpression.Assign(deserializedValue).Terminate(); } @@ -1006,30 +1006,10 @@ private MethodBodyStatement DeserializeXmlValue( return new MethodBodyStatement[] { dictDeclaration, foreachStatement }; } - value = CreateXmlDeserializeValueExpression(element, valueType, serializationFormat); + value = ScmCodeModelGenerator.Instance.TypeFactory.DeserializeXmlValue(valueType, element, _mrwOptionsParameterSnippet, serializationFormat); return MethodBodyStatement.Empty; } - private ValueExpression CreateXmlDeserializeValueExpression(ScopedApi element, CSharpType valueType, SerializationFormat serializationFormat) - { - var underlyingType = valueType.IsNullable && valueType.Arguments.Count > 0 - ? valueType.Arguments[0] - : valueType; - - if (underlyingType.IsEnum && underlyingType.UnderlyingEnumType != null) - { - var underlyingExpression = CreateXmlDeserializePrimitiveExpression(element, underlyingType.UnderlyingEnumType, serializationFormat); - return underlyingType.ToEnum(underlyingExpression); - } - - if (!underlyingType.IsFrameworkType) - { - return GetDeserializationMethodInvocationForType(underlyingType, element, null, _serializationOptionsParameter); - } - - return CreateXmlDeserializePrimitiveExpression(element, valueType, serializationFormat); - } - private static ValueExpression CreateXmlDeserializePrimitiveExpression( ScopedApi element, CSharpType valueType, @@ -1054,6 +1034,54 @@ private static ValueExpression CreateXmlDeserializePrimitiveExpression( }; } + internal static ValueExpression DeserializeXmlValueCore( + CSharpType valueType, + ScopedApi element, + ScopedApi mrwOptions, + SerializationFormat format) + { + var underlyingType = valueType.IsNullable && valueType.Arguments.Count > 0 + ? valueType.Arguments[0] + : valueType; + + if (underlyingType.IsEnum && underlyingType.UnderlyingEnumType != null) + { + var underlyingExpression = CreateXmlDeserializePrimitiveExpression(element, underlyingType.UnderlyingEnumType, format); + return underlyingType.ToEnum(underlyingExpression); + } + + if (!underlyingType.IsFrameworkType) + { + return GetDeserializationMethodInvocationForType(underlyingType, element, null, mrwOptions); + } + + return CreateXmlDeserializePrimitiveExpression(element, valueType, format); + } + + internal static MethodBodyStatement SerializeXmlValueCore( + CSharpType valueType, + ValueExpression value, + ScopedApi xmlWriter, + ScopedApi mrwOptionsParameter, + SerializationFormat serializationFormat) + { + var underlyingType = valueType.IsNullable && valueType.Arguments.Count > 0 + ? valueType.Arguments[0] + : valueType; + + if (underlyingType.IsEnum) + { + return xmlWriter.WriteValue(underlyingType.ToSerial(value.NullableStructValue(valueType))); + } + + if (!underlyingType.IsFrameworkType) + { + return xmlWriter.WriteObjectValue(value.As(valueType), mrwOptionsParameter); + } + + return xmlWriter.WriteValue(CreateXmlSerializePrimitiveExpression(value.NullableStructValue(valueType), underlyingType, serializationFormat)); + } + private MethodBodyStatement CreateXmlDeserializeAttributeStatements( ScopedApi attrVariable, List attributeProperties, diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.cs index d67edf8103d..4159758ce6a 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.cs @@ -1074,7 +1074,7 @@ private List BuildDeserializePropertiesStatements(ScopedApi var propertyExpression = parameter.Property?.AsVariableExpression ?? parameter.Field?.AsVariableExpression; var checkIfJsonPropEqualsName = new IfStatement(jsonProperty.NameEquals(propertySerializationName)) { - DeserializeProperty(propertyName!, propertyType!, wireInfo, propertyExpression!, jsonProperty, serializationAttributes, parameter.Property?.SerializationFormat) + DeserializeProperty(propertyName!, propertyType!, wireInfo, propertyExpression!, jsonProperty, serializationAttributes, wireInfo.SerializationFormat) }; propertyDeserializationStatements.Add(checkIfJsonPropEqualsName); } @@ -1754,7 +1754,7 @@ private MethodBodyStatement[] CreateWritePropertiesStatements(bool isDynamicMode continue; } - propertyStatements.Add(CreateWritePropertyStatement(property.WireInfo, property.Type, property.Name, property, property.SerializationFormat)); + propertyStatements.Add(CreateWritePropertyStatement(property.WireInfo, property.Type, property.Name, property, property.WireInfo.SerializationFormat)); } foreach (var field in _model.CanonicalView.Fields) diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineMessageClassifierProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineMessageClassifierProvider.cs index 9e42f218ff4..32b550c2384 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineMessageClassifierProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineMessageClassifierProvider.cs @@ -1,12 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using Microsoft.TypeSpec.Generator.Expressions; -using static Microsoft.TypeSpec.Generator.Snippets.Snippet; using System.ClientModel.Primitives; -using Microsoft.TypeSpec.Generator.Primitives; using System.Collections.Generic; using System.Linq; +using Microsoft.TypeSpec.Generator.Expressions; +using Microsoft.TypeSpec.Generator.Primitives; +using static Microsoft.TypeSpec.Generator.Snippets.Snippet; namespace Microsoft.TypeSpec.Generator.ClientModel.Providers { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineRequestProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineRequestProvider.cs index e3d0819ba31..63c100116e0 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineRequestProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/PipelineRequestProvider.cs @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System; using System.ClientModel.Primitives; using System.Collections.Generic; using Microsoft.TypeSpec.Generator.Expressions; using Microsoft.TypeSpec.Generator.Statements; -using System; namespace Microsoft.TypeSpec.Generator.ClientModel.Providers { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/RestClientProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/RestClientProvider.cs index 17c09257962..88e710a5373 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/RestClientProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/RestClientProvider.cs @@ -201,6 +201,17 @@ private MethodBodyStatements BuildMessage( paramMap[param.Name] = param; } + // Register client parameters under their paramAlias names so that operation parameters + // (which use the original name) can find the corresponding client parameter. + foreach (var inputParam in _inputClient.Parameters) + { + if (inputParam is InputMethodParameter { ParamAlias: string alias } && + paramMap.TryGetValue(inputParam.Name, out var aliasedParam)) + { + paramMap[alias] = aliasedParam; + } + } + InputPagingServiceMethod? pagingServiceMethod = serviceMethod as InputPagingServiceMethod; var uriBuilderType = ScmCodeModelGenerator.Instance.TypeFactory.HttpRequestApi.ToExpression().UriBuilderType; @@ -431,22 +442,16 @@ private IEnumerable AppendHeaderParameters(HttpRequestApi r statement = request.SetHeaders([Literal(inputHeaderParameter.SerializedName), toStringExpression.As()]); } - if (!TryGetSpecialHeaderParam(inputHeaderParameter, out _) && (!inputHeaderParameter.IsRequired || type?.IsNullable == true || - (type is { IsValueType: false, IsFrameworkType: true } && type.FrameworkType != typeof(string)))) + // If this is a Content-Type header and there's an optional content parameter, wrap in content null check + if (inputHeaderParameter.IsContentType && contentParam != null && + operation.Parameters.Any(p => p is InputBodyParameter bodyParam && !bodyParam.IsRequired)) { - statement = BuildQueryOrHeaderOrPathParameterNullCheck(type, valueExpression, statement); + statement = new IfStatement(contentParam.NotEqual(Null)) { statement }; } - // If this is a Content-Type header and there's an optional content parameter, wrap in content null check - else if (inputHeaderParameter.IsContentType && contentParam != null) + else if (!TryGetSpecialHeaderParam(inputHeaderParameter, out _) && (!inputHeaderParameter.IsRequired || type?.IsNullable == true || + (type is { IsValueType: false, IsFrameworkType: true } && type.FrameworkType != typeof(string)))) { - // Check if any body parameter in the operation is optional - var hasOptionalBody = operation.Parameters.Any(p => - p is InputBodyParameter bodyParam && !bodyParam.IsRequired); - - if (hasOptionalBody) - { - statement = new IfStatement(contentParam.NotEqual(Null)) { statement }; - } + statement = BuildQueryOrHeaderOrPathParameterNullCheck(type, valueExpression, statement); } statements.Add(statement); @@ -715,7 +720,8 @@ private void AddUriSegments( /* when the parameter is in operation.uri, it is client parameter * It is not operation parameter and not in inputParamHash list. */ - var isClientParameter = ClientProvider.ClientParameters.Any(p => string.Equals(p.Name, paramName, StringComparison.OrdinalIgnoreCase)); + var isClientParameter = ClientProvider.ClientParameters.Any(p => string.Equals(p.Name, paramName, StringComparison.OrdinalIgnoreCase)) + || _inputClient.Parameters.Any(p => p is InputMethodParameter { ParamAlias: string alias } && string.Equals(alias, paramName, StringComparison.OrdinalIgnoreCase)); CSharpType? type; SerializationFormat? serializationFormat; ValueExpression? valueExpression; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProvider.cs index fc4847b10e6..9bc034f8378 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProvider.cs @@ -1,11 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.TypeSpec.Generator.ClientModel.Primitives; using Microsoft.TypeSpec.Generator.Input; using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; using Microsoft.TypeSpec.Generator.Statements; -using Microsoft.TypeSpec.Generator.ClientModel.Primitives; namespace Microsoft.TypeSpec.Generator.ClientModel.Providers { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs index 6879f6c7b7f..73148e9ed9c 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/ScmMethodProviderCollection.cs @@ -278,7 +278,44 @@ private IEnumerable GetStackVariablesForProtocolParamConver private List GetSpreadConversion(TypeProvider spreadSource) { - var convenienceMethodParams = ConvenienceMethodParameters.ToDictionary(p => p.Name); + // Match convenience method parameters to constructor parameters by wire (serialized) name + // to handle cases where C# names diverge due to @clientName renames, @encodedName, + // or casing differences between the convenience parameters and model properties. + var convenienceMethodParamsByWireName = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var p in ConvenienceMethodParameters) + { + if (p.WireInfo?.SerializedName != null) + { + convenienceMethodParamsByWireName.TryAdd(p.WireInfo.SerializedName, p); + } + } + + // For customized properties (where OriginalName identifies the original property), + // use the original property's wire info to ensure the dictionary has the correct mapping. + foreach (var property in spreadSource.CanonicalView.Properties) + { + if (property.OriginalName != null && property.WireInfo?.SerializedName is { } wireName) + { + var matchedParam = ConvenienceMethodParameters.FirstOrDefault( + p => string.Equals(p.WireInfo?.SerializedName, wireName, StringComparison.OrdinalIgnoreCase)); + if (matchedParam != null) + { + convenienceMethodParamsByWireName.TryAdd(wireName, matchedParam); + } + } + } + + // Build a lookup from property name to wire name so we can resolve wire names + // for custom constructor parameters that don't have a Property reference. + var propertyWireNames = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var property in spreadSource.CanonicalView.Properties) + { + if (property.WireInfo?.SerializedName is { } propWireName) + { + propertyWireNames.TryAdd(property.Name, propWireName); + } + } + List expressions = new(spreadSource.Properties.Count); // we should make this find more deterministic var ctor = spreadSource.CanonicalView.Constructors.First(c => @@ -287,7 +324,21 @@ private List GetSpreadConversion(TypeProvider spreadSource) foreach (var param in ctor.Signature.Parameters) { - if (convenienceMethodParams.TryGetValue(param.Name, out var convenienceParam)) + // Get wire name from the parameter's property if available, otherwise resolve + // from the model's properties by matching the parameter name to a property name. + var wireName = param.Property?.WireInfo?.SerializedName; + if (wireName == null) + { + propertyWireNames.TryGetValue(param.Name, out wireName); + } + + ParameterProvider? convenienceParam = null; + if (wireName != null) + { + convenienceMethodParamsByWireName.TryGetValue(wireName, out convenienceParam); + } + + if (convenienceParam != null) { if (convenienceParam.Type.IsList) { @@ -698,13 +749,13 @@ private IReadOnlyList GetProtocolMethodArguments(Dictionary 1 } && nonBodyProperties?.ContainsKey(protocolParam.Name) != true) { // The MethodParameterSegments represents a path (e.g., ['Params', 'foo'] means params.foo) - var rootParameterName = protocolParam.InputParameter.MethodParameterSegments[0].Name; - if (!convenienceParamsMap.TryGetValue(rootParameterName, out var convenienceParam) || - // Body parameters are handled separately - convenienceParam.Location == ParameterLocation.Body) - { - continue; - } + var rootParameterName = protocolParam.InputParameter.MethodParameterSegments[0].Name; + if (!convenienceParamsMap.TryGetValue(rootParameterName, out var convenienceParam) || + // Body parameters are handled separately + convenienceParam.Location == ParameterLocation.Body) + { + continue; + } // Navigate through the property path var propertySegments = protocolParam.InputParameter.MethodParameterSegments diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/SerializationFormatDefinition.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/SerializationFormatDefinition.cs index 79e0987acf6..13233bee220 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/SerializationFormatDefinition.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/SerializationFormatDefinition.cs @@ -73,7 +73,7 @@ protected override IReadOnlyList BuildEnumValues() var members = new EnumTypeMember[enumValues.Count]; for (int i = 0; i < enumValues.Count; i++) { - var (name, value, description ) = enumValues[i]; + var (name, value, description) = enumValues[i]; var field = new FieldProvider( FieldModifiers.Public | FieldModifiers.Static, EnumUnderlyingType, diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmCodeModelGenerator.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmCodeModelGenerator.cs index 0d9f0b3a36e..7cbdd3acb3a 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmCodeModelGenerator.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmCodeModelGenerator.cs @@ -4,7 +4,9 @@ using System; using System.ClientModel; using System.ComponentModel.Composition; +using System.IO; using System.Text.Json; +using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.TypeSpec.Generator.ClientModel.Providers; @@ -28,6 +30,11 @@ public class ScmCodeModelGenerator : CodeModelGenerator internal SerializationFormatDefinition SerializationFormatDefinition { get; } = new SerializationFormatDefinition(); + /// + /// Gets the options that control ConfigurationSchema.json generation. + /// + public ConfigurationSchemaOptions ConfigurationSchema { get; } = new(); + [ImportingConstructor] public ScmCodeModelGenerator(GeneratorContext context) : base(context) @@ -44,5 +51,52 @@ protected override void Configure() AddMetadataReference(MetadataReference.CreateFromFile(typeof(JsonSerializer).Assembly.Location)); AddTypeToKeep(ModelReaderWriterContextDefinition.s_name, isRoot: false); } + + public override async Task WriteAdditionalFiles(string outputPath) + { + // Skip generation if a custom ConfigurationSchema.json exists outside the Generated folder + var customSchemaPath = Path.Combine(outputPath, "schema", "ConfigurationSchema.json"); + if (File.Exists(customSchemaPath)) + { + Emitter.Info($"Custom ConfigurationSchema.json detected at {Path.GetFullPath(customSchemaPath)}, skipping generation."); + return; + } + + var schemaContent = ConfigurationSchemaGenerator.Generate( + OutputLibrary, + ConfigurationSchema.SectionName, + ConfigurationSchema.OptionsRef); + if (schemaContent != null) + { + var schemaPath = Path.Combine(outputPath, "Generated", "schema", "ConfigurationSchema.json"); + var schemaDir = Path.GetDirectoryName(schemaPath); + if (schemaDir != null) + { + Directory.CreateDirectory(schemaDir); + } + Emitter.Info($"Writing {Path.GetFullPath(schemaPath)}"); + await File.WriteAllTextAsync(schemaPath, schemaContent); + + if (ConfigurationSchema.GenerateNuGetTargets) + { + // Generate the .targets file for JsonSchemaSegment registration + var packageName = Configuration.PackageName; + var targetsPath = Path.Combine(outputPath, $"{packageName}.NuGet.targets"); + var targetsContent = GenerateTargetsFile(); + Emitter.Info($"Writing {Path.GetFullPath(targetsPath)}"); + await File.WriteAllTextAsync(targetsPath, targetsContent); + } + } + } + + private static string GenerateTargetsFile() + { + return "\n" + + " \n" + + " \n" + + " \n" + + "\n"; + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs index 432561572ba..13e43ad6a70 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmOutputLibrary.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using Microsoft.TypeSpec.Generator.ClientModel.Providers; using Microsoft.TypeSpec.Generator.Input; +using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; namespace Microsoft.TypeSpec.Generator.ClientModel @@ -43,6 +44,13 @@ private static void BuildClient(InputClient inputClient, HashSet t types.Add(clientOptions); } + // Emit the Settings class for any publicly constructible client (root or individually-initialized sub-client). + var clientSettings = client.ClientSettings; + if (clientSettings != null && client.DeclarationModifiers.HasFlag(TypeSignatureModifiers.Public)) + { + types.Add(clientSettings); + } + // We use the spec view methods so that we include collection definitions even if the user is customizing or suppressing // the methods. They will still be filtered out by the post processor if not needed. foreach (var method in client.SpecView.Methods) diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs index d1d644a638b..9936e75a22a 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/ScmTypeFactory.cs @@ -6,6 +6,8 @@ using System.Collections.Generic; using System.Linq; using System.Text.Json; +using System.Xml; +using System.Xml.Linq; using Microsoft.TypeSpec.Generator.ClientModel.Primitives; using Microsoft.TypeSpec.Generator.ClientModel.Providers; using Microsoft.TypeSpec.Generator.Expressions; @@ -246,6 +248,21 @@ public virtual MethodBodyStatement SerializeJsonValue( SerializationFormat serializationFormat) => MrwSerializationTypeDefinition.SerializeJsonValueCore(valueType, value, utf8JsonWriter, mrwOptionsParameter, serializationFormat); + public virtual ValueExpression DeserializeXmlValue( + CSharpType valueType, + ScopedApi element, + ScopedApi mrwOptionsParameter, + SerializationFormat format) + => MrwSerializationTypeDefinition.DeserializeXmlValueCore(valueType, element, mrwOptionsParameter, format); + + public virtual MethodBodyStatement SerializeXmlValue( + CSharpType valueType, + ValueExpression value, + ScopedApi xmlWriter, + ScopedApi mrwOptionsParameter, + SerializationFormat format) + => MrwSerializationTypeDefinition.SerializeXmlValueCore(valueType, value, xmlWriter, mrwOptionsParameter, format); + protected override ModelProvider? CreateModelCore(InputModelType model) => new ScmModelProvider(model); protected override ScmSerializationOptions? CreateSerializationOptionsCore(InputSerializationOptions inputSerializationOptions) diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/JsonElementSnippets.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/JsonElementSnippets.cs index f9951bc523d..f320ef94429 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/JsonElementSnippets.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/JsonElementSnippets.cs @@ -105,7 +105,7 @@ public static ScopedApi TryGetInt64(this ScopedApi jsonElemen public static ScopedApi TryGetSingle(this ScopedApi jsonElement, out ScopedApi floatValue) { var floatValueDeclaration = new VariableExpression(typeof(float), "floatValue"); - floatValue= floatValueDeclaration.As(); + floatValue = floatValueDeclaration.As(); var invocation = new InvokeMethodExpression(jsonElement, nameof(JsonElement.TryGetSingle), [new DeclarationExpression(floatValueDeclaration, true)]); return invocation.As(); } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/XmlWriterSnippets.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/XmlWriterSnippets.cs index 4da5f18338a..32f0e379c9f 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/XmlWriterSnippets.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Snippets/XmlWriterSnippets.cs @@ -41,6 +41,12 @@ public static MethodBodyStatement WriteValue(this ScopedApi writer, V public static MethodBodyStatement WriteAttributeString(this ScopedApi writer, string prefix, string localName, string ns, ValueExpression value) => writer.Invoke(nameof(XmlWriter.WriteAttributeString), [Literal(prefix), Literal(localName), Literal(ns), value]).Terminate(); + /// + /// Generates a namespace declaration attribute on the current element: xmlns:prefix="namespace". + /// + public static MethodBodyStatement WriteNamespaceDeclaration(this ScopedApi writer, string prefix, string ns) + => writer.Invoke(nameof(XmlWriter.WriteAttributeString), [Literal("xmlns"), Literal(prefix), Null, Literal(ns)]).Terminate(); + public static MethodBodyStatement WriteStringValue(this ScopedApi writer, ValueExpression value, string format) => ModelSerializationExtensionsSnippets.WriteStringValue(writer, value, format); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/ConfigurationSchemaGeneratorTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/ConfigurationSchemaGeneratorTests.cs new file mode 100644 index 00000000000..4af8fbb4b54 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/ConfigurationSchemaGeneratorTests.cs @@ -0,0 +1,1044 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Threading.Tasks; +using Microsoft.TypeSpec.Generator.ClientModel.Providers; +using Microsoft.TypeSpec.Generator.Input; +using Microsoft.TypeSpec.Generator.Primitives; +using Microsoft.TypeSpec.Generator.Providers; +using Microsoft.TypeSpec.Generator.Tests.Common; +using NUnit.Framework; + +namespace Microsoft.TypeSpec.Generator.ClientModel.Tests +{ + public class ConfigurationSchemaGeneratorTests + { + [SetUp] + public void SetUp() + { + // Reset the singleton instance before each test + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + + MockHelpers.LoadMockGenerator(); + } + + private static string GetExpectedJsonFromFile([CallerMemberName] string method = "", [CallerFilePath] string filePath = "") + { + var callingClass = Path.GetFileName(filePath).Split('.').First(); + var path = Path.Combine(Path.GetDirectoryName(filePath)!, "TestData", callingClass, $"{method}.json"); + return File.ReadAllText(path); + } + + [Test] + public void Generate_ReturnsNull_WhenNoClientsWithSettings() + { + var output = new TestOutputLibrary([]); + var result = ConfigurationSchemaGenerator.Generate(output); + Assert.IsNull(result); + } + + [Test] + public void Generate_ReturnsNull_WhenClientMadeInternalAfterConstruction() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider.ClientSettings, "ClientSettings should not be null for individually-initialized client"); + + // Simulate a visitor changing the client from public to internal (e.g., management RestClientVisitor) + var modifiers = clientProvider.DeclarationModifiers; + modifiers &= ~TypeSignatureModifiers.Public; + modifiers |= TypeSignatureModifiers.Internal; + clientProvider.Update(modifiers: modifiers); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + Assert.IsNull(result, "Schema should not be generated for internal clients"); + } + + [Test] + public void Generate_ReturnsSchema_ForClientWithSettings() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider.ClientSettings, "ClientSettings should not be null for individually-initialized client"); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + + var doc = JsonNode.Parse(result!)!; + Assert.AreEqual("object", doc["type"]?.GetValue()); + + // Since the default generator uses SCM (System.ClientModel), the section should be "Clients" + var clients = doc["properties"]?["Clients"]; + Assert.IsNotNull(clients, "Schema should have a 'Clients' section for SCM clients"); + Assert.AreEqual("object", clients!["type"]?.GetValue()); + + var testClient = clients["properties"]?["TestService"]; + Assert.IsNotNull(testClient, "Schema should have a well-known 'TestService' entry"); + Assert.AreEqual("object", testClient!["type"]?.GetValue()); + + var expected = GetExpectedJsonFromFile(); + Assert.AreEqual(expected, result); + } + + [Test] + public void Generate_IncludesCredentialReference() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var credential = clientEntry?["properties"]?["Credential"]; + Assert.IsNotNull(credential, "Client entry should have a Credential property"); + Assert.AreEqual("#/definitions/credential", credential!["$ref"]?.GetValue()); + } + + [Test] + public void Generate_IncludesOptionsReference() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var options = clientEntry?["properties"]?["Options"]; + Assert.IsNotNull(options, "Client entry should have an Options property"); + + // Options should reference a local named definition that inherits from the base options + var optionsRef = options!["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef, "Options should be a $ref"); + Assert.That(optionsRef, Does.StartWith("#/definitions/"), "Options $ref should point to a local definition"); + + // Verify the local definition exists and inherits from base options via allOf + var defName = optionsRef!.Replace("#/definitions/", ""); + var optionsDef = doc["definitions"]?[defName]; + Assert.IsNotNull(optionsDef, $"Local definition '{defName}' should exist"); + + var allOf = optionsDef!["allOf"]; + Assert.IsNotNull(allOf, "Options definition should use allOf to inherit from base options"); + Assert.AreEqual("#/definitions/options", allOf!.AsArray()[0]?["$ref"]?.GetValue()); + } + + [Test] + public void Generate_IncludesOptionsDefinition_InheritingFromBase() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // The options type should always be defined as a local definition that inherits from base options. + // Common definitions (credential, base options) are provided by System.ClientModel base schema. + var definitions = doc["definitions"]; + Assert.IsNotNull(definitions, "Schema should include local definitions for the options type"); + + // Find the options definition and verify it inherits from the base options + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var optionsRef = clientEntry?["properties"]?["Options"]?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef, "Options should reference a local definition"); + var defName = optionsRef!.Replace("#/definitions/", ""); + var optionsDef = definitions![defName]; + Assert.IsNotNull(optionsDef, $"Options definition '{defName}' should exist"); + + var allOf = optionsDef!["allOf"]; + Assert.IsNotNull(allOf, "Options definition should use allOf to inherit from base options"); + Assert.AreEqual("#/definitions/options", allOf!.AsArray()[0]?["$ref"]?.GetValue(), + "First allOf element should reference the base options type"); + } + + [Test] + public void Generate_IncludesLocalDefinitions_ForEnumTypes() + { + // Create a non-api-version enum type + var retryModeEnum = InputFactory.StringEnum( + "RetryMode", + [("Fixed", "Fixed"), ("Exponential", "Exponential")], + isExtensible: false); + + // Reset and reload mock with the enum registered + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + MockHelpers.LoadMockGenerator(inputEnums: () => [retryModeEnum]); + + InputParameter[] inputParameters = + [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.QueryParameter( + "retryMode", + retryModeEnum, + isRequired: false, + defaultValue: new InputConstant("Exponential", retryModeEnum), + scope: InputParameterScope.Client, + isApiVersion: false) + ]; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // Verify local definitions contain the enum + var definitions = doc["definitions"]; + Assert.IsNotNull(definitions, "Schema should include local definitions for non-base types"); + + var retryModeDef = definitions!["retryMode"]; + Assert.IsNotNull(retryModeDef, "Definitions should include 'retryMode' enum"); + + // Fixed enum should have enum values + var enumValues = retryModeDef!["enum"]; + Assert.IsNotNull(enumValues, "Enum definition should have 'enum' values"); + + // Verify the option property references the local definition via $ref + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var options = clientEntry?["properties"]?["Options"]; + var optionsRef = options?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef, "Options should reference a local definition"); + var optionsDefName = optionsRef!.Replace("#/definitions/", ""); + + // The options definition should use allOf with custom properties + var optionsDef = definitions![optionsDefName]; + Assert.IsNotNull(optionsDef, $"Options definition '{optionsDefName}' should exist"); + var allOf = optionsDef!["allOf"]; + Assert.IsNotNull(allOf, "Options definition should use allOf"); + + var extensionProperties = allOf!.AsArray()[1]?["properties"]; + var retryModeProp = extensionProperties!["RetryMode"]; + Assert.IsNotNull(retryModeProp, "Custom option property should exist"); + Assert.AreEqual("#/definitions/retryMode", retryModeProp!["$ref"]?.GetValue()); + } + + [Test] + public void Generate_IncludesEndpointProperty_ForStringEndpoint() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true) + }; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var endpoint = clientEntry?["properties"]?["Endpoint"]; + Assert.IsNotNull(endpoint, "Client entry should have an Endpoint property"); + Assert.AreEqual("string", endpoint!["type"]?.GetValue()); + } + + [Test] + public void Generate_IncludesEndpointProperty_ForUriEndpoint() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.Url, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true) + }; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var endpoint = clientEntry?["properties"]?["Endpoint"]; + Assert.IsNotNull(endpoint, "Client entry should have an Endpoint property"); + Assert.AreEqual("string", endpoint!["type"]?.GetValue()); + Assert.AreEqual("uri", endpoint!["format"]?.GetValue()); + } + + [Test] + public void Generate_IncludesOptionsAllOf_WhenClientHasCustomOptions() + { + InputParameter[] inputParameters = + [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.QueryParameter( + "enableTenantDiscovery", + InputPrimitiveType.Boolean, + isRequired: false, + defaultValue: new InputConstant(false, InputPrimitiveType.Boolean), + scope: InputParameterScope.Client, + isApiVersion: false) + ]; + var client = InputFactory.Client("BlobService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["BlobService"]; + var options = clientEntry?["properties"]?["Options"]; + Assert.IsNotNull(options, "Client entry should have an Options property"); + + // Options should reference a named local definition + var optionsRef = options!["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef, "Options should be a $ref to a local definition"); + var defName = optionsRef!.Replace("#/definitions/", ""); + + // Verify the local definition uses allOf to inherit from base options with custom properties + var optionsDef = doc["definitions"]?[defName]; + Assert.IsNotNull(optionsDef, $"Options definition '{defName}' should exist"); + + var allOf = optionsDef!["allOf"]; + Assert.IsNotNull(allOf, "Options definition should use allOf"); + + var allOfArray = allOf!.AsArray(); + Assert.AreEqual(2, allOfArray.Count, + "allOf should have base options ref + custom properties extension"); + Assert.AreEqual("#/definitions/options", allOfArray[0]?["$ref"]?.GetValue()); + Assert.AreEqual("object", allOfArray[1]?["type"]?.GetValue()); + + // Verify the custom property is included + var extensionProperties = allOfArray[1]?["properties"]; + Assert.IsNotNull(extensionProperties); + var enableTenantDiscovery = extensionProperties!["EnableTenantDiscovery"]; + Assert.IsNotNull(enableTenantDiscovery, "Custom option property should be included"); + Assert.AreEqual("boolean", enableTenantDiscovery!["type"]?.GetValue()); + } + + [Test] + public void Generate_OptionsDefinition_IncludesStringProperty() + { + InputParameter[] inputParameters = + [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.QueryParameter( + "audience", + InputPrimitiveType.String, + isRequired: false, + defaultValue: new InputConstant("https://api.example.com", InputPrimitiveType.String), + scope: InputParameterScope.Client, + isApiVersion: false) + ]; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var optionsRef = clientEntry?["properties"]?["Options"]?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef); + var defName = optionsRef!.Replace("#/definitions/", ""); + + var optionsDef = doc["definitions"]?[defName]; + Assert.IsNotNull(optionsDef); + + var allOf = optionsDef!["allOf"]!.AsArray(); + Assert.AreEqual(2, allOf.Count, "allOf should have base options + extension"); + Assert.AreEqual("#/definitions/options", allOf[0]?["$ref"]?.GetValue()); + + var extensionProperties = allOf[1]?["properties"]; + Assert.IsNotNull(extensionProperties); + var audienceProp = extensionProperties!["Audience"]; + Assert.IsNotNull(audienceProp, "String option property should exist"); + Assert.AreEqual("string", audienceProp!["type"]?.GetValue()); + } + + [Test] + public void Generate_OptionsDefinition_IncludesIntegerProperty() + { + InputParameter[] inputParameters = + [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.QueryParameter( + "maxRetries", + InputPrimitiveType.Int32, + isRequired: false, + defaultValue: new InputConstant(3, InputPrimitiveType.Int32), + scope: InputParameterScope.Client, + isApiVersion: false) + ]; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var optionsRef = clientEntry?["properties"]?["Options"]?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef); + var defName = optionsRef!.Replace("#/definitions/", ""); + + var optionsDef = doc["definitions"]?[defName]; + Assert.IsNotNull(optionsDef); + + var allOf = optionsDef!["allOf"]!.AsArray(); + Assert.AreEqual(2, allOf.Count, "allOf should have base options + extension"); + + var extensionProperties = allOf[1]?["properties"]; + Assert.IsNotNull(extensionProperties); + var maxRetriesProp = extensionProperties!["MaxRetries"]; + Assert.IsNotNull(maxRetriesProp, "Integer option property should exist"); + Assert.AreEqual("integer", maxRetriesProp!["type"]?.GetValue()); + } + + [Test] + public void Generate_OptionsDefinition_IncludesMultipleMixedProperties() + { + InputParameter[] inputParameters = + [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.QueryParameter( + "audience", + InputPrimitiveType.String, + isRequired: false, + defaultValue: new InputConstant("https://api.example.com", InputPrimitiveType.String), + scope: InputParameterScope.Client, + isApiVersion: false), + InputFactory.QueryParameter( + "enableCaching", + InputPrimitiveType.Boolean, + isRequired: false, + defaultValue: new InputConstant(true, InputPrimitiveType.Boolean), + scope: InputParameterScope.Client, + isApiVersion: false), + InputFactory.QueryParameter( + "maxRetries", + InputPrimitiveType.Int32, + isRequired: false, + defaultValue: new InputConstant(3, InputPrimitiveType.Int32), + scope: InputParameterScope.Client, + isApiVersion: false) + ]; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var optionsRef = clientEntry?["properties"]?["Options"]?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef); + var defName = optionsRef!.Replace("#/definitions/", ""); + + var optionsDef = doc["definitions"]?[defName]; + Assert.IsNotNull(optionsDef); + + var allOf = optionsDef!["allOf"]!.AsArray(); + Assert.AreEqual(2, allOf.Count, "allOf should have base options + extension with multiple properties"); + Assert.AreEqual("#/definitions/options", allOf[0]?["$ref"]?.GetValue()); + Assert.AreEqual("object", allOf[1]?["type"]?.GetValue()); + + var extensionProperties = allOf[1]?["properties"]; + Assert.IsNotNull(extensionProperties); + + // Verify all three additional properties are present with correct types + var audienceProp = extensionProperties!["Audience"]; + Assert.IsNotNull(audienceProp, "String option property should exist"); + Assert.AreEqual("string", audienceProp!["type"]?.GetValue()); + + var enableCachingProp = extensionProperties!["EnableCaching"]; + Assert.IsNotNull(enableCachingProp, "Boolean option property should exist"); + Assert.AreEqual("boolean", enableCachingProp!["type"]?.GetValue()); + + var maxRetriesProp = extensionProperties!["MaxRetries"]; + Assert.IsNotNull(maxRetriesProp, "Integer option property should exist"); + Assert.AreEqual("integer", maxRetriesProp!["type"]?.GetValue()); + } + + [Test] + public void Generate_OptionsDefinition_IncludesModelProperty() + { + // Create a model type with properties + var retryPolicyModel = InputFactory.Model( + "RetryPolicyConfig", + properties: + [ + InputFactory.Property("MaxRetries", InputPrimitiveType.Int32), + InputFactory.Property("Delay", InputPrimitiveType.String) + ]); + + // Reset and reload mock with the model registered + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + MockHelpers.LoadMockGenerator(inputModels: () => [retryPolicyModel]); + + InputParameter[] inputParameters = + [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.QueryParameter( + "retryPolicy", + retryPolicyModel, + isRequired: false, + defaultValue: new InputConstant(null, retryPolicyModel), + scope: InputParameterScope.Client, + isApiVersion: false) + ]; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // Verify local definitions contain the model + var definitions = doc["definitions"]; + Assert.IsNotNull(definitions, "Schema should include local definitions"); + + var retryPolicyDef = definitions!["retryPolicyConfig"]; + Assert.IsNotNull(retryPolicyDef, "Definitions should include 'retryPolicyConfig' model"); + Assert.AreEqual("object", retryPolicyDef!["type"]?.GetValue()); + + // Verify the model definition has its properties + var modelProperties = retryPolicyDef["properties"]; + Assert.IsNotNull(modelProperties, "Model definition should have properties"); + Assert.IsNotNull(modelProperties!["MaxRetries"], "Model should have MaxRetries property"); + Assert.AreEqual("integer", modelProperties["MaxRetries"]!["type"]?.GetValue()); + Assert.IsNotNull(modelProperties["Delay"], "Model should have Delay property"); + Assert.AreEqual("string", modelProperties["Delay"]!["type"]?.GetValue()); + + // Verify the options definition references the model via $ref + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var optionsRef = clientEntry?["properties"]?["Options"]?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef); + var optionsDefName = optionsRef!.Replace("#/definitions/", ""); + + var optionsDef = definitions[optionsDefName]; + Assert.IsNotNull(optionsDef); + var allOf = optionsDef!["allOf"]!.AsArray(); + Assert.AreEqual(2, allOf.Count, "allOf should have base options + extension"); + + var extensionProperties = allOf[1]?["properties"]; + Assert.IsNotNull(extensionProperties); + var retryPolicyProp = extensionProperties!["RetryPolicy"]; + Assert.IsNotNull(retryPolicyProp, "Model option property should exist"); + Assert.AreEqual("#/definitions/retryPolicyConfig", retryPolicyProp!["$ref"]?.GetValue()); + } + + [Test] + public void Generate_ConstructorParameter_IncludesModelDefinition() + { + // Create a model type with properties to use as a required constructor parameter + var connectionConfigModel = InputFactory.Model( + "ConnectionConfig", + properties: + [ + InputFactory.Property("Host", InputPrimitiveType.String), + InputFactory.Property("Port", InputPrimitiveType.Int32) + ]); + + // Reset and reload mock with the model registered + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + MockHelpers.LoadMockGenerator(inputModels: () => [connectionConfigModel]); + + InputParameter[] inputParameters = + [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.QueryParameter( + "connectionConfig", + connectionConfigModel, + isRequired: true, + scope: InputParameterScope.Client, + isApiVersion: false) + ]; + var client = InputFactory.Client("TestService", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // Verify local definitions contain the model + var definitions = doc["definitions"]; + Assert.IsNotNull(definitions, "Schema should include local definitions"); + + var connectionConfigDef = definitions!["connectionConfig"]; + Assert.IsNotNull(connectionConfigDef, "Definitions should include 'connectionConfig' model"); + Assert.AreEqual("object", connectionConfigDef!["type"]?.GetValue()); + + // Verify the model definition has its properties + var modelProperties = connectionConfigDef["properties"]; + Assert.IsNotNull(modelProperties, "Model definition should have properties"); + Assert.IsNotNull(modelProperties!["Host"], "Model should have Host property"); + Assert.AreEqual("string", modelProperties["Host"]!["type"]?.GetValue()); + Assert.IsNotNull(modelProperties["Port"], "Model should have Port property"); + Assert.AreEqual("integer", modelProperties["Port"]!["type"]?.GetValue()); + + // Verify the model appears as a top-level constructor parameter property (not under Options) + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + Assert.IsNotNull(clientEntry); + var connectionConfigProp = clientEntry!["properties"]?["ConnectionConfig"]; + Assert.IsNotNull(connectionConfigProp, "Constructor parameter model should appear as top-level client property"); + Assert.AreEqual("#/definitions/connectionConfig", connectionConfigProp!["$ref"]?.GetValue()); + + var expected = GetExpectedJsonFromFile(); + Assert.AreEqual(expected, result); + } + + [Test] + public void Generate_HandlesMultipleClients() + { + var client1 = InputFactory.Client("ServiceA"); + var client2 = InputFactory.Client("ServiceB"); + var provider1 = new ClientProvider(client1); + var provider2 = new ClientProvider(client2); + + var output = new TestOutputLibrary([provider1, provider2]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientsSection = doc["properties"]?["Clients"]?["properties"]; + Assert.IsNotNull(clientsSection?["ServiceA"], "Should include ServiceA"); + Assert.IsNotNull(clientsSection?["ServiceB"], "Should include ServiceB"); + + var expected = GetExpectedJsonFromFile(); + Assert.AreEqual(expected, result); + } + + [Test] + public void Generate_IncludesAdditionalPropertiesOnSection() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientsSection = doc["properties"]?["Clients"]; + var additionalProperties = clientsSection?["additionalProperties"]; + Assert.IsNotNull(additionalProperties, "Section should have additionalProperties for custom-named instances"); + Assert.AreEqual("object", additionalProperties!["type"]?.GetValue()); + } + + [Test] + public void Generate_ReturnsNull_WhenClientIsParentOnlyInitialized() + { + // Create a sub-client initialized by parent only + var parentClient = InputFactory.Client("ParentService"); + var subClient = InputFactory.Client( + "SubService", + parent: parentClient, + initializedBy: InputClientInitializedBy.Parent); + var subProvider = new ClientProvider(subClient); + + // Sub-client with Parent initialization should NOT have ClientSettings + Assert.IsNull(subProvider.ClientSettings); + + var output = new TestOutputLibrary([subProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + Assert.IsNull(result, "Should return null when no clients have settings"); + } + + [Test] + public void GetJsonSchemaForType_ReturnsCorrectSchema_ForPrimitiveTypes() + { + // String + var stringSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(string))); + Assert.AreEqual("string", stringSchema["type"]?.GetValue()); + + // Boolean + var boolSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(bool))); + Assert.AreEqual("boolean", boolSchema["type"]?.GetValue()); + + // Integer types + var intSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(int))); + Assert.AreEqual("integer", intSchema["type"]?.GetValue()); + + var longSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(long))); + Assert.AreEqual("integer", longSchema["type"]?.GetValue()); + + // Float types + var floatSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(float))); + Assert.AreEqual("number", floatSchema["type"]?.GetValue()); + + var doubleSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(double))); + Assert.AreEqual("number", doubleSchema["type"]?.GetValue()); + + // Uri + var uriSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(Uri))); + Assert.AreEqual("string", uriSchema["type"]?.GetValue()); + Assert.AreEqual("uri", uriSchema["format"]?.GetValue()); + + // TimeSpan + var timeSpanSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(TimeSpan))); + Assert.AreEqual("string", timeSpanSchema["type"]?.GetValue()); + } + + [Test] + public void GetJsonSchemaForType_ReturnsCorrectSchema_ForNullableTypes() + { + var nullableStringSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(string), isNullable: true)); + Assert.AreEqual("string", nullableStringSchema["type"]?.GetValue()); + + var nullableBoolSchema = ConfigurationSchemaGenerator.GetJsonSchemaForType(new CSharpType(typeof(bool), isNullable: true)); + Assert.AreEqual("boolean", nullableBoolSchema["type"]?.GetValue()); + } + + [Test] + public void Generate_UsesCustomSectionName() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output, sectionName: "AzureClients"); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + Assert.IsNull(doc["properties"]?["Clients"], "Schema should not have a 'Clients' section"); + var azureClients = doc["properties"]?["AzureClients"]; + Assert.IsNotNull(azureClients, "Schema should have an 'AzureClients' section"); + + var testClient = azureClients!["properties"]?["TestService"]; + Assert.IsNotNull(testClient, "Schema should have a well-known 'TestService' entry under AzureClients"); + } + + [Test] + public void Generate_UsesCustomOptionsRef() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output, optionsRef: "azureOptions"); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // The options definition should inherit from azureOptions instead of options + var definitions = doc["definitions"]; + Assert.IsNotNull(definitions); + + // Find the client options definition and verify it references azureOptions + foreach (var def in definitions!.AsObject()) + { + var allOf = def.Value?["allOf"]; + if (allOf != null) + { + var baseRef = allOf.AsArray()[0]?["$ref"]?.GetValue(); + Assert.AreEqual("#/definitions/azureOptions", baseRef, + $"Definition '{def.Key}' should reference azureOptions"); + } + } + } + + [Test] + public void Generate_UsesCustomSectionNameAndOptionsRef() + { + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate( + output, + sectionName: "AzureClients", + optionsRef: "azureOptions"); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // Verify section name + Assert.IsNull(doc["properties"]?["Clients"]); + Assert.IsNotNull(doc["properties"]?["AzureClients"]); + + // Verify options ref + var clientEntry = doc["properties"]?["AzureClients"]?["properties"]?["TestService"]; + Assert.IsNotNull(clientEntry); + + // The options definition should use azureOptions + var optionsRef = clientEntry!["properties"]?["Options"]?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef); + var defName = optionsRef!.Replace("#/definitions/", ""); + var optionsDef = doc["definitions"]?[defName]; + Assert.IsNotNull(optionsDef); + Assert.AreEqual("#/definitions/azureOptions", optionsDef!["allOf"]?.AsArray()[0]?["$ref"]?.GetValue()); + } + + [Test] + public void ConfigurationSchemaOptions_HasCorrectDefaults() + { + var options = new ConfigurationSchemaOptions(); + Assert.AreEqual("Clients", options.SectionName); + Assert.AreEqual("options", options.OptionsRef); + Assert.IsTrue(options.GenerateNuGetTargets); + } + + [Test] + public async Task Generate_IncludesCustomCodeOptionsProperties() + { + // Reset singleton before loading async mock + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + + // Load mock generator with a compilation that contains a custom partial class + // for TestServiceOptions with an "Audience" property. + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider.ClientOptions, "ClientOptions should not be null"); + Assert.IsNotNull(clientProvider.ClientOptions!.CustomCodeView, + "CustomCodeView should be available from the compilation"); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // Find the options definition + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + var optionsRef = clientEntry?["properties"]?["Options"]?["$ref"]?.GetValue(); + Assert.IsNotNull(optionsRef, "Options should reference a local definition"); + var defName = optionsRef!.Replace("#/definitions/", ""); + + var optionsDef = doc["definitions"]?[defName]; + Assert.IsNotNull(optionsDef, $"Options definition '{defName}' should exist"); + + var allOf = optionsDef!["allOf"]!.AsArray(); + Assert.AreEqual(2, allOf.Count, "allOf should have base options + extension with custom properties"); + + // Verify the custom "Audience" property from the partial class is included + var extensionProperties = allOf[1]?["properties"]; + Assert.IsNotNull(extensionProperties, "Extension properties should exist"); + var audienceProp = extensionProperties!["Audience"]; + Assert.IsNotNull(audienceProp, "Custom code 'Audience' property should be included in the schema"); + Assert.AreEqual("string", audienceProp!["type"]?.GetValue()); + } + + [Test] + public async Task Generate_IncludesCustomConstructorParameters() + { + // Reset singleton before loading async mock + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + + // Load mock generator with a compilation that contains a custom partial class + // for TestService with a constructor that takes a "connectionString" parameter. + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider.CustomCodeView, + "CustomCodeView should be available from the compilation"); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + // Verify the custom "ConnectionString" constructor parameter appears as a client-level property + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + Assert.IsNotNull(clientEntry, "TestService client entry should exist"); + + var connectionStringProp = clientEntry!["properties"]?["ConnectionString"]; + Assert.IsNotNull(connectionStringProp, + "Custom constructor parameter 'connectionString' should appear as 'ConnectionString' in the schema"); + Assert.AreEqual("string", connectionStringProp!["type"]?.GetValue()); + } + + [Test] + public async Task Generate_ExcludesInternalConstructorParameters() + { + // Reset singleton before loading async mock + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + + // Load mock generator with a compilation that contains a custom partial class + // for TestService with a public constructor (connectionString) and an internal + // constructor (internalParam, anotherInternalParam). + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestService"); + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider.CustomCodeView, + "CustomCodeView should be available from the compilation"); + + var output = new TestOutputLibrary([clientProvider]); + var result = ConfigurationSchemaGenerator.Generate(output); + + Assert.IsNotNull(result); + var doc = JsonNode.Parse(result!)!; + + var clientEntry = doc["properties"]?["Clients"]?["properties"]?["TestService"]; + Assert.IsNotNull(clientEntry, "TestService client entry should exist"); + + // Public constructor param should be included + var connectionStringProp = clientEntry!["properties"]?["ConnectionString"]; + Assert.IsNotNull(connectionStringProp, + "Public constructor parameter 'connectionString' should appear in schema"); + + // Internal constructor params should NOT be included + var internalParamProp = clientEntry["properties"]?["InternalParam"]; + Assert.IsNull(internalParamProp, + "Internal constructor parameter 'internalParam' should NOT appear in schema"); + + var anotherInternalProp = clientEntry["properties"]?["AnotherInternalParam"]; + Assert.IsNull(anotherInternalProp, + "Internal constructor parameter 'anotherInternalParam' should NOT appear in schema"); + } + + [Test] + public async Task GetJsonSchemaForType_ReturnsStringSchema_ForCustomStringStruct() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var typeProvider = CodeModelGenerator.Instance.SourceInputModel + .FindForTypeInCustomization("SampleNamespace", "CustomAudience"); + Assert.IsNotNull(typeProvider, "CustomAudience should be found in custom code"); + + var schema = ConfigurationSchemaGenerator.GetJsonSchemaForType(typeProvider!.Type); + Assert.AreEqual("string", schema["type"]?.GetValue(), + "Custom struct with string constructor should produce string schema"); + } + + [Test] + public async Task GetJsonSchemaForType_ReturnsIntegerSchema_ForCustomIntStruct() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var typeProvider = CodeModelGenerator.Instance.SourceInputModel + .FindForTypeInCustomization("SampleNamespace", "CustomPriority"); + Assert.IsNotNull(typeProvider, "CustomPriority should be found in custom code"); + + var schema = ConfigurationSchemaGenerator.GetJsonSchemaForType(typeProvider!.Type); + Assert.AreEqual("integer", schema["type"]?.GetValue(), + "Custom struct with int constructor should produce integer schema"); + } + + [Test] + public async Task GetJsonSchemaForType_ReturnsObjectSchema_ForCustomStructWithNoValidConstructor() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var typeProvider = CodeModelGenerator.Instance.SourceInputModel + .FindForTypeInCustomization("SampleNamespace", "CustomComplex"); + Assert.IsNotNull(typeProvider, "CustomComplex should be found in custom code"); + + var schema = ConfigurationSchemaGenerator.GetJsonSchemaForType(typeProvider!.Type); + Assert.AreEqual("object", schema["type"]?.GetValue(), + "Custom struct with no single-parameter framework-type constructor should fall back to object"); + } + + /// + /// Test output library that wraps provided TypeProviders. + /// + private class TestOutputLibrary : OutputLibrary + { + private readonly TypeProvider[] _types; + + public TestOutputLibrary(TypeProvider[] types) + { + _types = types; + } + + protected override TypeProvider[] BuildTypeProviders() => _types; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/ModelReaderWriterValidation/TestProjects/Sample_TypeSpec/TreeXmlTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/ModelReaderWriterValidation/TestProjects/Sample_TypeSpec/TreeXmlTests.cs index 34024d47cc2..d9ac35840d3 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/ModelReaderWriterValidation/TestProjects/Sample_TypeSpec/TreeXmlTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/ModelReaderWriterValidation/TestProjects/Sample_TypeSpec/TreeXmlTests.cs @@ -89,8 +89,8 @@ public void ToBinaryContent_WithJsonFormat_ProducesJsonPayload() var binaryContent = (BinaryContent)method!.Invoke(tree, new object[] { "J" })!; // Verify the MediaType is set correctly for JSON - Assert.That(binaryContent.MediaType, - Is.EqualTo("application/json"), + Assert.That(binaryContent.MediaType, + Is.EqualTo("application/json"), "MediaType should be application/json for format 'J'"); } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Abstractions/RequestContentApiTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Abstractions/RequestContentApiTests.cs index 49dd83bbb03..c0cf268aa1a 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Abstractions/RequestContentApiTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Abstractions/RequestContentApiTests.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System.ClientModel; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientOptionsProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientOptionsProviderTests.cs index 5f5abcd8410..93664c6310b 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientOptionsProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientOptionsProviderTests.cs @@ -137,21 +137,67 @@ public void TestConstructors(bool containsApiVersions) Assert.IsNotNull(clientOptionsProvider); var ctors = clientOptionsProvider.Constructors; + // IConfigurationSection constructor is always generated + var configSectionCtor = ctors.FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor, "IConfigurationSection constructor should always be generated"); + if (containsApiVersions) { - Assert.AreEqual(1, ctors.Count); - var ctor = ctors[0]; - var signature = ctor.Signature; + Assert.AreEqual(2, ctors.Count); + var versionCtor = ctors.First(c => c.Signature.Parameters.Any(p => p.Name == "version")); + var signature = versionCtor.Signature; Assert.AreEqual(1, signature.Parameters.Count); var versionParam = signature.Parameters[0]; Assert.AreEqual("version", versionParam.Name); Assert.AreEqual(clientOptionsProvider.NestedTypes[0].Type, versionParam.Type); Assert.IsNotNull(versionParam.DefaultValue); - Assert.IsNotNull(ctor.BodyStatements); + Assert.IsNotNull(versionCtor.BodyStatements); } else { - Assert.AreEqual(0, ctors.Count); + Assert.AreEqual(2, ctors.Count); + var defaultCtor = ctors.First(c => !c.Signature.Parameters.Any()); + Assert.IsNotNull(defaultCtor, "Default parameterless constructor should be generated"); + } + } + + [TestCase(true, Category = ApiVersionsCategory)] + [TestCase(false)] + public void TestConfigurationSectionConstructorBody(bool containsApiVersions) + { + var client = InputFactory.Client("TestClient"); + var clientProvider = new ClientProvider(client); + var clientOptionsProvider = new ClientOptionsProvider(client, clientProvider); + + var ctors = clientOptionsProvider.Constructors; + var configSectionCtor = ctors.FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + // Validate it's internal + Assert.AreEqual(MethodSignatureModifiers.Internal, configSectionCtor!.Signature.Modifiers); + + // Validate it has the base(section) initializer + Assert.IsNotNull(configSectionCtor.Signature.Initializer); + Assert.IsTrue(configSectionCtor.Signature.Initializer!.IsBase); + + // Validate the body is not empty + var body = configSectionCtor.BodyStatements; + Assert.IsNotNull(body); + + var bodyString = body!.ToDisplayString(); + + // Always has a guard statement + Assert.IsTrue(bodyString.Contains("section is null") || bodyString.Contains("Exists"), + "Configuration section constructor should have a guard statement"); + + if (containsApiVersions) + { + // When API versions exist, Version should be set to latest before guard + Assert.IsTrue(bodyString.Contains("Version ="), + "Configuration constructor should set Version when API versions exist"); + // After guard, should read version from config + Assert.IsTrue(bodyString.Contains("section[\"Version\"]"), + "Configuration constructor should read Version from config section"); } } @@ -330,7 +376,7 @@ await MockHelpers.LoadMockGeneratorAsync( var body = constructor?.BodyStatements?.ToDisplayString(); Assert.IsNotNull(body); - + // Verify the switch statement contains custom enum members with their correct string values Assert.IsTrue(body?.Contains("ServiceVersion.V2023_10_01_Preview_1 => \"2023-10-01-preview-1\"")); Assert.IsTrue(body?.Contains("ServiceVersion.V2023_11_01 => \"2023-11-01\"")); @@ -368,17 +414,17 @@ public void SingletonCreatedForMultipleClientsWithStandardParameters() public void SingleClientCreatesClientSpecificOptions() { var client = InputFactory.Client("TestClient", clientNamespace: "TestNamespace"); - + MockHelpers.LoadMockGenerator(clients: () => [client]); var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); Assert.IsNotNull(clientProvider); - + var options = clientProvider!.ClientOptions; Assert.IsNotNull(options); - + // The name should be based on the client name Assert.AreEqual("TestClientOptions", options!.Name); } @@ -666,5 +712,436 @@ public void MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClient Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); } + + [Test] + public void MultiServiceClient_SameLastSegment_ProducesUniqueVersionEnums() + { + // Regression test: when two services have different full namespaces but the same last + // segment, the generated service version enums should still have distinct names. + List serviceOneVersions = ["1.0", "2.0"]; + List serviceTwoVersions = ["3.0", "4.0"]; + + var serviceOneEnumValues = serviceOneVersions.Select(a => (a, a)); + var serviceTwoEnumValues = serviceTwoVersions.Select(a => (a, a)); + + // Different full namespaces, same last segment ("Tests") + var serviceOneEnum = InputFactory.StringEnum( + "ServiceOneVersions", + serviceOneEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.ServiceOne.Tests"); + var serviceTwoEnum = InputFactory.StringEnum( + "ServiceTwoVersions", + serviceTwoEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.ServiceTwo.Tests"); + + var client = InputFactory.Client("TestClient", isMultiServiceClient: true); + + MockHelpers.LoadMockGenerator( + apiVersions: () => [.. serviceOneVersions, .. serviceTwoVersions], + clients: () => [client], + inputEnums: () => [serviceOneEnum, serviceTwoEnum]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider?.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + + // Validate nested service version enums have unique names + var nestedTypes = clientOptionsProvider!.NestedTypes; + Assert.AreEqual(2, nestedTypes.Count); + CollectionAssert.AllItemsAreUnique(nestedTypes.Select(t => t.Name).ToList()); + + var writer = new TypeProviderWriter(clientOptionsProvider!); + var file = writer.Write(); + + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public void MultiServiceClient_UniqueNamespaces_ProducesUniqueVersionEnums() + { + List serviceOneVersions = ["2024-01-01"]; + List serviceTwoVersions = ["2024-06-01"]; + + var serviceOneEnumValues = serviceOneVersions.Select(a => (a, a)); + var serviceTwoEnumValues = serviceTwoVersions.Select(a => (a, a)); + + var serviceOneEnum = InputFactory.StringEnum( + "Versions", + serviceOneEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "ServiceOne"); + var serviceTwoEnum = InputFactory.StringEnum( + "Versions", + serviceTwoEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "ServiceTwo"); + + InputParameter apiVersionParameter = InputFactory.QueryParameter( + "apiVersion", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client, + isApiVersion: true); + + var serviceOneOperation = InputFactory.Operation( + "ServiceOneOperation", + parameters: [apiVersionParameter], + ns: "ServiceOne"); + + var serviceTwoOperation = InputFactory.Operation( + "ServiceTwoOperation", + parameters: [apiVersionParameter], + ns: "ServiceTwo"); + + var client = InputFactory.Client( + "MultiServiceClient", + methods: + [ + InputFactory.BasicServiceMethod("ServiceOneMethod", serviceOneOperation), + InputFactory.BasicServiceMethod("ServiceTwoMethod", serviceTwoOperation) + ], + parameters: [apiVersionParameter], + isMultiServiceClient: true); + + MockHelpers.LoadMockGenerator( + apiVersions: () => [.. serviceOneVersions, .. serviceTwoVersions], + clients: () => [client], + inputEnums: () => [serviceOneEnum, serviceTwoEnum]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + Assert.IsNotNull(clientProvider); + + // Validate that Fields access does not crash (the original issue crashed here) + Assert.DoesNotThrow(() => _ = clientProvider!.Fields); + + // Validate that Methods access does not crash (original crash site: Fields.ToDictionary in BuildMethods) + Assert.DoesNotThrow(() => _ = clientProvider!.Methods); + + var clientOptionsProvider = clientProvider?.ClientOptions; + Assert.IsNotNull(clientOptionsProvider); + + // Validate nested service version enums have unique names + var nestedTypes = clientOptionsProvider!.NestedTypes; + Assert.AreEqual(2, nestedTypes.Count); + CollectionAssert.AllItemsAreUnique(nestedTypes.Select(t => t.Name).ToList()); + + // Verify enum names follow the XServiceVersion pattern + Assert.AreEqual("ServiceOneServiceVersion", nestedTypes[0].Name); + Assert.AreEqual("ServiceTwoServiceVersion", nestedTypes[1].Name); + + var writer = new TypeProviderWriter(clientOptionsProvider!); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public void MultiServiceClient_SameNamespace_ProducesUniqueVersionEnums() + { + // Regression test for the scenario where both enums share the exact same namespace + // (e.g., when tspconfig remaps both services to the same C# output namespace). + List serviceOneVersions = ["2024-01-01"]; + List serviceTwoVersions = ["2024-06-01"]; + + var serviceOneEnumValues = serviceOneVersions.Select(a => (a, a)); + var serviceTwoEnumValues = serviceTwoVersions.Select(a => (a, a)); + + // Both enums have the EXACT SAME namespace (simulates tspconfig namespace override) + var serviceOneEnum = InputFactory.StringEnum( + "ServiceOneVersions", + serviceOneEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.Generator.MgmtTypeSpec.MultiService.Tests"); + var serviceTwoEnum = InputFactory.StringEnum( + "ServiceTwoVersions", + serviceTwoEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.Generator.MgmtTypeSpec.MultiService.Tests"); + + InputParameter apiVersionParameter = InputFactory.QueryParameter( + "apiVersion", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client, + isApiVersion: true); + + var serviceOneOperation = InputFactory.Operation( + "ServiceOneOperation", + parameters: [apiVersionParameter], + ns: "Azure.Generator.MgmtTypeSpec.MultiService.Tests"); + + var serviceTwoOperation = InputFactory.Operation( + "ServiceTwoOperation", + parameters: [apiVersionParameter], + ns: "Azure.Generator.MgmtTypeSpec.MultiService.Tests"); + + var client = InputFactory.Client( + "MultiServiceClient", + methods: + [ + InputFactory.BasicServiceMethod("ServiceOneMethod", serviceOneOperation), + InputFactory.BasicServiceMethod("ServiceTwoMethod", serviceTwoOperation) + ], + parameters: [apiVersionParameter], + isMultiServiceClient: true); + + MockHelpers.LoadMockGenerator( + apiVersions: () => [.. serviceOneVersions, .. serviceTwoVersions], + clients: () => [client], + inputEnums: () => [serviceOneEnum, serviceTwoEnum]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + Assert.IsNotNull(clientProvider); + + Assert.DoesNotThrow(() => _ = clientProvider!.Fields); + Assert.DoesNotThrow(() => _ = clientProvider!.Methods); + + var clientOptionsProvider = clientProvider?.ClientOptions; + Assert.IsNotNull(clientOptionsProvider); + + // Validate nested service version enums have unique names + var nestedTypes = clientOptionsProvider!.NestedTypes; + Assert.AreEqual(2, nestedTypes.Count); + CollectionAssert.AllItemsAreUnique(nestedTypes.Select(t => t.Name).ToList()); + + var writer = new TypeProviderWriter(clientOptionsProvider!); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public void TestConfigurationSectionConstructorBody_WithBoolProperty() + { + var boolParam = InputFactory.MethodParameter( + "enableRetry", + InputPrimitiveType.Boolean, + isRequired: false, + defaultValue: new InputConstant(true, InputPrimitiveType.Boolean), + scope: InputParameterScope.Client); + + var client = InputFactory.Client("TestClient", parameters: [boolParam]); + + MockHelpers.LoadMockGenerator(clients: () => [client]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider!.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + + var configSectionCtor = clientOptionsProvider!.Constructors + .FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + var bodyString = configSectionCtor!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("bool.TryParse"), + "IConfigurationSection constructor should use bool.TryParse for bool property binding"); + Assert.IsTrue(bodyString.Contains("EnableRetry"), + "IConfigurationSection constructor should assign to EnableRetry property"); + } + + [Test] + public void TestConfigurationSectionConstructorBody_WithIntProperty() + { + var intParam = InputFactory.MethodParameter( + "maxRetries", + InputPrimitiveType.Int32, + isRequired: false, + defaultValue: new InputConstant(3, InputPrimitiveType.Int32), + scope: InputParameterScope.Client); + + var client = InputFactory.Client("TestClient", parameters: [intParam]); + + MockHelpers.LoadMockGenerator(clients: () => [client]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider!.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + + var configSectionCtor = clientOptionsProvider!.Constructors + .FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + var bodyString = configSectionCtor!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("int.TryParse"), + "IConfigurationSection constructor should use int.TryParse for int property binding"); + Assert.IsTrue(bodyString.Contains("MaxRetries"), + "IConfigurationSection constructor should assign to MaxRetries property"); + } + + [Test] + public void TestConfigurationSectionConstructorBody_WithEnumProperty() + { + var enumType = InputFactory.StringEnum( + "AppAudience", + [("Public", "public"), ("Private", "private")], + isExtensible: true); + + var enumParam = InputFactory.MethodParameter( + "audience", + enumType, + isRequired: false, + defaultValue: new InputConstant("public", enumType), + scope: InputParameterScope.Client); + + var client = InputFactory.Client("TestClient", parameters: [enumParam]); + + MockHelpers.LoadMockGenerator( + clients: () => [client], + inputEnums: () => [enumType]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider!.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + + var configSectionCtor = clientOptionsProvider!.Constructors + .FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + var bodyString = configSectionCtor!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("is string"), + "IConfigurationSection constructor should use 'is string' pattern for extensible enum property binding"); + Assert.IsTrue(bodyString.Contains("new"), + "IConfigurationSection constructor should create new enum instance"); + Assert.IsTrue(bodyString.Contains("Audience"), + "IConfigurationSection constructor should assign to Audience property"); + } + + [Test] + public void TestConfigurationSectionConstructorBody_WithStringProperty() + { + var stringParam = InputFactory.MethodParameter( + "tenantId", + InputPrimitiveType.String, + isRequired: false, + defaultValue: InputFactory.Constant.String("default"), + scope: InputParameterScope.Client); + + var client = InputFactory.Client("TestClient", parameters: [stringParam]); + + MockHelpers.LoadMockGenerator(clients: () => [client]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider!.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + + var configSectionCtor = clientOptionsProvider!.Constructors + .FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + var bodyString = configSectionCtor!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("IsNullOrEmpty"), + "IConfigurationSection constructor should use string.IsNullOrEmpty for string property binding"); + Assert.IsTrue(bodyString.Contains("TenantId"), + "IConfigurationSection constructor should assign to TenantId property"); + } + + [Test] + public void TestConfigurationSectionConstructorBody_WithComplexObjectProperty() + { + var complexModel = InputFactory.Model( + "CustomOptions", + properties: new[] + { + InputFactory.Property("setting1", InputPrimitiveType.String, isRequired: true, wireName: "setting1"), + InputFactory.Property("setting2", InputPrimitiveType.Int32, isRequired: false, wireName: "setting2") + }); + + var complexParam = InputFactory.MethodParameter( + "customOptions", + complexModel, + isRequired: false, + defaultValue: new InputConstant(null, complexModel), + scope: InputParameterScope.Client); + + var client = InputFactory.Client("TestClient", parameters: [complexParam]); + + MockHelpers.LoadMockGenerator( + clients: () => [client], + inputModels: () => [complexModel]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider!.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + + var configSectionCtor = clientOptionsProvider!.Constructors + .FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + var bodyString = configSectionCtor!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("GetSection"), + "IConfigurationSection constructor should use GetSection for complex object property binding"); + Assert.IsTrue(bodyString.Contains("Exists"), + "IConfigurationSection constructor should check Exists for complex object property binding"); + Assert.IsTrue(bodyString.Contains("CustomOptions") && bodyString.Contains("new"), + "IConfigurationSection constructor should create new CustomOptions instance for complex object property binding"); + } + + [Test] + public void TestConfigurationSectionConstructorBody_WithFixedEnumProperty() + { + var enumType = InputFactory.StringEnum( + "ClientMode", + [("Default", "default"), ("MultiClient", "multi-client")], + isExtensible: false); + + var enumParam = InputFactory.MethodParameter( + "mode", + enumType, + isRequired: false, + defaultValue: new InputConstant("default", enumType), + scope: InputParameterScope.Client); + + var client = InputFactory.Client("TestClient", parameters: [enumParam]); + + MockHelpers.LoadMockGenerator( + clients: () => [client], + inputEnums: () => [enumType]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider!.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + + var configSectionCtor = clientOptionsProvider!.Constructors + .FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + var bodyString = configSectionCtor!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("Enum.TryParse"), + "IConfigurationSection constructor should use Enum.TryParse for fixed enum property binding"); + Assert.IsTrue(bodyString.Contains("Mode"), + "IConfigurationSection constructor should assign to Mode property"); + Assert.IsFalse(bodyString.Contains("new ClientMode"), + "IConfigurationSection constructor should NOT use new for fixed enum property binding"); + } + + [Test] + public async Task TestConfigurationSectionConstructorBody_BindsCustomCodeProperties() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestClient", clientNamespace: "SampleNamespace"); + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + var clientOptionsProvider = clientProvider!.ClientOptions; + + Assert.IsNotNull(clientOptionsProvider); + Assert.IsNotNull(clientOptionsProvider!.CustomCodeView, + "CustomCodeView should be available from the compilation"); + + var configSectionCtor = clientOptionsProvider.Constructors + .FirstOrDefault(c => c.Signature.Parameters.Any(p => p.Name == "section")); + Assert.IsNotNull(configSectionCtor); + + var bodyString = configSectionCtor!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("Audience"), + "IConfigurationSection constructor should bind the custom code 'Audience' property from configuration"); + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderCustomizationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderCustomizationTests.cs index d058de7cf6e..0b8620ee7ab 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderCustomizationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderCustomizationTests.cs @@ -228,6 +228,10 @@ public async Task CanChangeClientAccessibility() // The client options were not customized Assert.IsTrue(clientOptionsProvider!.DeclarationModifiers.HasFlag(TypeSignatureModifiers.Public)); + // ClientSettings should not be generated for internal clients + Assert.IsNull(((ClientProvider)clientProvider).ClientSettings, + "Internal client should not have ClientSettings generated"); + // The docs should be generated even when then methods is internal foreach (var method in clientProvider.Methods) { @@ -265,6 +269,10 @@ public async Task CanChangeClientOptionsAccessibility() // The client options were not customized Assert.IsTrue(clientOptionsProvider!.DeclarationModifiers.HasFlag(TypeSignatureModifiers.Internal)); + // ClientSettings should not be generated for internal clients + Assert.IsNull(((ClientProvider)clientProvider).ClientSettings, + "Internal client should not have ClientSettings generated"); + // The docs should be generated even when then methods is internal foreach (var method in clientProvider.Methods) { @@ -281,7 +289,7 @@ public async Task CanRenameSubClient() ]); var inputServiceMethod = InputFactory.BasicServiceMethod("test", inputOperation); var inputClient = InputFactory.Client("TestClient", methods: [inputServiceMethod]); - InputClient subClient = InputFactory.Client("custom", parent: inputClient); + InputClient subClient = InputFactory.Client("custom", parent: inputClient, initializedBy: InputClientInitializedBy.Parent); var mockGenerator = await MockHelpers.LoadMockGeneratorAsync( clients: () => [inputClient], compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); @@ -309,7 +317,7 @@ public async Task CanRemoveCachingField() ]); var inputServiceMethod = InputFactory.BasicServiceMethod("test", inputOperation); var inputClient = InputFactory.Client("TestClient", methods: [inputServiceMethod]); - InputClient subClient = InputFactory.Client("dog", methods: [], parameters: [], parent: inputClient); + InputClient subClient = InputFactory.Client("dog", methods: [], parameters: [], parent: inputClient, initializedBy: InputClientInitializedBy.Parent); var mockGenerator = await MockHelpers.LoadMockGeneratorAsync( clients: () => [inputClient], compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderSubClientTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderSubClientTests.cs index 6de8507f420..46566e74c68 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderSubClientTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderSubClientTests.cs @@ -15,11 +15,11 @@ namespace Microsoft.TypeSpec.Generator.ClientModel.Tests.Providers.ClientProvide public class ClientProviderSubClientTests { private static readonly InputClient _testClient = InputFactory.Client("TestClient"); - private static readonly InputClient _animalClient = InputFactory.Client("animal", doc: "AnimalClient description", parent: _testClient); - private static readonly InputClient _dogClient = InputFactory.Client("dog", doc: "DogClient description", parent: _animalClient); - private static readonly InputClient _catClient = InputFactory.Client("cat", doc: "CatClient description", parent: _animalClient); - private static readonly InputClient _hawkClient = InputFactory.Client("hawkClient", doc: "HawkClient description", parent: _animalClient); - private static readonly InputClient _huskyClient = InputFactory.Client("husky", doc: "HuskyClient description", parent: _dogClient); + private static readonly InputClient _animalClient = InputFactory.Client("animal", doc: "AnimalClient description", parent: _testClient, initializedBy: InputClientInitializedBy.Parent); + private static readonly InputClient _dogClient = InputFactory.Client("dog", doc: "DogClient description", parent: _animalClient, initializedBy: InputClientInitializedBy.Parent); + private static readonly InputClient _catClient = InputFactory.Client("cat", doc: "CatClient description", parent: _animalClient, initializedBy: InputClientInitializedBy.Parent); + private static readonly InputClient _hawkClient = InputFactory.Client("hawkClient", doc: "HawkClient description", parent: _animalClient, initializedBy: InputClientInitializedBy.Parent); + private static readonly InputClient _huskyClient = InputFactory.Client("husky", doc: "HuskyClient description", parent: _dogClient, initializedBy: InputClientInitializedBy.Parent); [SetUp] public void SetUp() @@ -79,6 +79,45 @@ public void SubClientSummaryIsPopulatedWithDefaultDocs() Assert.AreEqual("/// The Test sub-client. \n", client!.XmlDocs.Summary!.ToDisplayString()); } + [Test] + public void HasAccessorOnlyParameters_ReturnsFalse_WhenSubClientParamMatchesParentAlias() + { + // Parent has parameter "blobName" with paramAlias "name" + // Subclient has parameter "name" + // The alias should make it recognized as a shared parameter, not subclient-specific + var parentClient = InputFactory.Client( + "ParentClient", + parameters: [InputFactory.MethodParameter("blobName", InputPrimitiveType.String, isRequired: true, scope: InputParameterScope.Client, paramAlias: "name")]); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + parameters: [InputFactory.MethodParameter("name", InputPrimitiveType.String, isRequired: true, scope: InputParameterScope.Client)]); + + MockHelpers.LoadMockGenerator(clients: () => [parentClient]); + + var subClientProvider = new ClientProvider(subClient); + Assert.IsFalse(subClientProvider.HasAccessorOnlyParameters(parentClient)); + } + + [Test] + public void HasAccessorOnlyParameters_ReturnsTrue_WhenSubClientParamDoesNotMatchParentAlias() + { + // Parent has parameter "blobName" with paramAlias "name" + // Subclient has parameter "color" — not matching either parent name or alias + var parentClient = InputFactory.Client( + "ParentClient", + parameters: [InputFactory.MethodParameter("blobName", InputPrimitiveType.String, isRequired: true, scope: InputParameterScope.Client, paramAlias: "name")]); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + parameters: [InputFactory.MethodParameter("color", InputPrimitiveType.String, isRequired: true, scope: InputParameterScope.Client)]); + + MockHelpers.LoadMockGenerator(clients: () => [parentClient]); + + var subClientProvider = new ClientProvider(subClient); + Assert.IsTrue(subClientProvider.HasAccessorOnlyParameters(parentClient)); + } + private class MockClientProvider : ClientProvider { private readonly string[] _expectedSubClientFactoryMethodNames; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderTests.cs index 48554a37f83..c18cf79e9ff 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/ClientProviderTests.cs @@ -48,9 +48,9 @@ public bool ValidateIsLastNamespaceSegmentTheSame(string left, string right) private const string OnlyUnsupportedAuthCategory = "WithOnlyUnsupportedAuth"; private const string TestClientName = "TestClient"; private static readonly InputClient _testClient = InputFactory.Client(TestClientName); - private static readonly InputClient _animalClient = InputFactory.Client("animal", doc: "AnimalClient description", parent: _testClient); - private static readonly InputClient _dogClient = InputFactory.Client("dog", doc: "DogClient description", parent: _animalClient); - private static readonly InputClient _huskyClient = InputFactory.Client("husky", doc: "HuskyClient description", parent: _dogClient); + private static readonly InputClient _animalClient = InputFactory.Client("animal", doc: "AnimalClient description", parent: _testClient, initializedBy: InputClientInitializedBy.Parent); + private static readonly InputClient _dogClient = InputFactory.Client("dog", doc: "DogClient description", parent: _animalClient, initializedBy: InputClientInitializedBy.Parent); + private static readonly InputClient _huskyClient = InputFactory.Client("husky", doc: "HuskyClient description", parent: _dogClient, initializedBy: InputClientInitializedBy.Parent); private static readonly InputModelType _spreadModel = InputFactory.Model( "spreadModel", usage: InputModelTypeUsage.Spread, @@ -160,31 +160,34 @@ public void TestBuildAuthFields_WithAuth(List inputParameters) if (_hasKeyAuth) { - // key auth should have the following fields: AuthorizationHeader, _keyCredential + // key auth should have the AuthorizationHeader const field; _keyCredential is no longer stored AssertHasFields(clientProvider, new List { new(FieldModifiers.Private | FieldModifiers.Const, new CSharpType(typeof(string)), "AuthorizationHeader"), - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(ApiKeyCredential)), "_keyCredential") }); + // _keyCredential field is no longer on the client (auth handled via AuthenticationPolicy parameter) + Assert.IsFalse(clientProvider.Fields.Any(f => f.Name == "_keyCredential")); } if (_hasOAuth2) { - // oauth2 auth should have the following fields: _flows, _tokenProvider + // oauth2 auth should have the _flows field; _tokenProvider is no longer stored AssertHasFields(clientProvider, new List { - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(Dictionary[])), "_flows"), - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(AuthenticationTokenProvider)), "_tokenProvider"), + new(FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, new CSharpType(typeof(Dictionary[])), "_flows"), }); + // _tokenProvider field is no longer on the client (auth handled via AuthenticationPolicy parameter) + Assert.IsFalse(clientProvider.Fields.Any(f => f.Name == "_tokenProvider")); } if (_hasOAuth2WithOtherCredType) { - // if another cred type other than the SCM type is used, then the client should default to the following fields: _scopes, _tokenCredential + // if another cred type other than the SCM type is used, then the client should default to the following fields: _scopes (no _tokenCredential) AssertHasFields(clientProvider, new List { new(FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, new CSharpType(typeof(string[])), "AuthorizationScopes"), - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(FakeTokenCredential)), "_tokenCredential"), }); + // _tokenCredential field is no longer on the client (auth handled via AuthenticationPolicy parameter) + Assert.IsFalse(clientProvider.Fields.Any(f => f.Name == "_tokenCredential")); } if (_hasOnlyUnsupportedAuth) @@ -206,12 +209,12 @@ public void TestBuildOAuth2FlowsField(IEnumerable inputFlows) Assert.IsNotNull(clientProvider); - // oauth2 auth should have the following fields: _flows, _tokenProvider + // oauth2 auth should have the _flows field; _tokenProvider is no longer stored on the client AssertHasFields(clientProvider, new List { - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(AuthenticationTokenProvider)), "_tokenProvider"), - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(Dictionary[])), "_flows"), + new(FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, new CSharpType(typeof(Dictionary[])), "_flows"), }); + Assert.IsFalse(clientProvider.Fields.Any(f => f.Name == "_tokenProvider"), "_tokenProvider should not be present - auth handled via AuthenticationPolicy parameter"); // validate the field initialization var testName = TestContext.CurrentContext.Test.Name; @@ -298,29 +301,29 @@ public void TestBuildAuthFields_WithSubClients_WithAuth(InputClient client) if (_hasKeyAuth) { - // key auth should have the following fields: AuthorizationHeader, _keyCredential + // key auth should have AuthorizationHeader const field; _keyCredential is no longer stored AssertHasFields(clientProvider, new List { new(FieldModifiers.Private | FieldModifiers.Const, new CSharpType(typeof(string)), "AuthorizationHeader"), - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(ApiKeyCredential)), "_keyCredential") }); + Assert.IsFalse(clientProvider.Fields.Any(f => f.Name == "_keyCredential")); } if (_hasOAuth2) { - // oauth2 auth should have the following fields: _flows, _tokenProvider + // oauth2 auth should have _flows field; _tokenProvider is no longer stored AssertHasFields(clientProvider, new List { - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(Dictionary[])), "_flows"), - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(AuthenticationTokenProvider)), "_tokenProvider"), + new(FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, new CSharpType(typeof(Dictionary[])), "_flows"), }); + Assert.IsFalse(clientProvider.Fields.Any(f => f.Name == "_tokenProvider")); } if (_hasOAuth2WithOtherCredType) { AssertHasFields(clientProvider, new List { new(FieldModifiers.Private | FieldModifiers.Static | FieldModifiers.ReadOnly, new CSharpType(typeof(string[])), "AuthorizationScopes"), - new(FieldModifiers.Private | FieldModifiers.ReadOnly, new CSharpType(typeof(FakeTokenCredential)), "_tokenCredential"), }); + Assert.IsFalse(clientProvider.Fields.Any(f => f.Name == "_tokenCredential")); } } @@ -366,26 +369,18 @@ public void TestBuildConstructors_PrimaryConstructor(List inputP var constructors = clientProvider.Constructors; - var primaryPublicConstructors = constructors.Where( - c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public).ToArray(); + // The implementation constructors are now INTERNAL (taking AuthenticationPolicy? as first param) + var implementationConstructors = constructors.Where( + c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal).ToArray(); - // for no auth or one auth case, this should be 1 - // for both auth case, this should be 2 - // for only unsupported auth case, this should be 0 - int expectedPrimaryCtorCount; - if (_hasOnlyUnsupportedAuth) - { - expectedPrimaryCtorCount = 0; - } - else - { - expectedPrimaryCtorCount = _hasKeyAuth && _hasOAuth2 ? 2 : 1; - } - Assert.AreEqual(expectedPrimaryCtorCount, primaryPublicConstructors.Length); + // There is always exactly 1 internal implementation constructor, regardless of auth type count. + // All public credential constructors are pass-throughs to this single implementation constructor. + int expectedImplCtorCount = 1; + Assert.AreEqual(expectedImplCtorCount, implementationConstructors.Length); - for (int i = 0; i < primaryPublicConstructors.Length; i++) + for (int i = 0; i < implementationConstructors.Length; i++) { - ValidatePrimaryConstructor(primaryPublicConstructors[i], inputParameters, i); + ValidatePrimaryConstructor(implementationConstructors[i], inputParameters, i); } } @@ -404,10 +399,14 @@ public void TestBuildConstructors_SecondaryConstructor(List inpu var constructors = clientProvider.Constructors; - var primaryPublicConstructors = constructors.Where( - c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public).ToArray(); + var implementationConstructors = constructors.Where( + c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal).ToArray(); var secondaryPublicConstructors = constructors.Where( - c => c.Signature?.Initializer != null && c.Signature?.Modifiers == MethodSignatureModifiers.Public).ToArray(); + c => c.Signature?.Initializer != null && + c.Signature?.Modifiers == MethodSignatureModifiers.Public && + !IsSettingsConstructor(c) && + !IsPrimaryPassThroughConstructor(c)).ToArray(); + var primaryPassThroughConstructors = constructors.Where(IsPrimaryPassThroughConstructor).ToArray(); // Check if endpoint has a default value var endpointParam = inputParameters.FirstOrDefault(p => p is InputEndpointParameter ep && ep.IsEndpoint); @@ -447,7 +446,7 @@ public void TestBuildConstructors_SecondaryConstructor(List inpu Assert.AreEqual(expectedSecondaryCtorCount, secondaryPublicConstructors.Length); foreach (var secondaryPublicConstructor in secondaryPublicConstructors) { - ValidateSecondaryConstructor(primaryPublicConstructors, secondaryPublicConstructor, inputParameters); + ValidateSecondaryConstructor(primaryPassThroughConstructors, secondaryPublicConstructor, inputParameters); } } @@ -543,15 +542,22 @@ public void TestBuildConstructors_SimplifiedWithOptions_WhenDefaultEndpoint() var constructors = clientProvider.Constructors; - // Get all public constructors with an initializer (secondary constructors) + // Get secondary constructors (not primary pass-through, not settings constructor) var secondaryPublicConstructors = constructors.Where( - c => c.Signature?.Initializer != null && c.Signature?.Modifiers == MethodSignatureModifiers.Public).ToList(); + c => c.Signature?.Initializer != null && + c.Signature?.Modifiers == MethodSignatureModifiers.Public && + !IsSettingsConstructor(c) && + !IsPrimaryPassThroughConstructor(c)).ToList(); // We should have 2 secondary constructors per auth type: // 1. Client(credential) - simple with just auth // 2. Client(credential, options) - simplified with auth + options Assert.AreEqual(2, secondaryPublicConstructors.Count); + // Verify the settings constructor also exists + var settingsConstructor = constructors.FirstOrDefault(IsSettingsConstructor); + Assert.IsNotNull(settingsConstructor, "Expected a settings constructor"); + // Verify the simple constructor exists (just auth) var simpleConstructor = secondaryPublicConstructors.FirstOrDefault(c => c.Signature.Parameters.Count == 1); Assert.IsNotNull(simpleConstructor, "Expected a simple constructor with just auth parameter"); @@ -582,6 +588,58 @@ public void TestBuildConstructors_SimplifiedWithOptions_WhenDefaultEndpoint() Assert.IsFalse(optionsArg is NewInstanceExpression, "Options argument should be the parameter itself, not a new instance"); } + [TestCase(Category = KeyAuthCategory)] + [TestCase(Category = OAuth2Category)] + public void TestBuildConstructors_SettingsConstructor() + { + var inputParameters = new List + { + InputFactory.EndpointParameter( + KnownParameters.Endpoint.Name, + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true) + }; + var client = InputFactory.Client(TestClientName, parameters: [.. inputParameters]); + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider); + + var constructors = clientProvider.Constructors; + var settingsConstructor = constructors.FirstOrDefault(IsSettingsConstructor); + Assert.IsNotNull(settingsConstructor, "Expected a settings constructor"); + + // Validate it's public + Assert.AreEqual(MethodSignatureModifiers.Public, settingsConstructor!.Signature.Modifiers); + + // Validate it has exactly 1 parameter: settings + Assert.AreEqual(1, settingsConstructor.Signature.Parameters.Count); + Assert.AreEqual("settings", settingsConstructor.Signature.Parameters[0].Name); + + // Validate it's a pass-through (body is empty) + Assert.AreEqual(MethodBodyStatement.Empty, settingsConstructor.BodyStatements); + + // Validate it has a this(...) initializer + var initializer = settingsConstructor.Signature.Initializer; + Assert.IsNotNull(initializer); + Assert.IsFalse(initializer!.IsBase, "Settings constructor should use this() initializer, not base()"); + } + + [Test] + public void TestBuildConstructors_NoSettingsConstructor_WhenNoEndpoint() + { + // No endpoint parameter — settings constructor should not be generated + var client = InputFactory.Client(TestClientName); + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider); + + var constructors = clientProvider.Constructors; + var settingsConstructor = constructors.FirstOrDefault(IsSettingsConstructor); + Assert.IsNull(settingsConstructor, "Settings constructor should not be generated when there is no endpoint"); + } + [Test] public void TestBuildConstructors_DeduplicatesParametersBySerializedName() { @@ -697,10 +755,17 @@ public void TestBuildConstructors_DeduplicatesConstructorParametersBySerializedN [Test] public void TestBuildConstructors_ForSubClient_InitializedByIndividually_HasPublicConstructors() { - var parentClient = InputFactory.Client("ParentClient"); + var endpointParameter = InputFactory.EndpointParameter( + KnownParameters.Endpoint.Name, + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true); + var parentClient = InputFactory.Client("ParentClient", parameters: [endpointParameter]); var subClient = InputFactory.Client( "SubClient", parent: parentClient, + parameters: [endpointParameter], initializedBy: InputClientInitializedBy.Individually); MockHelpers.LoadMockGenerator( @@ -718,23 +783,28 @@ public void TestBuildConstructors_ForSubClient_InitializedByIndividually_HasPubl c => c.Signature?.Modifiers == MethodSignatureModifiers.Public).ToList(); Assert.IsTrue(publicConstructors.Count > 0, "SubClient with InitializedBy.Individually should have public constructors"); - // primary constructor should set the pipeline, options, and endpoint + // Primary public constructor should have auth credential param and chain to internal via this(...) var primaryConstructor = publicConstructors.FirstOrDefault( - c => c.Signature?.Initializer == null); - Assert.IsNotNull(primaryConstructor, "SubClient with InitializedBy.Individually should have primary public constructor"); - StringAssert.Contains( - "options ??= new global::Sample.ParentClientOptions();", - primaryConstructor!.BodyStatements!.ToDisplayString(), - "Primary constructor should null coalesce options parameter"); - StringAssert.Contains( - "Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.SubClient).Assembly) }, Array.Empty());", - primaryConstructor.BodyStatements!.ToDisplayString(), - "Primary constructor should set the Pipeline property"); - - // Should NOT have internal constructor since InitializedBy does not include Parent - var internalConstructor = constructors.FirstOrDefault( - c => c.Signature?.Modifiers == MethodSignatureModifiers.Internal); - Assert.IsNull(internalConstructor, "SubClient with InitializedBy.Individually (without Parent) should not have internal constructor"); + c => c.Signature?.Parameters.Any(p => p.Name == "options") == true && c.Signature?.Initializer != null); + Assert.IsNotNull(primaryConstructor, "SubClient with InitializedBy.Individually should have primary public constructor with initializer"); + + // Should have a credential parameter (from the mock api key auth) + Assert.IsTrue(primaryConstructor!.Signature.Parameters.Any(p => p.Name == "credential"), + "SubClient with InitializedBy.Individually should have credential parameter in public constructor"); + + // Should have internal AuthenticationPolicy constructor + var internalConstructors = constructors.Where( + c => c.Signature?.Modifiers == MethodSignatureModifiers.Internal).ToList(); + Assert.IsTrue(internalConstructors.Count > 0, "SubClient with InitializedBy.Individually should have internal constructor"); + var authPolicyConstructor = internalConstructors.FirstOrDefault( + c => c.Signature?.Parameters.Any(p => p.Type.Name == nameof(AuthenticationPolicy)) == true); + Assert.IsNotNull(authPolicyConstructor, "SubClient with InitializedBy.Individually should have internal AuthenticationPolicy constructor"); + + // Should have a Settings constructor + Assert.IsNotNull(clientProvider.ClientSettings, "SubClient with InitializedBy.Individually should have ClientSettings"); + var settingsConstructor = publicConstructors.FirstOrDefault( + c => c.Signature?.Parameters.Count == 1 && c.Signature.Parameters[0].Name == "settings"); + Assert.IsNotNull(settingsConstructor, "SubClient with InitializedBy.Individually should have Settings constructor"); var mockingConstructor = constructors.FirstOrDefault( c => c.Signature?.Modifiers == MethodSignatureModifiers.Protected); @@ -777,10 +847,17 @@ public void TestBuildConstructors_ForSubClient_InitializedByParentOnly_HasOnlyIn [Test] public void TestBuildConstructors_ForSubClient_InitializedByBoth_HasBothConstructors() { - var parentClient = InputFactory.Client("ParentClient"); + var endpointParameter = InputFactory.EndpointParameter( + KnownParameters.Endpoint.Name, + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true); + var parentClient = InputFactory.Client("ParentClient", parameters: [endpointParameter]); var subClient = InputFactory.Client( "SubClient", parent: parentClient, + parameters: [endpointParameter], initializedBy: InputClientInitializedBy.Individually | InputClientInitializedBy.Parent); MockHelpers.LoadMockGenerator( @@ -798,23 +875,21 @@ public void TestBuildConstructors_ForSubClient_InitializedByBoth_HasBothConstruc c => c.Signature?.Modifiers == MethodSignatureModifiers.Public).ToList(); Assert.IsTrue(publicConstructors.Count > 0, "SubClient with InitializedBy.Individually | Parent should have public constructors"); - // primary constructor should set the pipeline, options, and endpoint + // Primary public constructor should have auth credential param and chain to internal via this(...) var primaryConstructor = publicConstructors.FirstOrDefault( - c => c.Signature?.Initializer == null); - Assert.IsNotNull(primaryConstructor, "SubClient with InitializedBy.Individually should have primary public constructor"); - StringAssert.Contains( - "options ??= new global::Sample.ParentClientOptions();", - primaryConstructor!.BodyStatements!.ToDisplayString(), - "Primary constructor should null coalesce options parameter"); - StringAssert.Contains( - "Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.SubClient).Assembly) }, Array.Empty());", - primaryConstructor.BodyStatements!.ToDisplayString(), - "Primary constructor should set the Pipeline property"); - - // Should also have internal constructor - var internalConstructor = constructors.FirstOrDefault( - c => c.Signature?.Modifiers == MethodSignatureModifiers.Internal); - Assert.IsNotNull(internalConstructor, "SubClient with InitializedBy.Individually | Parent should have internal constructor"); + c => c.Signature?.Parameters.Any(p => p.Name == "options") == true && c.Signature?.Initializer != null); + Assert.IsNotNull(primaryConstructor, "SubClient with InitializedBy.Individually should have primary public constructor with initializer"); + + // Should also have internal constructors (sub-client internal + AuthenticationPolicy internal) + var internalConstructors = constructors.Where( + c => c.Signature?.Modifiers == MethodSignatureModifiers.Internal).ToList(); + Assert.IsTrue(internalConstructors.Count > 0, "SubClient with InitializedBy.Individually | Parent should have internal constructor"); + + // Should have a Settings constructor + Assert.IsNotNull(clientProvider.ClientSettings, "SubClient with InitializedBy.Individually | Parent should have ClientSettings"); + var settingsConstructor = publicConstructors.FirstOrDefault( + c => c.Signature?.Parameters.Count == 1 && c.Signature.Parameters[0].Name == "settings"); + Assert.IsNotNull(settingsConstructor, "SubClient with InitializedBy.Individually | Parent should have Settings constructor"); var mockingConstructor = constructors.FirstOrDefault( c => c.Signature?.Modifiers == MethodSignatureModifiers.Protected); @@ -1017,15 +1092,18 @@ private void ValidatePrimaryConstructor( [CallerFilePath] string filePath = "") { var primaryCtorParams = primaryPublicConstructor?.Signature?.Parameters; - // in no auth case, the ctor only have two parameters: endpoint and options - // in other cases, the ctor should have three parameters: endpoint, credential, options - // specifically, in both auth cases, we should have two ctors corresponding to each credential type as the second parameter - var expectedPrimaryCtorParamCount = !_hasKeyAuth && !_hasOAuth2 ? 2 : 3; + // The internal implementation constructor always has 3 parameters: authenticationPolicy, endpoint, options + var expectedPrimaryCtorParamCount = 3; Assert.AreEqual(expectedPrimaryCtorParamCount, primaryCtorParams?.Count); - // the first should be endpoint - var endpointParam = primaryCtorParams?[0]; + // the first should be authenticationPolicy (AuthenticationPolicy?) + var authPolicyParam = primaryCtorParams?[0]; + Assert.AreEqual("authenticationPolicy", authPolicyParam?.Name); + Assert.IsTrue(authPolicyParam?.Type.Equals(new CSharpType(typeof(AuthenticationPolicy), isNullable: true))); + + // the second should be endpoint + var endpointParam = primaryCtorParams?[1]; Assert.AreEqual(KnownParameters.Endpoint.Name, endpointParam?.Name); if (endpointParam?.DefaultValue != null) @@ -1040,25 +1118,6 @@ private void ValidatePrimaryConstructor( var optionsParam = primaryCtorParams?[^1]; Assert.AreEqual("options", optionsParam?.Name); - if (_hasSupportedAuth) - { - // when there is any auth, the second should be auth parameter - var authParam = primaryCtorParams?[1]; - Assert.IsNotNull(authParam); - if (authParam?.Type.Equals(typeof(ApiKeyCredential)) == true) - { - Assert.AreEqual("credential", authParam.Name); - } - else if (authParam?.Type.Equals(typeof(AuthenticationTokenProvider)) == true) - { - Assert.AreEqual("tokenProvider", authParam.Name); - } - else - { - Assert.Fail("Unexpected auth parameter"); - } - } - // validate the body of the primary ctor var caseName = TestContext.CurrentContext.Test.Properties.Get("caseName"); var expected = Helpers.GetExpectedFromFile($"{caseName},{_hasKeyAuth},{_hasOAuth2},{ctorIndex}", method, filePath); @@ -1130,6 +1189,23 @@ private void ValidateSecondaryConstructor( Assert.IsTrue(primaryConstructors.Any(pc => pc.Signature.Parameters.Count == initializer?.Arguments.Count)); } + private static bool IsSettingsConstructor(ConstructorProvider c) => + c.Signature?.Initializer != null && + c.Signature?.Modifiers == MethodSignatureModifiers.Public && + c.Signature.Parameters.Any(p => p.Name == "settings"); + + /// + /// Identifies the public primary pass-through constructor (calls the internal implementation constructor). + /// It is the public constructor that has both an endpoint parameter AND an options parameter. + /// Secondary constructors never have both endpoint and options (they have a subset). + /// + private static bool IsPrimaryPassThroughConstructor(ConstructorProvider c) => + c.Signature?.Initializer != null && + c.Signature?.Modifiers == MethodSignatureModifiers.Public && + !IsSettingsConstructor(c) && + c.Signature.Parameters.Any(p => p.Name == KnownParameters.Endpoint.Name) && + c.Signature.Parameters.Any(p => p.Name == "options"); + [TestCaseSource(nameof(EndpointParamInitializationValueTestCases))] public void EndpointInitializationValue(InputParameter endpointParameter, ValueExpression? expectedValue) { @@ -1139,7 +1215,7 @@ public void EndpointInitializationValue(InputParameter endpointParameter, ValueE Assert.IsNotNull(clientProvider); // find the endpoint parameter from the primary constructor var primaryConstructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); var endpoint = primaryConstructor?.Signature?.Parameters?.FirstOrDefault(p => p.Name == KnownParameters.Endpoint.Name); Assert.IsNotNull(endpoint); @@ -1160,7 +1236,7 @@ public void TestGetClientOptions(bool isSubClient) parentClient = InputFactory.Client("parent"); } - var client = InputFactory.Client(TestClientName, parent: parentClient); + var client = InputFactory.Client(TestClientName, parent: parentClient, initializedBy: isSubClient ? InputClientInitializedBy.Parent : InputClientInitializedBy.Individually); var clientProvider = new ClientProvider(client); Assert.IsNotNull(clientProvider); @@ -1228,6 +1304,61 @@ public void ValidateQueryParamDiff() Assert.AreEqual(2, methods.Where(m => m.Signature.Parameters.Any(p => p.Name == "queryParam" && p.Type.IsFrameworkType && p.Type.FrameworkType == typeof(string))).Count()); } + // Validates that when generateConvenienceMethod is false (i.e. @convenientAPI(false)), + [Test] + public void ValidateEnumQueryParamWithoutConvenienceMethod() + { + MockHelpers.LoadMockGenerator(); + + var enumType = InputFactory.StringEnum( + "InputEnum", + [("value1", "value1"), ("value2", "value2")], + usage: InputModelTypeUsage.Input, + isExtensible: true); + var inputClient = InputFactory.Client( + TestClientName, + methods: + [ + InputFactory.BasicServiceMethod( + "test", + InputFactory.Operation( + "Operation", + parameters: + [ + InputFactory.QueryParameter( + "queryParam", + enumType, + isRequired: true) + ], + generateConvenienceMethod: false), + parameters: + [ + InputFactory.MethodParameter( + "queryParam", + enumType, + isRequired: true, + location: InputRequestLocation.Query) + ]) + ]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); + Assert.IsNotNull(clientProvider); + var methods = clientProvider!.Methods; + + // only protocol methods (sync + async), no convenience methods + Assert.AreEqual(2, methods.Count); + Assert.IsTrue(methods.All(m => m is ScmMethodProvider)); + + Assert.AreEqual(2, methods.Where(m => m.Signature.Parameters.Any( + p => p.Name == "queryParam" && p.Type.IsFrameworkType && p.Type.FrameworkType == typeof(string))).Count()); + + Assert.AreEqual(0, methods.Where(m => m.Signature.Parameters.Any( + p => p.Name == "queryParam" && p.Type.Name == "InputEnum")).Count()); + + var enumProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateEnum(enumType); + Assert.IsNotNull(enumProvider); + } + [TestCase(true)] [TestCase(false)] public void ValidateQueryParamWriterDiff(bool isAsync) @@ -1401,7 +1532,7 @@ public void TestApiVersionOfClient() /* verify the apiVersion assignment in constructor body */ var primaryConstructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); Assert.IsNotNull(primaryConstructor); var bodyStatements = primaryConstructor?.BodyStatements as MethodBodyStatements; Assert.IsNotNull(bodyStatements); @@ -1438,7 +1569,7 @@ public void TestApiVersionPathParameterOfClient(InputClient inputClient) /* verify the apiVersion assignment in constructor body */ var primaryConstructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature?.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); Assert.IsNotNull(primaryConstructor); var bodyStatements = primaryConstructor?.BodyStatements as MethodBodyStatements; Assert.IsNotNull(bodyStatements); @@ -1458,6 +1589,7 @@ public void ApiVersionFieldIsStoredOnRootClient() var subClient = InputFactory.Client( "SubClient", parent: rootClient, + initializedBy: InputClientInitializedBy.Parent, parameters: [ InputFactory.PathParameter("apiVersion", InputPrimitiveType.String, isRequired: true, scope: InputParameterScope.Client, isApiVersion: true), @@ -1612,7 +1744,7 @@ public void EndpointFieldAssignedFromUriParameter() isEndpoint: true)]); var clientProvider = new ClientProvider(client); var constructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); StringAssert.Contains("_endpoint = endpoint;", constructor?.BodyStatements?.ToDisplayString()); } @@ -1633,7 +1765,7 @@ public void EndpointFieldAssignedFromStringParameter(string serverTemplate, stri isEndpoint: true)]); var clientProvider = new ClientProvider(client); var constructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); StringAssert.Contains($"_endpoint = new global::System.Uri($\"{serverTemplate}\");", constructor?.BodyStatements?.ToDisplayString()); } @@ -3213,8 +3345,8 @@ public void MultiServiceClient_GeneratesExpectedClient() scope: InputParameterScope.Client); var client = InputFactory.Client(TestClientName, parameters: [subscriptionIdParameter, apiVersionParameter], isMultiServiceClient: true); - var serviceAClient = InputFactory.Client("ServiceA", clientNamespace: "Sample.ServiceA", parent: client, parameters: [apiVersionParameter, subscriptionIdParameter]); - var serviceBClient = InputFactory.Client("ServiceB", clientNamespace: "Sample.ServiceB", parent: client, parameters: [apiVersionParameter, subscriptionIdParameter]); + var serviceAClient = InputFactory.Client("ServiceA", clientNamespace: "Sample.ServiceA", parent: client, initializedBy: InputClientInitializedBy.Parent, parameters: [apiVersionParameter, subscriptionIdParameter]); + var serviceBClient = InputFactory.Client("ServiceB", clientNamespace: "Sample.ServiceB", parent: client, initializedBy: InputClientInitializedBy.Parent, parameters: [apiVersionParameter, subscriptionIdParameter]); MockHelpers.LoadMockGenerator( apiVersions: () => [.. serviceAVersions, .. serviceBVersions], @@ -3273,9 +3405,9 @@ public void MultiServiceClient_WithThreeServices_GeneratesExpectedClient() scope: InputParameterScope.Client); var client = InputFactory.Client(TestClientName, parameters: [subscriptionIdParameter, apiVersionParameter], isMultiServiceClient: true); - var keyVaultClient = InputFactory.Client("KeyVault", clientNamespace: "Sample.KeyVault", parent: client, parameters: [apiVersionParameter, subscriptionIdParameter]); - var storageClient = InputFactory.Client("Storage", clientNamespace: "Sample.Storage", parent: client, parameters: [apiVersionParameter, subscriptionIdParameter]); - var computeClient = InputFactory.Client("Compute", clientNamespace: "Sample.Compute", parent: client, parameters: [apiVersionParameter, subscriptionIdParameter]); + var keyVaultClient = InputFactory.Client("KeyVault", clientNamespace: "Sample.KeyVault", parent: client, initializedBy: InputClientInitializedBy.Parent, parameters: [apiVersionParameter, subscriptionIdParameter]); + var storageClient = InputFactory.Client("Storage", clientNamespace: "Sample.Storage", parent: client, initializedBy: InputClientInitializedBy.Parent, parameters: [apiVersionParameter, subscriptionIdParameter]); + var computeClient = InputFactory.Client("Compute", clientNamespace: "Sample.Compute", parent: client, initializedBy: InputClientInitializedBy.Parent, parameters: [apiVersionParameter, subscriptionIdParameter]); MockHelpers.LoadMockGenerator( apiVersions: () => [.. keyVaultVersions, .. storageVersions, .. computeVersions], @@ -3689,6 +3821,81 @@ public void GetApiVersionFieldForService_MultiService_CaseInsensitiveMatch() Assert.AreEqual("_serviceAApiVersion", fieldUpperCase!.Name); } + [Test] + public void GetApiVersionFieldForService_MultiService_SameLastSegment_ProducesUniqueFields() + { + // Regression test: when two services have different full namespaces but the same last + // segment, using only the last segment would produce duplicate field names. The fix + // uses the full namespace to guarantee uniqueness. + List serviceOneVersions = ["1.0", "2.0"]; + List serviceTwoVersions = ["3.0", "4.0"]; + + var serviceOneEnumValues = serviceOneVersions.Select(a => (a, a)); + var serviceTwoEnumValues = serviceTwoVersions.Select(a => (a, a)); + + // Different full namespaces, same last segment ("Tests") — would collide with last-segment-only naming + var serviceOneEnum = InputFactory.StringEnum( + "ServiceOneVersions", + serviceOneEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.ServiceOne.Tests"); + var serviceTwoEnum = InputFactory.StringEnum( + "ServiceTwoVersions", + serviceTwoEnumValues, + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.ServiceTwo.Tests"); + + InputParameter apiVersionParameter = InputFactory.QueryParameter( + "apiVersion", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client, + isApiVersion: true); + + var serviceOneOperation = InputFactory.Operation( + "ServiceOneOperation", + parameters: [apiVersionParameter], + ns: "Azure.ServiceOne.Tests"); + + var serviceTwoOperation = InputFactory.Operation( + "ServiceTwoOperation", + parameters: [apiVersionParameter], + ns: "Azure.ServiceTwo.Tests"); + + var client = InputFactory.Client( + TestClientName, + methods: + [ + InputFactory.BasicServiceMethod("ServiceOneMethod", serviceOneOperation), + InputFactory.BasicServiceMethod("ServiceTwoMethod", serviceTwoOperation) + ], + parameters: [apiVersionParameter], + isMultiServiceClient: true); + + MockHelpers.LoadMockGenerator( + apiVersions: () => [.. serviceOneVersions, .. serviceTwoVersions], + clients: () => [client], + inputEnums: () => [serviceOneEnum, serviceTwoEnum]); + + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + Assert.IsNotNull(clientProvider); + + // This should not crash — previously it threw due to duplicate field names + Assert.DoesNotThrow(() => _ = clientProvider!.Fields); + + // Verify we have two distinct api version fields using the shortest unique namespace suffix + var apiVersionFields = clientProvider!.Fields + .Where(f => f.Name.Contains("ApiVersion", StringComparison.OrdinalIgnoreCase)) + .OrderBy(f => f.Name) + .ToList(); + Assert.AreEqual(2, apiVersionFields.Count); + Assert.AreNotEqual(apiVersionFields[0].Name, apiVersionFields[1].Name); + + // Shortest unique suffix: "ServiceOne.Tests" → "ServiceOneTests" + Assert.AreEqual("_serviceOneTestsApiVersion", apiVersionFields[0].Name); + Assert.AreEqual("_serviceTwoTestsApiVersion", apiVersionFields[1].Name); + } + [TestCase("{endpoint}")] [TestCase("{Endpoint}")] [TestCase("{ENDPOINT}")] @@ -3707,7 +3914,7 @@ public void ConvertUriTemplate_CaseInsensitiveEndpointLookup(string serverTempla isEndpoint: true)]); var clientProvider = new ClientProvider(client); var constructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); Assert.IsNotNull(constructor); // Should not throw and should contain the Uri assignment @@ -3741,7 +3948,7 @@ public void ConvertUriTemplate_CaseInsensitivePathParameterLookup() ]); var clientProvider = new ClientProvider(client); var constructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); Assert.IsNotNull(constructor); // Should not throw - case-insensitive lookup should find parameters @@ -3782,7 +3989,7 @@ public void ConvertUriTemplate_WithMultiplePlaceholders() ]); var clientProvider = new ClientProvider(client); var constructor = clientProvider.Constructors.FirstOrDefault( - c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Public); + c => c.Signature.Initializer == null && c.Signature?.Modifiers == MethodSignatureModifiers.Internal); Assert.IsNotNull(constructor); var bodyText = constructor!.BodyStatements!.ToDisplayString(); @@ -3790,6 +3997,189 @@ public void ConvertUriTemplate_WithMultiplePlaceholders() // Verify that the Uri is built according to the server template Assert.IsTrue(bodyText.Contains("$\"{endpoint}/{_apiVersion}/services/{_subscriptionId}\"")); } + + [Test] + public void TestParamAlias_ClientConstructorDoesNotDuplicateAliasedParameter() + { + // A client parameter "blob" with paramAlias "blobName" should not produce + // a duplicate field when the operation also declares "blobName" as client-scoped. + var clientParam = InputFactory.MethodParameter( + "blob", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client, + paramAlias: "blobName"); + + var operationParam = InputFactory.PathParameter( + "blobName", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client); + + var operation = InputFactory.Operation("Upload", parameters: [operationParam]); + var client = InputFactory.Client( + TestClientName, + methods: [InputFactory.BasicServiceMethod("Upload", operation)], + parameters: [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + clientParam]); + + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider); + + // Should have exactly one field for the blob/blobName parameter (not two) + var blobFields = clientProvider.Fields.Where(f => f.Name == "_blob" || f.Name == "_blobName").ToList(); + Assert.AreEqual(1, blobFields.Count, + $"Expected 1 field but found {blobFields.Count}: {string.Join(", ", blobFields.Select(f => f.Name))}"); + Assert.AreEqual("_blob", blobFields[0].Name); + + // ClientParameters should contain only the "blob" parameter + var blobParams = clientProvider.ClientParameters.Where( + p => p.Name == "blob" || p.Name == "blobName").ToList(); + Assert.AreEqual(1, blobParams.Count, + $"Expected 1 client parameter but found {blobParams.Count}: {string.Join(", ", blobParams.Select(p => p.Name))}"); + Assert.AreEqual("blob", blobParams[0].Name); + } + + [Test] + public void TestParamAlias_ClientConstructorKeepsBothWhenNoAlias() + { + // Without paramAlias, a client parameter "blob" and operation parameter "blobName" + // should both appear since they have different names. + var clientParam = InputFactory.MethodParameter( + "blob", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client); + + var operationParam = InputFactory.PathParameter( + "blobName", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client); + + var operation = InputFactory.Operation("Upload", parameters: [operationParam]); + var client = InputFactory.Client( + TestClientName, + methods: [InputFactory.BasicServiceMethod("Upload", operation)], + parameters: [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + clientParam]); + + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider); + + // Without alias, both fields should exist + var blobFields = clientProvider.Fields.Where(f => f.Name == "_blob" || f.Name == "_blobName").ToList(); + Assert.AreEqual(2, blobFields.Count, + $"Expected 2 fields but found {blobFields.Count}: {string.Join(", ", blobFields.Select(f => f.Name))}"); + } + + [Test] + public void TestParamAlias_MatchingNamesWithoutAliasDeduplicate() + { + // When the client parameter and operation parameter share the same name, + // deduplication occurs by name even without paramAlias. + var clientParam = InputFactory.MethodParameter( + "blobName", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client); + + var operationParam = InputFactory.PathParameter( + "blobName", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client); + + var operation = InputFactory.Operation("Upload", parameters: [operationParam]); + var client = InputFactory.Client( + TestClientName, + methods: [InputFactory.BasicServiceMethod("Upload", operation)], + parameters: [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + clientParam]); + + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider); + + // Same name means they get deduplicated to one field + var blobFields = clientProvider.Fields.Where(f => f.Name == "_blobName").ToList(); + Assert.AreEqual(1, blobFields.Count); + } + + [Test] + public void TestParamAlias_MethodParametersSkipAliasedClientParam() + { + // When a client parameter "blob" is aliased to "blobName" via @paramAlias, + // the generated operation method should NOT have "blobName" as a method parameter + // since it's already on the client. + var clientParam = InputFactory.MethodParameter( + "blob", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client, + paramAlias: "blobName"); + + var operationParam = InputFactory.PathParameter( + "blobName", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client); + + var operation = InputFactory.Operation("Upload", parameters: [operationParam]); + var client = InputFactory.Client( + TestClientName, + methods: [InputFactory.BasicServiceMethod("Upload", operation)], + parameters: [ + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + clientParam]); + + var clientProvider = new ClientProvider(client); + + Assert.IsNotNull(clientProvider); + + // Get the generated operation methods (excluding subclient accessors and constructors) + var operationMethods = clientProvider.Methods + .Where(m => m.Signature?.Name == "Upload" || m.Signature?.Name == "UploadAsync") + .ToList(); + + Assert.IsTrue(operationMethods.Count > 0, "Should have Upload methods"); + + foreach (var method in operationMethods) + { + var paramNames = method.Signature!.Parameters.Select(p => p.Name).ToList(); + Assert.IsFalse(paramNames.Contains("blobName"), + $"Method '{method.Signature.Name}' should not have 'blobName' parameter since it's an aliased client parameter. " + + $"Params: [{string.Join(", ", paramNames)}]"); + Assert.IsFalse(paramNames.Contains("blob"), + $"Method '{method.Signature.Name}' should not have 'blob' parameter since it's a client parameter. " + + $"Params: [{string.Join(", ", paramNames)}]"); + } + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_GeneratesExpectedClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_GeneratesExpectedClient.cs index b650c53a695..7aa404c1406 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_GeneratesExpectedClient.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_GeneratesExpectedClient.cs @@ -27,7 +27,7 @@ protected TestClient() { } - public TestClient(global::System.Uri endpoint, string subscriptionId, global::Sample.TestClientOptions options) + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, global::System.Uri endpoint, string subscriptionId, global::Sample.TestClientOptions options) { global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); global::Sample.Argument.AssertNotNullOrEmpty(subscriptionId, nameof(subscriptionId)); @@ -36,11 +36,22 @@ public TestClient(global::System.Uri endpoint, string subscriptionId, global::Sa _endpoint = endpoint; _subscriptionId = subscriptionId; - Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } _serviceAApiVersion = options.ServiceAApiVersion; _serviceBApiVersion = options.ServiceBApiVersion; } + public TestClient(global::System.Uri endpoint, string subscriptionId, global::Sample.TestClientOptions options) : this(null, endpoint, subscriptionId, options) + { + } + public global::System.ClientModel.Primitives.ClientPipeline Pipeline { get; } public virtual global::Sample.ServiceA.ServiceA GetServiceAClient() diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClient.cs index ae8e7b8d8ae..f0dc227b3eb 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClient.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClient.cs @@ -15,9 +15,9 @@ public partial class TestClient { private readonly global::System.Uri _endpoint; private readonly string _subscriptionId; - private readonly string _serviceComputeApiVersion; - private readonly string _serviceKeyVaultApiVersion; - private readonly string _serviceStorageApiVersion; + private readonly string _computeApiVersion; + private readonly string _keyVaultApiVersion; + private readonly string _storageApiVersion; private global::Sample.KeyVault.KeyVault _cachedKeyVault; private global::Sample.Storage.Storage _cachedStorage; private global::Sample.Compute.Compute _cachedCompute; @@ -30,7 +30,7 @@ protected TestClient() { } - public TestClient(global::System.Uri endpoint, string subscriptionId, global::Sample.TestClientOptions options) + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, global::System.Uri endpoint, string subscriptionId, global::Sample.TestClientOptions options) { global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); global::Sample.Argument.AssertNotNullOrEmpty(subscriptionId, nameof(subscriptionId)); @@ -39,27 +39,38 @@ public TestClient(global::System.Uri endpoint, string subscriptionId, global::Sa _endpoint = endpoint; _subscriptionId = subscriptionId; - Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); - _serviceComputeApiVersion = options.ServiceComputeApiVersion; - _serviceKeyVaultApiVersion = options.ServiceKeyVaultApiVersion; - _serviceStorageApiVersion = options.ServiceStorageApiVersion; + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } + _computeApiVersion = options.ComputeApiVersion; + _keyVaultApiVersion = options.KeyVaultApiVersion; + _storageApiVersion = options.StorageApiVersion; + } + + public TestClient(global::System.Uri endpoint, string subscriptionId, global::Sample.TestClientOptions options) : this(null, endpoint, subscriptionId, options) + { } public global::System.ClientModel.Primitives.ClientPipeline Pipeline { get; } public virtual global::Sample.KeyVault.KeyVault GetKeyVaultClient() { - return (global::System.Threading.Volatile.Read(ref _cachedKeyVault) ?? (global::System.Threading.Interlocked.CompareExchange(ref _cachedKeyVault, new global::Sample.KeyVault.KeyVault(Pipeline, _endpoint, _serviceKeyVaultApiVersion, _subscriptionId), null) ?? _cachedKeyVault)); + return (global::System.Threading.Volatile.Read(ref _cachedKeyVault) ?? (global::System.Threading.Interlocked.CompareExchange(ref _cachedKeyVault, new global::Sample.KeyVault.KeyVault(Pipeline, _endpoint, _keyVaultApiVersion, _subscriptionId), null) ?? _cachedKeyVault)); } public virtual global::Sample.Storage.Storage GetStorageClient() { - return (global::System.Threading.Volatile.Read(ref _cachedStorage) ?? (global::System.Threading.Interlocked.CompareExchange(ref _cachedStorage, new global::Sample.Storage.Storage(Pipeline, _endpoint, _serviceStorageApiVersion, _subscriptionId), null) ?? _cachedStorage)); + return (global::System.Threading.Volatile.Read(ref _cachedStorage) ?? (global::System.Threading.Interlocked.CompareExchange(ref _cachedStorage, new global::Sample.Storage.Storage(Pipeline, _endpoint, _storageApiVersion, _subscriptionId), null) ?? _cachedStorage)); } public virtual global::Sample.Compute.Compute GetComputeClient() { - return (global::System.Threading.Volatile.Read(ref _cachedCompute) ?? (global::System.Threading.Interlocked.CompareExchange(ref _cachedCompute, new global::Sample.Compute.Compute(Pipeline, _endpoint, _serviceComputeApiVersion, _subscriptionId), null) ?? _cachedCompute)); + return (global::System.Threading.Volatile.Read(ref _cachedCompute) ?? (global::System.Threading.Interlocked.CompareExchange(ref _cachedCompute, new global::Sample.Compute.Compute(Pipeline, _endpoint, _computeApiVersion, _subscriptionId), null) ?? _cachedCompute)); } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_GeneratesExpectedClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_GeneratesExpectedClient.cs index 7ca9e6f204f..56c1c6cf460 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_GeneratesExpectedClient.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_GeneratesExpectedClient.cs @@ -24,18 +24,29 @@ protected TestClient() { } - public TestClient(global::System.Uri endpoint, global::Sample.TestClientOptions options) + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, global::System.Uri endpoint, global::Sample.TestClientOptions options) { global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; - Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } _serviceAApiVersion = options.ServiceAApiVersion; _serviceBApiVersion = options.ServiceBApiVersion; } + public TestClient(global::System.Uri endpoint, global::Sample.TestClientOptions options) : this(null, endpoint, options) + { + } + public global::System.ClientModel.Primitives.ClientPipeline Pipeline { get; } public virtual global::System.ClientModel.ClientResult ServiceAOperation(global::System.ClientModel.Primitives.RequestOptions options) diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClient.cs index dcb06d16e99..7a3f23c4d82 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClient.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClient.cs @@ -13,9 +13,9 @@ namespace Sample public partial class TestClient { private readonly global::System.Uri _endpoint; - private readonly string _serviceComputeApiVersion; - private readonly string _serviceKeyVaultApiVersion; - private readonly string _serviceStorageApiVersion; + private readonly string _computeApiVersion; + private readonly string _keyVaultApiVersion; + private readonly string _storageApiVersion; protected TestClient() { @@ -25,17 +25,28 @@ protected TestClient() { } - public TestClient(global::System.Uri endpoint, global::Sample.TestClientOptions options) + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, global::System.Uri endpoint, global::Sample.TestClientOptions options) { global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; - Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); - _serviceComputeApiVersion = options.ServiceComputeApiVersion; - _serviceKeyVaultApiVersion = options.ServiceKeyVaultApiVersion; - _serviceStorageApiVersion = options.ServiceStorageApiVersion; + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } + _computeApiVersion = options.ComputeApiVersion; + _keyVaultApiVersion = options.KeyVaultApiVersion; + _storageApiVersion = options.StorageApiVersion; + } + + public TestClient(global::System.Uri endpoint, global::Sample.TestClientOptions options) : this(null, endpoint, options) + { } public global::System.ClientModel.Primitives.ClientPipeline Pipeline { get; } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,False,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,False,0).cs index bc5bbc28eac..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,False,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,False,0).cs @@ -3,4 +3,11 @@ options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,True,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,True,0).cs index 4bfcac8a646..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,True,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,False,True,0).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(tokenProvider, nameof(tokenProvider)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_tokenProvider = tokenProvider; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), new global::System.ClientModel.Primitives.BearerTokenPolicy(_tokenProvider, _flows) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,False,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,False,0).cs index da28a866fe6..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,False,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,False,0).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(credential, nameof(credential)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_keyCredential = credential; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), global::System.ClientModel.Primitives.ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(_keyCredential, AuthorizationHeader) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,0).cs index da28a866fe6..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,0).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(credential, nameof(credential)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_keyCredential = credential; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), global::System.ClientModel.Primitives.ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(_keyCredential, AuthorizationHeader) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,1).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,1).cs index 4bfcac8a646..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,1).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithDefault,True,True,1).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(tokenProvider, nameof(tokenProvider)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_tokenProvider = tokenProvider; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), new global::System.ClientModel.Primitives.BearerTokenPolicy(_tokenProvider, _flows) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,False,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,False,0).cs index bc5bbc28eac..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,False,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,False,0).cs @@ -3,4 +3,11 @@ options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,True,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,True,0).cs index 4bfcac8a646..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,True,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,False,True,0).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(tokenProvider, nameof(tokenProvider)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_tokenProvider = tokenProvider; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), new global::System.ClientModel.Primitives.BearerTokenPolicy(_tokenProvider, _flows) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,False,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,False,0).cs index da28a866fe6..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,False,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,False,0).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(credential, nameof(credential)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_keyCredential = credential; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), global::System.ClientModel.Primitives.ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(_keyCredential, AuthorizationHeader) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,0).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,0).cs index da28a866fe6..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,0).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,0).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(credential, nameof(credential)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_keyCredential = credential; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), global::System.ClientModel.Primitives.ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(_keyCredential, AuthorizationHeader) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,1).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,1).cs index 4bfcac8a646..395de44a9d8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,1).cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/TestBuildConstructors_PrimaryConstructor(WithRequired,True,True,1).cs @@ -1,8 +1,13 @@ global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); -global::Sample.Argument.AssertNotNull(tokenProvider, nameof(tokenProvider)); options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; -_tokenProvider = tokenProvider; -Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), new global::System.ClientModel.Primitives.BearerTokenPolicy(_tokenProvider, _flows) }, Array.Empty()); +if ((authenticationPolicy != null)) +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); +} +else +{ + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/ValidateConstructorsWhenUnsupportedAuth.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/ValidateConstructorsWhenUnsupportedAuth.cs index 67b3361362f..89829df5a76 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/ValidateConstructorsWhenUnsupportedAuth.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/ValidateConstructorsWhenUnsupportedAuth.cs @@ -13,12 +13,25 @@ public partial class TestClient { } - internal TestClient(global::System.Uri endpoint, global::Sample.TestClientOptions options) + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, global::System.Uri endpoint, global::Sample.TestClientOptions options) { + global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); + options ??= new global::Sample.TestClientOptions(); _endpoint = endpoint; - Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } + } + + internal TestClient(global::System.Uri endpoint, global::Sample.TestClientOptions options) : this(null, endpoint, options) + { } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/XmlDocsAreWritten.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/XmlDocsAreWritten.cs index 31e104ce003..7166e071f8c 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/XmlDocsAreWritten.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientProviders/TestData/ClientProviderTests/XmlDocsAreWritten.cs @@ -1,4 +1,4 @@ -// +// #nullable disable @@ -31,12 +31,11 @@ protected TestClient() } /// Initializes a new instance of TestClient. + /// The authentication policy to use for pipeline creation. /// Service endpoint. /// queryParam description. /// The options for configuring the client. - /// or is null. - /// is an empty string, and was expected to be non-empty. - public TestClient(global::System.Uri endpoint, string queryParam, global::Sample.TestClientOptions options) + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, global::System.Uri endpoint, string queryParam, global::Sample.TestClientOptions options) { global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); global::Sample.Argument.AssertNotNullOrEmpty(queryParam, nameof(queryParam)); @@ -45,7 +44,24 @@ public TestClient(global::System.Uri endpoint, string queryParam, global::Sample _endpoint = endpoint; _queryParam = queryParam; - Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } + } + + /// Initializes a new instance of TestClient. + /// Service endpoint. + /// queryParam description. + /// The options for configuring the client. + /// or is null. + /// is an empty string, and was expected to be non-empty. + public TestClient(global::System.Uri endpoint, string queryParam, global::Sample.TestClientOptions options) : this(null, endpoint, queryParam, options) + { } /// The HTTP pipeline for sending and receiving REST requests and responses. diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientSettingsProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientSettingsProviderTests.cs new file mode 100644 index 00000000000..d5c35c7676c --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ClientSettingsProviderTests.cs @@ -0,0 +1,1091 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using Microsoft.TypeSpec.Generator.ClientModel.Providers; +using Microsoft.TypeSpec.Generator.Input; +using Microsoft.TypeSpec.Generator.Primitives; +using Microsoft.TypeSpec.Generator.Providers; +using Microsoft.TypeSpec.Generator.Statements; +using Microsoft.TypeSpec.Generator.Tests.Common; +using NUnit.Framework; + +namespace Microsoft.TypeSpec.Generator.ClientModel.Tests.Providers +{ + public class ClientSettingsProviderTests + { + [SetUp] + public void SetUp() + { + MockHelpers.LoadMockGenerator(); + } + + [Test] + public void TestName() + { + var client = InputFactory.Client("TestClient"); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + Assert.AreEqual("TestClientSettings", settingsProvider!.Name); + } + + [Test] + public void TestBaseType() + { + var client = InputFactory.Client("TestClient"); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + Assert.AreEqual(ClientSettingsProvider.ClientSettingsType, settingsProvider!.Type.BaseType); + } + + [Test] + public void TestGeneratedSettings_WithStringEndpoint() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + // Validate Endpoint property is string? (not Uri?) + var properties = settingsProvider!.Properties; + var endpointProp = properties.FirstOrDefault(p => p.Name == "Endpoint" && p.Type.Equals(new CSharpType(typeof(string), isNullable: true))); + Assert.IsNotNull(endpointProp, "Settings should have an Endpoint property of type string?"); + + var optionsProp = properties.FirstOrDefault(p => p.Name == "Options"); + Assert.IsNotNull(optionsProp, "Settings should have an Options property"); + + // Validate BindCore method + var bindCoreMethod = settingsProvider.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod, "Settings should have a BindCore method"); + Assert.AreEqual( + MethodSignatureModifiers.Protected | MethodSignatureModifiers.Override, + bindCoreMethod!.Signature.Modifiers); + Assert.AreEqual(1, bindCoreMethod.Signature.Parameters.Count); + Assert.AreEqual("section", bindCoreMethod.Signature.Parameters[0].Name); + var bodyString = bindCoreMethod.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("IsNullOrEmpty"), "BindCore should use string.IsNullOrEmpty for string endpoint binding"); + + // Validate full generated output + var writer = new TypeProviderWriter(settingsProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public void TestProperties_NoEndpoint() + { + var client = InputFactory.Client("TestClient"); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + // Settings provider should exist but without endpoint-related properties + Assert.IsNotNull(settingsProvider); + + var endpointProp = settingsProvider!.Properties.FirstOrDefault(p => p.Name == "Endpoint" && p.Type.Equals(new CSharpType(typeof(Uri), isNullable: true))); + Assert.IsNull(endpointProp, "Settings should not have an Endpoint property when no endpoint parameter exists"); + } + + [Test] + public void TestGeneratedSettings_WithUrlEndpoint() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.Url, + scope: InputParameterScope.Client, + isEndpoint: true) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + // Validate Endpoint property is Uri? + var properties = settingsProvider!.Properties; + var endpointProp = properties.FirstOrDefault(p => p.Name == "Endpoint" && p.Type.Equals(new CSharpType(typeof(Uri), isNullable: true))); + Assert.IsNotNull(endpointProp, "Settings should have an Endpoint property of type Uri?"); + + // Validate BindCore uses Uri.TryCreate + var bindCoreMethod = settingsProvider.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("TryCreate"), "BindCore should use Uri.TryCreate for Uri endpoint binding"); + + // Validate full generated output + var writer = new TypeProviderWriter(settingsProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public void TestBindCoreMethod_WithOptionsSection() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var methods = settingsProvider!.Methods; + var bindCoreMethod = methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + // Should get the options section and create options from it + Assert.IsTrue(bodyString.Contains("GetSection") && bodyString.Contains("Options"), + "BindCore should get the Options section from configuration"); + } + + [Test] + public void TestBindCoreMethod_WithBoolParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "enableRetry", + InputPrimitiveType.Boolean, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("bool.TryParse"), "BindCore should use bool.TryParse for bool parameter binding"); + Assert.IsTrue(bodyString.Contains("EnableRetry"), "BindCore should assign to EnableRetry property"); + } + + [Test] + public void TestBindCoreMethod_WithIntParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "maxRetries", + InputPrimitiveType.Int32, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("int.TryParse"), "BindCore should use int.TryParse for int parameter binding"); + Assert.IsTrue(bodyString.Contains("MaxRetries"), "BindCore should assign to MaxRetries property"); + } + + [Test] + public void TestBindCoreMethod_WithStringParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "tenantId", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("IsNullOrEmpty"), "BindCore should use string.IsNullOrEmpty for string parameter binding"); + Assert.IsTrue(bodyString.Contains("TenantId"), "BindCore should assign to TenantId property"); + } + + [Test] + public void TestProperties_WithMultipleParamTypes() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "enableRetry", + InputPrimitiveType.Boolean, + isRequired: true, + scope: InputParameterScope.Client), + InputFactory.MethodParameter( + "maxRetries", + InputPrimitiveType.Int32, + isRequired: true, + scope: InputParameterScope.Client), + InputFactory.MethodParameter( + "tenantId", + InputPrimitiveType.String, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var properties = settingsProvider!.Properties; + Assert.IsNotNull(properties.FirstOrDefault(p => p.Name == "Endpoint"), "Settings should have Endpoint property"); + Assert.IsNotNull(properties.FirstOrDefault(p => p.Name == "EnableRetry"), "Settings should have EnableRetry property"); + Assert.IsNotNull(properties.FirstOrDefault(p => p.Name == "MaxRetries"), "Settings should have MaxRetries property"); + Assert.IsNotNull(properties.FirstOrDefault(p => p.Name == "TenantId"), "Settings should have TenantId property"); + Assert.IsNotNull(properties.FirstOrDefault(p => p.Name == "Options"), "Settings should have Options property"); + } + + [Test] + public void TestBindCoreMethod_WithUriParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "redirectUri", + InputPrimitiveType.Url, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("Uri.TryCreate"), "BindCore should use Uri.TryCreate for Uri parameter binding"); + Assert.IsTrue(bodyString.Contains("UriKind.Absolute"), "BindCore should use UriKind.Absolute"); + Assert.IsTrue(bodyString.Contains("RedirectUri"), "BindCore should assign to RedirectUri property"); + } + + [Test] + public void TestBindCoreMethod_WithStringListParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "allowedTenants", + InputFactory.Array(InputPrimitiveType.String), + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("GetSection"), "BindCore should use GetSection for list parameter binding"); + Assert.IsTrue(bodyString.Contains("GetChildren"), "BindCore should use GetChildren for list parameter binding"); + Assert.IsTrue(bodyString.Contains("Where"), "BindCore should use Where to filter null values"); + Assert.IsTrue(bodyString.Contains("is not null"), "BindCore should use 'is not null' pattern in Where filter"); + Assert.IsTrue(bodyString.Contains("Select"), "BindCore should use Select to extract values"); + Assert.IsTrue(bodyString.Contains("ToList"), "BindCore should use ToList to materialize the list"); + } + + [Test] + public void TestBindCoreMethod_WithEnumParam() + { + var enumType = InputFactory.StringEnum( + "AppAudience", + [("Public", "public"), ("Private", "private")], + isExtensible: true); + + MockHelpers.LoadMockGenerator(inputEnums: () => [enumType]); + + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "audience", + enumType, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("is string"), "BindCore should use 'is string' pattern for enum parameter binding"); + Assert.IsTrue(bodyString.Contains("new"), "BindCore should create new enum instance"); + Assert.IsTrue(bodyString.Contains("Audience"), "BindCore should assign to Audience property"); + } + + [Test] + public void TestBindCoreMethod_WithFixedEnumParam() + { + var enumType = InputFactory.StringEnum( + "ClientMode", + [("Default", "default"), ("MultiClient", "multi-client")], + isExtensible: false); + + MockHelpers.LoadMockGenerator(inputEnums: () => [enumType]); + + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "mode", + enumType, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("Enum.TryParse"), "BindCore should use Enum.TryParse for fixed enum parameter binding"); + Assert.IsTrue(bodyString.Contains("Mode"), "BindCore should assign to Mode property"); + Assert.IsFalse(bodyString.Contains("new ClientMode"), "BindCore should NOT use new for fixed enum binding"); + } + + [Test] + public void TestBindCoreMethod_WithTimeSpanParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "networkTimeout", + InputPrimitiveType.PlainTime, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("TimeSpan.TryParse"), "BindCore should use TimeSpan.TryParse for TimeSpan parameter binding"); + Assert.IsTrue(bodyString.Contains("NetworkTimeout"), "BindCore should assign to NetworkTimeout property"); + } + + [Test] + public void TestBindCoreMethod_WithComplexObjectParam() + { + var complexModel = InputFactory.Model( + "CustomOptions", + properties: new[] + { + InputFactory.Property("setting1", InputPrimitiveType.String, isRequired: true, wireName: "setting1"), + InputFactory.Property("setting2", InputPrimitiveType.Int32, isRequired: false, wireName: "setting2") + }); + + MockHelpers.LoadMockGenerator(inputModels: () => [complexModel]); + + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "customOptions", + complexModel, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("GetSection"), "BindCore should use GetSection for complex object binding"); + Assert.IsTrue(bodyString.Contains("Exists"), "BindCore should check Exists for complex object binding"); + Assert.IsTrue(bodyString.Contains("CustomOptions") && bodyString.Contains("new"), "BindCore should create new CustomOptions instance for complex object binding"); + } + + [Test] + public void TestBindCoreMethod_WithLongParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "maxSize", + InputPrimitiveType.Int64, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("long.TryParse"), "BindCore should use long.TryParse for long parameter binding"); + Assert.IsTrue(bodyString.Contains("MaxSize"), "BindCore should assign to MaxSize property"); + } + + [Test] + public void TestBindCoreMethod_WithFloatParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "temperature", + InputPrimitiveType.Float32, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("float.TryParse"), "BindCore should use float.TryParse for float parameter binding"); + Assert.IsTrue(bodyString.Contains("Temperature"), "BindCore should assign to Temperature property"); + } + + [Test] + public void TestBindCoreMethod_WithDoubleParam() + { + var inputParameters = new InputParameter[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true), + InputFactory.MethodParameter( + "precision", + InputPrimitiveType.Float64, + isRequired: true, + scope: InputParameterScope.Client) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("double.TryParse"), "BindCore should use double.TryParse for double parameter binding"); + Assert.IsTrue(bodyString.Contains("Precision"), "BindCore should assign to Precision property"); + } + + [Test] + public void TestExperimentalAttribute() + { + var client = InputFactory.Client("TestClient"); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + var attributes = settingsProvider!.Attributes; + Assert.IsNotNull(attributes); + Assert.IsTrue(attributes.Any(), "Settings should have an Experimental attribute"); + } + + [Test] + public void TestNamespace() + { + var client = InputFactory.Client("TestClient"); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + Assert.AreEqual(clientProvider.Type.Namespace, settingsProvider!.Type.Namespace); + } + + // Sub-client settings tests + + [Test] + public void TestSubClient_IndividuallyInitialized_HasSettings() + { + var endpointParam = InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true); + var parentClient = InputFactory.Client("ParentClient", parameters: [endpointParam]); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + parameters: [endpointParam], + initializedBy: InputClientInitializedBy.Individually); + + MockHelpers.LoadMockGenerator( + auth: () => new(new InputApiKeyAuth("mock", null), null), + clients: () => [parentClient]); + + var clientProvider = new ClientProvider(subClient); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider, "Individually-initialized sub-client should have ClientSettings"); + Assert.AreEqual("SubClientSettings", settingsProvider!.Name); + } + + [Test] + public void TestSubClient_ParentOnly_NoSettings() + { + var parentClient = InputFactory.Client("ParentClient"); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + initializedBy: InputClientInitializedBy.Parent); + + MockHelpers.LoadMockGenerator( + auth: () => new(new InputApiKeyAuth("mock", null), null), + clients: () => [parentClient]); + + var clientProvider = new ClientProvider(subClient); + + Assert.IsNull(clientProvider.ClientSettings, "Parent-only sub-client should not have ClientSettings"); + } + + [Test] + public void TestSubClient_IndividuallyInitialized_HasEndpointProperty() + { + var endpointParam = InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true); + var parentClient = InputFactory.Client("ParentClient", parameters: [endpointParam]); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + parameters: [endpointParam], + initializedBy: InputClientInitializedBy.Individually); + + MockHelpers.LoadMockGenerator( + auth: () => new(new InputApiKeyAuth("mock", null), null), + clients: () => [parentClient]); + + var clientProvider = new ClientProvider(subClient); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + var endpointProp = settingsProvider!.Properties.FirstOrDefault( + p => p.Name == "Endpoint" && p.Type.Equals(new CSharpType(typeof(string), isNullable: true))); + Assert.IsNotNull(endpointProp, "Sub-client settings should have an Endpoint property"); + } + + [Test] + public void TestSubClient_IndividuallyInitialized_HasOptionsFromRootClient() + { + var endpointParam = InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true); + var parentClient = InputFactory.Client("ParentClient", parameters: [endpointParam]); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + parameters: [endpointParam], + initializedBy: InputClientInitializedBy.Individually); + + MockHelpers.LoadMockGenerator( + auth: () => new(new InputApiKeyAuth("mock", null), null), + clients: () => [parentClient]); + + var clientProvider = new ClientProvider(subClient); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + var optionsProp = settingsProvider!.Properties.FirstOrDefault(p => p.Name == "Options"); + Assert.IsNotNull(optionsProp, "Sub-client settings should have Options property from root client"); + + // The Options type should be the parent's ClientOptions type + var parentProvider = new ClientProvider(parentClient); + Assert.IsNotNull(parentProvider.ClientOptions); + Assert.AreEqual( + parentProvider.ClientOptions!.Type.WithNullable(true), + optionsProp!.Type, + "Sub-client settings Options type should match root client's ClientOptions type"); + } + + [Test] + public void TestSubClient_IndividuallyInitialized_BindCoreHasEndpointAndOptions() + { + var endpointParam = InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true); + var parentClient = InputFactory.Client("ParentClient", parameters: [endpointParam]); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + parameters: [endpointParam], + initializedBy: InputClientInitializedBy.Individually); + + MockHelpers.LoadMockGenerator( + auth: () => new(new InputApiKeyAuth("mock", null), null), + clients: () => [parentClient]); + + var clientProvider = new ClientProvider(subClient); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod, "Sub-client settings should have BindCore method"); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("IsNullOrEmpty"), "BindCore should bind the Endpoint via string.IsNullOrEmpty for string endpoint"); + Assert.IsTrue(bodyString.Contains("GetSection") && bodyString.Contains("Options"), + "BindCore should bind the Options section"); + } + + [Test] + public void TestSubClient_IndividuallyInitialized_SettingsBaseType() + { + var endpointParam = InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + defaultValue: InputFactory.Constant.String("https://default.endpoint.io"), + scope: InputParameterScope.Client, + isEndpoint: true); + var parentClient = InputFactory.Client("ParentClient", parameters: [endpointParam]); + var subClient = InputFactory.Client( + "SubClient", + parent: parentClient, + parameters: [endpointParam], + initializedBy: InputClientInitializedBy.Individually); + + MockHelpers.LoadMockGenerator( + auth: () => new(new InputApiKeyAuth("mock", null), null), + clients: () => [parentClient]); + + var clientProvider = new ClientProvider(subClient); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + Assert.AreEqual(ClientSettingsProvider.ClientSettingsType, settingsProvider!.Type.BaseType, + "Sub-client settings should inherit from ClientSettings"); + } + + [Test] + public void TestGeneratedSettings_WithNamedStringEndpoint() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "fullyQualifiedNamespace", + InputPrimitiveType.String, + scope: InputParameterScope.Client, + isEndpoint: true, + serverUrlTemplate: "https://{fullyQualifiedNamespace}") + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + var settingsProvider = clientProvider.ClientSettings; + + Assert.IsNotNull(settingsProvider); + + // Validate FullyQualifiedNamespace property is string? (not Uri?) + var properties = settingsProvider!.Properties; + var endpointProp = properties.FirstOrDefault(p => p.Name == "FullyQualifiedNamespace" && p.Type.Equals(new CSharpType(typeof(string), isNullable: true))); + Assert.IsNotNull(endpointProp, "Settings should have a FullyQualifiedNamespace property of type string?"); + + // Validate full generated output + var writer = new TypeProviderWriter(settingsProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public void TestSettingsConstructor_WithStringEndpoint() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.String, + scope: InputParameterScope.Client, + isEndpoint: true, + serverUrlTemplate: "https://{endpoint}") + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var settingsConstructor = clientProvider.Constructors.FirstOrDefault(IsSettingsConstructor); + Assert.IsNotNull(settingsConstructor, "Expected a settings constructor for string endpoint"); + + // Validate the initializer references the settings endpoint property + var initializer = settingsConstructor!.Signature.Initializer; + Assert.IsNotNull(initializer); + Assert.IsFalse(initializer!.IsBase, "Settings constructor should use this() initializer"); + + // The initializer should have arguments for auth policy, endpoint, and options + Assert.IsTrue(initializer.Arguments.Count >= 3, + "Settings constructor initializer should have at least 3 arguments (auth, endpoint, options)"); + + // Validate the endpoint argument references settings?.Endpoint + var endpointArg = initializer.Arguments[1].ToDisplayString(); + Assert.IsTrue(endpointArg.Contains("Endpoint"), + $"Endpoint argument should reference Endpoint property, got: {endpointArg}"); + + // Validate full generated client output + var writer = new TypeProviderWriter(clientProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public void TestSettingsConstructor_WithUrlEndpoint() + { + var inputParameters = new[] + { + InputFactory.EndpointParameter( + "endpoint", + InputPrimitiveType.Url, + scope: InputParameterScope.Client, + isEndpoint: true) + }; + var client = InputFactory.Client("TestClient", parameters: inputParameters); + var clientProvider = new ClientProvider(client); + + var settingsConstructor = clientProvider.Constructors.FirstOrDefault(IsSettingsConstructor); + Assert.IsNotNull(settingsConstructor, "Expected a settings constructor for URL endpoint"); + + // Validate the initializer references the settings endpoint property + var initializer = settingsConstructor!.Signature.Initializer; + Assert.IsNotNull(initializer); + Assert.IsFalse(initializer!.IsBase, "Settings constructor should use this() initializer"); + + // The initializer should have arguments for auth policy, endpoint, and options + Assert.IsTrue(initializer.Arguments.Count >= 3, + "Settings constructor initializer should have at least 3 arguments (auth, endpoint, options)"); + + // Validate the endpoint argument references settings?.Endpoint + var endpointArg = initializer.Arguments[1].ToDisplayString(); + Assert.IsTrue(endpointArg.Contains("Endpoint"), + $"Endpoint argument should reference Endpoint property, got: {endpointArg}"); + + // Validate full generated client output + var writer = new TypeProviderWriter(clientProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + + [Test] + public async Task TestBindCoreMethod_WithCustomStructParam() + { + // A custom struct with a string constructor should use string binding + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", + BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var typeProvider = CodeModelGenerator.Instance.SourceInputModel + .FindForTypeInCustomization("SampleNamespace", "CustomAudience"); + Assert.IsNotNull(typeProvider, "CustomAudience should be found in custom code"); + + var body = new List(); + var sectionParam = new ParameterProvider( + "section", + $"The configuration section.", + ClientSettingsProvider.IConfigurationSectionType); + + ClientSettingsProvider.AppendBindingForProperty(body, sectionParam, "Audience", "audience", typeProvider!.Type); + + var bodyString = string.Join("\n", body.Select(s => s.ToDisplayString())); + Assert.IsTrue(bodyString.Contains("is string"), + "Should use 'is string' pattern for custom struct with string constructor"); + Assert.IsFalse(bodyString.Contains("GetSection"), + "Should NOT use GetSection for custom struct with string constructor"); + } + + [Test] + public async Task TestBindCoreMethod_WithCustomIntStructParam() + { + // A custom struct with an int constructor should use int.TryParse binding + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", + BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var typeProvider = CodeModelGenerator.Instance.SourceInputModel + .FindForTypeInCustomization("SampleNamespace", "CustomPriority"); + Assert.IsNotNull(typeProvider, "CustomPriority should be found in custom code"); + + var body = new List(); + var sectionParam = new ParameterProvider( + "section", + $"The configuration section.", + ClientSettingsProvider.IConfigurationSectionType); + + ClientSettingsProvider.AppendBindingForProperty(body, sectionParam, "Priority", "priority", typeProvider!.Type); + + var bodyString = string.Join("\n", body.Select(s => s.ToDisplayString())); + Assert.IsTrue(bodyString.Contains("int.TryParse"), + "Should use int.TryParse for custom struct with int constructor"); + Assert.IsFalse(bodyString.Contains("GetSection"), + "Should NOT use GetSection for custom struct with int constructor"); + } + + [Test] + public async Task TestBindCoreMethod_WithCustomStructParam_FallsBackToComplexObject() + { + // A custom struct with no single-parameter framework-type constructor + // should fall back to complex object binding + var singletonField = typeof(ClientOptionsProvider).GetField("_singletonInstance", + BindingFlags.Static | BindingFlags.NonPublic); + singletonField?.SetValue(null, null); + + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var typeProvider = CodeModelGenerator.Instance.SourceInputModel + .FindForTypeInCustomization("SampleNamespace", "CustomComplex"); + Assert.IsNotNull(typeProvider, "CustomComplex should be found in custom code"); + + var body = new List(); + var sectionParam = new ParameterProvider( + "section", + $"The configuration section.", + ClientSettingsProvider.IConfigurationSectionType); + + ClientSettingsProvider.AppendBindingForProperty(body, sectionParam, "Complex", "complex", typeProvider!.Type); + + var bodyString = string.Join("\n", body.Select(s => s.ToDisplayString())); + Assert.IsTrue(bodyString.Contains("GetSection"), + "Should fall back to GetSection for struct with no single-parameter framework-type constructor"); + } + + private static bool IsSettingsConstructor(ConstructorProvider c) => + c.Signature?.Initializer != null && + c.Signature?.Modifiers == MethodSignatureModifiers.Public && + c.Signature.Parameters.Any(p => p.Name == "settings"); + + [Test] + public async Task TestProperties_IncludesCustomConstructorParameters() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestClient", clientNamespace: "SampleNamespace"); + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + Assert.IsNotNull(clientProvider); + Assert.IsNotNull(clientProvider!.CustomCodeView, + "CustomCodeView should be available from the compilation"); + + var settings = clientProvider.ClientSettings; + Assert.IsNotNull(settings); + + var connectionStringProp = settings!.Properties + .FirstOrDefault(p => p.Name == "ConnectionString"); + Assert.IsNotNull(connectionStringProp, + "Settings should include 'ConnectionString' property from custom constructor parameter"); + } + + [Test] + public async Task TestBindCoreMethod_BindsCustomConstructorParameters() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestClient", clientNamespace: "SampleNamespace"); + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + Assert.IsNotNull(clientProvider); + + var settings = clientProvider!.ClientSettings; + Assert.IsNotNull(settings); + + var bindCoreMethod = settings!.Methods + .FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsTrue(bodyString.Contains("ConnectionString"), + "BindCore should bind the custom constructor parameter 'ConnectionString' from configuration"); + } + + [Test] + public async Task TestSettingsType_DoesNotContainSelfReferentialSettingsProperty() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestClient", clientNamespace: "SampleNamespace"); + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + Assert.IsNotNull(clientProvider); + + var settingsProvider = clientProvider!.ClientSettings; + Assert.IsNotNull(settingsProvider); + + var settingsProperty = settingsProvider!.Properties.FirstOrDefault(p => p.Name == "Settings"); + Assert.IsNull(settingsProperty, + "Settings type should not contain a self-referential 'Settings' property"); + } + + [Test] + public async Task TestBindCoreMethod_DoesNotBindSettingsParameter() + { + await MockHelpers.LoadMockGeneratorAsync( + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var client = InputFactory.Client("TestClient", clientNamespace: "SampleNamespace"); + var clientProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(client); + Assert.IsNotNull(clientProvider); + + var settingsProvider = clientProvider!.ClientSettings; + Assert.IsNotNull(settingsProvider); + + var bindCoreMethod = settingsProvider!.Methods.FirstOrDefault(m => m.Signature.Name == "BindCore"); + Assert.IsNotNull(bindCoreMethod); + + var bodyString = bindCoreMethod!.BodyStatements!.ToDisplayString(); + Assert.IsFalse(bodyString.Contains("GetSection(\"Settings\")"), + "BindCore should not bind a self-referential Settings section"); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/CollectionResultDefinitionTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/CollectionResultDefinitionTests.cs index b9957e4c6e9..cd8683227d4 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/CollectionResultDefinitionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/CollectionResultDefinitionTests.cs @@ -165,9 +165,9 @@ public void TestEmptyStringHandlingForStringContinuationToken() var writer = new TypeProviderWriter(collectionResultDefinition!); var file = writer.Write(); - + // Verify the generated code includes empty string check - Assert.IsTrue(file.Content.Contains("string.IsNullOrEmpty"), + Assert.IsTrue(file.Content.Contains("string.IsNullOrEmpty"), "Generated code should check for empty strings in continuation tokens"); } @@ -199,12 +199,87 @@ public void TestEmptyStringHandlingForUriNextLink() var writer = new TypeProviderWriter(collectionResultDefinition!); var file = writer.Write(); - + // Verify the generated code handles URI types correctly (null check is sufficient for Uri type) - Assert.IsTrue(file.Content.Contains("if ((nextPageUri == null))"), + Assert.IsTrue(file.Content.Contains("if ((nextPageUri == null))"), "Generated code should check for null URI"); } + [Test] + public void TestCollectionResultNamesDoNotCollideWhenOperationsAreRenamed() + { + // Two paging operations "list" and "listAll" both get renamed to "GetAll" by CleanOperationNames. + // The CollectionResult names should use OriginalName to avoid collision. + var thingModel = InputFactory.Model("thing", properties: + [ + InputFactory.Property("name", InputPrimitiveType.String, isRequired: true), + ]); + var thingsProperty = InputFactory.Property("things", InputFactory.Array(thingModel)); + var nextProperty = InputFactory.Property("next", InputPrimitiveType.Url); + var pageModel = InputFactory.Model("page", properties: [thingsProperty, nextProperty]); + var response = InputFactory.OperationResponse([200], pageModel); + + var pagingMetadata = InputFactory.NextLinkPagingMetadata(["things"], ["next"], InputResponseLocation.Body); + + // "list" will be renamed to "GetAll", "listAll" will also be renamed to "GetAll" + var listOperation = InputFactory.Operation("list", responses: [response]); + var listAllOperation = InputFactory.Operation("listAll", responses: [response]); + + var listServiceMethod = InputFactory.PagingServiceMethod("list", listOperation, pagingMetadata: pagingMetadata); + var listAllServiceMethod = InputFactory.PagingServiceMethod("listAll", listAllOperation, pagingMetadata: pagingMetadata); + + var client = InputFactory.Client("FooClient", methods: [listServiceMethod, listAllServiceMethod]); + + MockHelpers.LoadMockGenerator(inputModels: () => [thingModel], clients: () => [client]); + + var collectionResults = ScmCodeModelGenerator.Instance.OutputLibrary.TypeProviders + .Where(t => t is CollectionResultDefinition) + .ToList(); + + // Should have 8 CollectionResult types (2 ops × 2 sync/async × 2 typed/untyped) and they should all have unique names + Assert.AreEqual(8, collectionResults.Count, + $"Expected 8 CollectionResult types but found {collectionResults.Count}"); + var collectionResultNames = collectionResults.Select(t => t.Name).ToList(); + Assert.AreEqual(collectionResultNames.Distinct().Count(), collectionResultNames.Count, + $"CollectionResult names should be unique but found duplicates: {string.Join(", ", collectionResultNames)}"); + + // Both should use the original names for disambiguation + Assert.IsTrue(collectionResultNames.Any(n => n == "FooClientListCollectionResult"), + $"Expected 'FooClientListCollectionResult' in [{string.Join(", ", collectionResultNames)}]"); + Assert.IsTrue(collectionResultNames.Any(n => n == "FooClientListAllCollectionResult"), + $"Expected 'FooClientListAllCollectionResult' in [{string.Join(", ", collectionResultNames)}]"); + } + + [Test] + public void TestCollectionResultNameUsesCurrentNameWhenNoCollision() + { + // A single paging operation should use the current (cleaned) name, not the original name. + var thingModel = InputFactory.Model("thing", properties: + [ + InputFactory.Property("name", InputPrimitiveType.String, isRequired: true), + ]); + var thingsProperty = InputFactory.Property("things", InputFactory.Array(thingModel)); + var nextProperty = InputFactory.Property("next", InputPrimitiveType.Url); + var pageModel = InputFactory.Model("page", properties: [thingsProperty, nextProperty]); + var response = InputFactory.OperationResponse([200], pageModel); + + var pagingMetadata = InputFactory.NextLinkPagingMetadata(["things"], ["next"], InputResponseLocation.Body); + + // "listAll" gets renamed to "GetAll" by CleanOperationNames, no collision + var listAllOperation = InputFactory.Operation("listAll", responses: [response]); + var listAllServiceMethod = InputFactory.PagingServiceMethod("listAll", listAllOperation, pagingMetadata: pagingMetadata); + + var client = InputFactory.Client("FooClient", methods: [listAllServiceMethod]); + + MockHelpers.LoadMockGenerator(inputModels: () => [thingModel], clients: () => [client]); + + // When there's no collision, the cleaned name "GetAll" should be used + var collectionResultDefinition = ScmCodeModelGenerator.Instance.OutputLibrary.TypeProviders.FirstOrDefault( + t => t is CollectionResultDefinition && t.Name == "FooClientGetAllCollectionResult") as CollectionResultDefinition; + Assert.IsNotNull(collectionResultDefinition, + "CollectionResult should use cleaned name 'GetAll' when there's no collision"); + } + internal static void CreatePagingOperation(InputResponseLocation responseLocation, bool isNested = false) { var inputModel = InputFactory.Model("cat", properties: diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/ListPageableTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/ListPageableTests.cs index 2aaddae9e52..56b0b87fe10 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/ListPageableTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/CollectionResultDefinitions/ListPageableTests.cs @@ -63,7 +63,7 @@ public void TopParameterRenamedToMaxCountInPagingOperation() .OfType().ToList(); Assert.IsTrue(restClientProviders.Count > 0, "RestClientProvider should be generated"); - + var parameterNames = restClientProviders .SelectMany(p => p.Methods) .SelectMany(m => m.Signature.Parameters) @@ -134,7 +134,7 @@ public async Task TopParameterPreservedWhenExistsInLastContractView() Assert.AreEqual("top", topParam!.Name, "Parameter name should be 'top' (from LastContractView), not 'maxCount' (conversion should be prevented)"); } - + [Test] public void NoNextLinkOrContinuationTokenOfT() { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/BinaryContentHelperDefinitionTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/BinaryContentHelperDefinitionTests.cs index 3e9fbe0bbfa..715bdb21e5b 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/BinaryContentHelperDefinitionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/BinaryContentHelperDefinitionTests.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/MultiPartFormDataBinaryContentDefinitionTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/MultiPartFormDataBinaryContentDefinitionTests.cs index 19015ea0588..f7481fa91b6 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/MultiPartFormDataBinaryContentDefinitionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/MultiPartFormDataBinaryContentDefinitionTests.cs @@ -1,11 +1,11 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using System.Linq; using Microsoft.TypeSpec.Generator.ClientModel.Providers; using Microsoft.TypeSpec.Generator.Tests.Common; -using NUnit.Framework; using Moq; +using NUnit.Framework; namespace Microsoft.TypeSpec.Generator.ClientModel.Tests.Providers.Definitions { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/PipelineRequestHeadersExtensionsDefinitionTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/PipelineRequestHeadersExtensionsDefinitionTests.cs index 241dece98eb..66b026ff2d4 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/PipelineRequestHeadersExtensionsDefinitionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/Definitions/PipelineRequestHeadersExtensionsDefinitionTests.cs @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using System.Collections.Generic; using System.ClientModel.Primitives; +using System.Collections.Generic; using System.Linq; using Microsoft.TypeSpec.Generator.ClientModel.Providers; using Microsoft.TypeSpec.Generator.Primitives; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/EnumProvider/EnumProviderSerializationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/EnumProvider/EnumProviderSerializationTests.cs index d4355c3920d..1ba06a081f6 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/EnumProvider/EnumProviderSerializationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/EnumProvider/EnumProviderSerializationTests.cs @@ -25,17 +25,17 @@ private static object[] ValidateTypes(bool isExtensible) { var intType = InputFactory.Int32Enum( "mockInputEnum", - [ ("One", 1), ("Two", 2)], + [("One", 1), ("Two", 2)], isExtensible: isExtensible); var floatType = InputFactory.Float32Enum( "mockInputEnum", - [ ("One", 1f), ("Two", 2f)], + [("One", 1f), ("Two", 2f)], isExtensible: isExtensible); var stringType = InputFactory.StringEnum( "mockInputEnum", - [ ("One", "1"), ("Two", "2")], + [("One", "1"), ("Two", "2")], isExtensible: isExtensible); return [intType, floatType, stringType]; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DiscriminatorTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DiscriminatorTests.cs index e5945ad27b1..e09cb635a1f 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DiscriminatorTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DiscriminatorTests.cs @@ -139,7 +139,7 @@ public void UnknownVariantDeserializeShouldUseBaseProperties() var serialization = unknownModel!.SerializationProviders.FirstOrDefault(); Assert.IsNotNull(serialization); var deserializeMethod = serialization!.Methods.FirstOrDefault(m => m.Signature.Name == "DeserializeUnknownPet"); - foreach(var property in _baseModel.Properties) + foreach (var property in _baseModel.Properties) { Assert.IsNotNull( deserializeMethod!.BodyStatements!.ToDisplayString().Contains($"if (property.NameEquals(\"{property.Name}\"u8))"), diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DynamicModelSerializationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DynamicModelSerializationTests.cs index a06cbeb18ea..3613629c0be 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DynamicModelSerializationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/DynamicModelSerializationTests.cs @@ -1318,7 +1318,7 @@ public void DerivedModelWithoutOwnDynamicPropertiesDoesNotGeneratePropagators() Assert.IsNotNull(model); Assert.IsTrue(model!.IsDynamicModel, "Derived model should be marked as dynamic because base is dynamic"); Assert.IsFalse(model.HasDynamicProperties, "Derived model should not have dynamic properties when neither it nor base have dynamic property types"); - + var serialization = model.SerializationProviders.SingleOrDefault(); Assert.IsNotNull(serialization); @@ -1367,12 +1367,12 @@ public void DerivedModelWithoutDynamicPropertiesButBaseHasDynamicProperties() ]); MockHelpers.LoadMockGenerator(inputModels: () => [baseModel, derivedModel, baseDynamicModel]); - + // Validate base model has dynamic properties and propagators var baseModelProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateModel(baseModel) as ClientModel.Providers.ScmModelProvider; Assert.IsNotNull(baseModelProvider); Assert.IsTrue(baseModelProvider!.HasDynamicProperties, "Base model should have dynamic properties"); - + var baseSerialization = baseModelProvider.SerializationProviders.SingleOrDefault(); Assert.IsNotNull(baseSerialization); var baseMethods = baseSerialization!.Methods; @@ -1384,7 +1384,7 @@ public void DerivedModelWithoutDynamicPropertiesButBaseHasDynamicProperties() Assert.IsNotNull(derivedModelProvider); Assert.IsTrue(derivedModelProvider!.IsDynamicModel, "Derived model should be marked as dynamic because base is dynamic"); Assert.IsFalse(derivedModelProvider.HasDynamicProperties, "Derived model should not have dynamic properties when it has no dynamic property types of its own"); - + var derivedSerialization = derivedModelProvider.SerializationProviders.SingleOrDefault(); Assert.IsNotNull(derivedSerialization); @@ -1423,7 +1423,7 @@ public void WriteDynamicDerivedModelWithNonDiscriminatedBase() ]); MockHelpers.LoadMockGenerator(inputModels: () => [baseModel, dynamicDerivedModel]); - + // Verify base model is NOT dynamic var baseModelProvider = ScmCodeModelGenerator.Instance.TypeFactory.CreateModel(baseModel) as ClientModel.Providers.ScmModelProvider; Assert.IsNotNull(baseModelProvider); @@ -1479,7 +1479,7 @@ public void DeserializeDynamicDerivedModelWithNonDiscriminatedBase() Assert.IsTrue(derivedModelProvider!.IsDynamicModel, "Derived model should be dynamic"); Assert.IsTrue(derivedModelProvider.Constructors.Count > 0); -var serialization = derivedModelProvider.SerializationProviders.SingleOrDefault(); + var serialization = derivedModelProvider.SerializationProviders.SingleOrDefault(); Assert.IsNotNull(serialization); var writer = new TypeProviderWriter(new FilteredMethodsTypeProvider( diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/ModelCustomizationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/ModelCustomizationTests.cs index fcff349c3f3..1ed43b979a1 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/ModelCustomizationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/ModelCustomizationTests.cs @@ -367,13 +367,13 @@ public async Task CustomizedExplicitOperatorNotGenerated() var customCodeView = modelProvider.CustomCodeView; Assert.IsNotNull(customCodeView, "CustomCodeView should be detected"); var customMethods = customCodeView!.Methods; - var customOperator = customMethods.FirstOrDefault(m => + var customOperator = customMethods.FirstOrDefault(m => m.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Explicit) && m.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Operator)); Assert.IsNotNull(customOperator, "Custom explicit operator should be detected in CustomCodeView"); // Verify that the custom explicit operator is recognized and not generated - var explicitOperator = serializationProvider!.Methods.FirstOrDefault(m => + var explicitOperator = serializationProvider!.Methods.FirstOrDefault(m => m.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Explicit) && m.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Operator)); Assert.IsNull(explicitOperator, "Custom explicit operator should not be generated"); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/MrwSerializationTypeDefinitionTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/MrwSerializationTypeDefinitionTests.cs index 8aab43af3e5..4ce3df526ad 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/MrwSerializationTypeDefinitionTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/MrwSerializationTypeDefinitionTests.cs @@ -29,7 +29,7 @@ internal static (ModelProvider Model, MrwSerializationTypeDefinition Serializati var generator = MockHelpers.LoadMockGenerator( inputModels: () => [inputModel], createSerializationsCore: (inputType, typeProvider) => - inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)]: []); + inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)] : []); if (isRootInput) { generator.Object.TypeFactory.RootInputModels.Add(inputModel); @@ -1145,7 +1145,7 @@ public void TestGetDeserializationMethodInvocationForType_InDeserializationMetho var generator = MockHelpers.LoadMockGenerator( inputModels: () => [inputModel, innerModel], createSerializationsCore: (inputType, typeProvider) => - inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)]: []); + inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)] : []); generator.Object.TypeFactory.RootInputModels.Add(inputModel); generator.Object.TypeFactory.RootOutputModels.Add(inputModel); @@ -1183,7 +1183,7 @@ public void TestGetDeserializationMethodInvocationForType_CollectionOfModels() var generator = MockHelpers.LoadMockGenerator( inputModels: () => [inputModel, innerModel], createSerializationsCore: (inputType, typeProvider) => - inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)]: []); + inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)] : []); generator.Object.TypeFactory.RootInputModels.Add(inputModel); generator.Object.TypeFactory.RootOutputModels.Add(inputModel); @@ -1220,7 +1220,7 @@ public void TestGetDeserializationMethodInvocationForType_DictionaryOfModels() var generator = MockHelpers.LoadMockGenerator( inputModels: () => [inputModel, valueModel], createSerializationsCore: (inputType, typeProvider) => - inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)]: []); + inputType is InputModelType modelType ? [new MrwSerializationTypeDefinition(modelType, (typeProvider as ModelProvider)!)] : []); generator.Object.TypeFactory.RootInputModels.Add(inputModel); generator.Object.TypeFactory.RootOutputModels.Add(inputModel); @@ -1250,9 +1250,9 @@ public void TestSerializationTypeNameMatchesModelProviderName() var (model, serialization) = CreateModelAndSerialization(inputModel); // The serialization type name should match the model provider name - Assert.AreEqual(model.Name, serialization.Name, + Assert.AreEqual(model.Name, serialization.Name, "Serialization type name should match ModelProvider name"); - + // The deserialization method should also use the model provider name var deserializationMethod = serialization.BuildDeserializationMethod(); Assert.IsNotNull(deserializationMethod); @@ -1269,29 +1269,29 @@ public void TestArrayEncodingSerializationStatement(string encoding, string expe Enum.TryParse(encoding, ignoreCase: true, out var arrayEncoding); var arrayType = new InputArrayType("TestArray", "TypeSpec.Array", InputPrimitiveType.String); var arrayProperty = new InputModelProperty( - "TestArray", + "TestArray", "Test array property summary", - "Test array property", - arrayType, - true, - false, - null, - false, - "testArray", - false, - false, - null, + "Test array property", + arrayType, + true, + false, + null, + false, + "testArray", + false, + false, + null, new(json: new("testArray")), arrayEncoding); - + var properties = new List { arrayProperty }; var inputModel = new InputModelType("TestModel", "TestNamespace", "TestModel", "public", null, null, "Test model.", InputModelTypeUsage.Input, properties, null, Array.Empty(), null, null, new Dictionary(), null, false, new(), false); var (_, serialization) = CreateModelAndSerialization(inputModel); var writeMethod = serialization.BuildJsonModelWriteCoreMethod(); var methodBody = writeMethod.BodyStatements!.ToDisplayString(); - - Assert.IsTrue(methodBody.Contains($"string.Join(\"{expectedDelimiter}\", TestArray)"), + + Assert.IsTrue(methodBody.Contains($"string.Join(\"{expectedDelimiter}\", TestArray)"), $"Expected serialization to use string.Join with delimiter '{expectedDelimiter}', but got: {methodBody}"); } @@ -1304,21 +1304,21 @@ public void TestArrayEncodingDeserializationStatement(string encoding, string ex Enum.TryParse(encoding, ignoreCase: true, out var arrayEncoding); var arrayType = new InputArrayType("TestArray", "TypeSpec.Array", InputPrimitiveType.String); var arrayProperty = new InputModelProperty( - "TestArray", + "TestArray", "Test array property summary", - "Test array property", - arrayType, - true, - false, - null, - false, - "testArray", - false, - false, - null, + "Test array property", + arrayType, + true, + false, + null, + false, + "testArray", + false, + false, + null, new(json: new("testArray")), arrayEncoding); - + var properties = new List { arrayProperty }; var inputModel = new InputModelType("TestModel", "TestNamespace", "TestModel", "public", null, null, "Test model.", InputModelTypeUsage.Input, properties, null, Array.Empty(), null, null, new Dictionary(), null, false, new(), false); @@ -1464,5 +1464,6 @@ public void TestDeserializationOfNonBase64ByteArrayPropertyUsesGetRawText() Assert.IsFalse(methodBody.Contains("EnumerateArray"), $"byte[] property should not use array enumeration. Actual:\n{methodBody}"); } + } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/SerializationCustomizationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/SerializationCustomizationTests.cs index bc61fe5f334..4c28452d689 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/SerializationCustomizationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/SerializationCustomizationTests.cs @@ -477,5 +477,29 @@ public async Task CanChangePropertyNameAndRedefineOriginal() var file = writer.Write(); Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); } + + [Test] + public async Task CanPreserveArrayEncodingForCustomizedProperty() + { + var props = new[] + { + InputFactory.Property("Prop1", InputFactory.Array(InputPrimitiveType.String), encode: ArrayKnownEncoding.CommaDelimited) + }; + + var inputModel = InputFactory.Model("Model", properties: props, usage: InputModelTypeUsage.Json); + var mockGenerator = await MockHelpers.LoadMockGeneratorAsync( + inputModels: () => [inputModel], + compilation: async () => await Helpers.GetCompilationFromDirectoryAsync()); + + var modelProvider = mockGenerator.Object.OutputLibrary.TypeProviders.Single(t => t is ModelProvider); + var serializationProvider = modelProvider.SerializationProviders.Single(t => t is MrwSerializationTypeDefinition); + Assert.IsNotNull(serializationProvider); + + var writer = new TypeProviderWriter(new FilteredMethodsTypeProvider( + serializationProvider!, + name => name == "DeserializeModel" || name == "JsonModelWriteCore")); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/SerializationCustomizationTests/CanPreserveArrayEncodingForCustomizedProperty.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/SerializationCustomizationTests/CanPreserveArrayEncodingForCustomizedProperty.cs new file mode 100644 index 00000000000..2d18b87d28f --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/SerializationCustomizationTests/CanPreserveArrayEncodingForCustomizedProperty.cs @@ -0,0 +1,72 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; +using Sample.Models; + +namespace Sample +{ + public partial class Model + { + protected virtual void JsonModelWriteCore(global::System.Text.Json.Utf8JsonWriter writer, global::System.ClientModel.Primitives.ModelReaderWriterOptions options) + { + string format = (options.Format == "W") ? ((global::System.ClientModel.Primitives.IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if ((format != "J")) + { + throw new global::System.FormatException($"The model {nameof(global::Sample.Models.Model)} does not support writing '{format}' format."); + } + if (global::Sample.Optional.IsCollectionDefined(Prop2)) + { + writer.WritePropertyName("prop1"u8); + writer.WriteStringValue(string.Join(",", Prop2)); + } + if (((options.Format != "W") && (_additionalBinaryDataProperties != null))) + { + foreach (var item in _additionalBinaryDataProperties) + { + writer.WritePropertyName(item.Key); +#if NET6_0_OR_GREATER + writer.WriteRawValue(item.Value); +#else + using (global::System.Text.Json.JsonDocument document = global::System.Text.Json.JsonDocument.Parse(item.Value)) + { + global::System.Text.Json.JsonSerializer.Serialize(writer, document.RootElement); + } +#endif + } + } + } + + internal static global::Sample.Models.Model DeserializeModel(global::System.Text.Json.JsonElement element, global::System.ClientModel.Primitives.ModelReaderWriterOptions options) + { + if ((element.ValueKind == global::System.Text.Json.JsonValueKind.Null)) + { + return null; + } + global::System.Collections.Generic.IList prop2 = default; + global::System.Collections.Generic.IDictionary additionalBinaryDataProperties = new global::Sample.ChangeTrackingDictionary(); + foreach (var prop in element.EnumerateObject()) + { + if (prop.NameEquals("prop1"u8)) + { + if ((prop.Value.ValueKind == global::System.Text.Json.JsonValueKind.Null)) + { + continue; + } + string stringValue = prop.Value.GetString(); + prop2 = string.IsNullOrEmpty(stringValue) ? new global::System.Collections.Generic.List() : new global::System.Collections.Generic.List(stringValue.Split(',')); + continue; + } + if ((options.Format != "W")) + { + additionalBinaryDataProperties.Add(prop.Name, global::System.BinaryData.FromString(prop.Value.GetRawText())); + } + } + return new global::Sample.Models.Model((prop2 ?? new global::Sample.ChangeTrackingList()), additionalBinaryDataProperties); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/SerializationCustomizationTests/CanPreserveArrayEncodingForCustomizedProperty/Model.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/SerializationCustomizationTests/CanPreserveArrayEncodingForCustomizedProperty/Model.cs new file mode 100644 index 00000000000..23bc9276356 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/SerializationCustomizationTests/CanPreserveArrayEncodingForCustomizedProperty/Model.cs @@ -0,0 +1,13 @@ + +using SampleTypeSpec; +using System.Collections.Generic; +using Microsoft.TypeSpec.Generator.Customizations; + +namespace Sample.Models +{ + public partial class Model + { + [CodeGenMember("Prop1")] + public IList Prop2 { get; internal set; } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/XmlDeserializationTests/DeserializeXmlValueOverride_CustomTypeDeserialization.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/XmlDeserializationTests/DeserializeXmlValueOverride_CustomTypeDeserialization.cs new file mode 100644 index 00000000000..16d6c5bd4c0 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/XmlDeserializationTests/DeserializeXmlValueOverride_CustomTypeDeserialization.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Xml.Linq; +using Sample.Models; + +namespace Sample +{ + public partial class TestXmlModel + { + internal static global::Sample.Models.TestXmlModel DeserializeTestXmlModel(global::System.Xml.Linq.XElement element, global::System.ClientModel.Primitives.ModelReaderWriterOptions options) + { + if ((element == null)) + { + return null; + } + + string name = default; + global::System.Collections.Generic.IDictionary additionalBinaryDataProperties = new global::Sample.ChangeTrackingDictionary(); + + foreach (var child in element.Elements()) + { + string localName = child.Name.LocalName; + if ((localName == "Name")) + { + name = child.ToString(); + continue; + } + } + return new global::Sample.Models.TestXmlModel(name, additionalBinaryDataProperties); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/XmlSerializationTests/SerializeXmlValueOverride_CustomTypeSerialization.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/XmlSerializationTests/SerializeXmlValueOverride_CustomTypeSerialization.cs new file mode 100644 index 00000000000..40be7e5713d --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/XmlSerializationTests/SerializeXmlValueOverride_CustomTypeSerialization.cs @@ -0,0 +1,30 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Xml; +using Sample.Models; + +namespace Sample +{ + public partial class TestXmlModel + { + internal virtual void XmlModelWriteCore(global::System.Xml.XmlWriter writer, global::System.ClientModel.Primitives.ModelReaderWriterOptions options) + { + string format = (options.Format == "W") ? ((global::System.ClientModel.Primitives.IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if ((format != "X")) + { + throw new global::System.FormatException($"The model {nameof(global::Sample.Models.TestXmlModel)} does not support writing '{format}' format."); + } + + if (global::Sample.Optional.IsDefined(Name)) + { + writer.WriteStartElement("Name"); + writer.WriteValue(Name.ToString()); + writer.WriteEndElement(); + } + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlDeserializationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlDeserializationTests.cs index 90b7639a9f8..5402cfe4b86 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlDeserializationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlDeserializationTests.cs @@ -1,16 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System; using System.ClientModel.Primitives; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Xml.Linq; using Microsoft.TypeSpec.Generator.ClientModel.Providers; +using Microsoft.TypeSpec.Generator.Expressions; using Microsoft.TypeSpec.Generator.Input; using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; +using Microsoft.TypeSpec.Generator.Snippets; using Microsoft.TypeSpec.Generator.Tests.Common; +using Moq; using NUnit.Framework; namespace Microsoft.TypeSpec.Generator.ClientModel.Tests.Providers.MrwSerializationTypeDefinitions @@ -601,5 +605,82 @@ protected override MethodProvider[] BuildMethods() protected override FieldProvider[] BuildFields() => []; } + + [TestCase(typeof(int), SerializationFormat.Default, ExpectedResult = "((int)foo)")] + [TestCase(typeof(string), SerializationFormat.Default, ExpectedResult = "((string)foo)")] + [TestCase(typeof(bool), SerializationFormat.Default, ExpectedResult = "((bool)foo)")] + [TestCase(typeof(long), SerializationFormat.Default, ExpectedResult = "((long)foo)")] + [TestCase(typeof(float), SerializationFormat.Default, ExpectedResult = "((float)foo)")] + [TestCase(typeof(double), SerializationFormat.Default, ExpectedResult = "((double)foo)")] + [TestCase(typeof(byte), SerializationFormat.Default, ExpectedResult = "((byte)((int)foo))")] + [TestCase(typeof(sbyte), SerializationFormat.Default, ExpectedResult = "((sbyte)((int)foo))")] + [TestCase(typeof(short), SerializationFormat.Default, ExpectedResult = "((short)((int)foo))")] + public string DeserializeXmlValueCore_PrimitiveTypes(Type type, SerializationFormat format) + { + var expr = MrwSerializationTypeDefinition.DeserializeXmlValueCore( + type, + new ScopedApi(new VariableExpression(typeof(XElement), "foo")), + new ScopedApi(new VariableExpression(typeof(ModelReaderWriterOptions), "options")), + format); + return expr.ToDisplayString(); + } + + [TestCase(SerializationFormat.DateTime_ISO8601, ExpectedResult = "foo.GetDateTimeOffset(\"O\")")] + [TestCase(SerializationFormat.DateTime_RFC1123, ExpectedResult = "foo.GetDateTimeOffset(\"R\")")] + [TestCase(SerializationFormat.DateTime_RFC3339, ExpectedResult = "foo.GetDateTimeOffset(\"O\")")] + public string DeserializeXmlValueCore_DateTimeOffset(SerializationFormat format) + { + var expr = MrwSerializationTypeDefinition.DeserializeXmlValueCore( + typeof(DateTimeOffset), + new ScopedApi(new VariableExpression(typeof(XElement), "foo")), + new ScopedApi(new VariableExpression(typeof(ModelReaderWriterOptions), "options")), + format); + return expr.ToDisplayString(); + } + + [TestCase(SerializationFormat.Duration_ISO8601, ExpectedResult = "foo.GetTimeSpan(\"P\")")] + [TestCase(SerializationFormat.Duration_Constant, ExpectedResult = "foo.GetTimeSpan(\"c\")")] + public string DeserializeXmlValueCore_TimeSpan(SerializationFormat format) + { + var expr = MrwSerializationTypeDefinition.DeserializeXmlValueCore( + typeof(TimeSpan), + new ScopedApi(new VariableExpression(typeof(XElement), "foo")), + new ScopedApi(new VariableExpression(typeof(ModelReaderWriterOptions), "options")), + format); + return expr.ToDisplayString(); + } + + [Test] + public void DeserializeXmlValueOverride_CustomTypeDeserialization() + { + var inputModel = InputFactory.Model( + "TestXmlModel", + usage: InputModelTypeUsage.Input | InputModelTypeUsage.Xml, + properties: [InputFactory.Property("Name", InputPrimitiveType.String, + serializationOptions: InputFactory.Serialization.Options(xml: InputFactory.Serialization.Xml("Name")))]); + + var mockGenerator = MockHelpers.LoadMockGenerator( + inputModels: () => [inputModel]); + + // override DeserializeXmlValue to return a custom expression for string types + var mockTypeFactory = Mock.Get((ScmTypeFactory)mockGenerator.Object.TypeFactory); + mockTypeFactory.Setup(p => p.DeserializeXmlValue( + It.Is(t => t.FrameworkType == typeof(string)), + It.IsAny>(), + It.IsAny>(), + It.IsAny())) + .Returns((CSharpType type, ScopedApi element, ScopedApi mrwOptions, SerializationFormat format) => + element.InvokeToString()); + + var modelProvider = mockGenerator.Object.OutputLibrary.TypeProviders.Single(t => t is ModelProvider && t.Name == "TestXmlModel"); + var serializationProvider = modelProvider.SerializationProviders.Single(t => t is MrwSerializationTypeDefinition); + Assert.IsNotNull(serializationProvider); + + var writer = new TypeProviderWriter(new FilteredMethodsTypeProvider( + serializationProvider, + name => name == "DeserializeTestXmlModel")); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlSerializationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlSerializationTests.cs index 4f3a60697c8..9c22c8c08c1 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlSerializationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/XmlSerializationTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -8,10 +9,14 @@ using System.Threading.Tasks; using System.Xml; using Microsoft.TypeSpec.Generator.ClientModel.Providers; +using Microsoft.TypeSpec.Generator.ClientModel.Snippets; +using Microsoft.TypeSpec.Generator.Expressions; using Microsoft.TypeSpec.Generator.Input; using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; +using Microsoft.TypeSpec.Generator.Snippets; using Microsoft.TypeSpec.Generator.Tests.Common; +using Moq; using NUnit.Framework; namespace Microsoft.TypeSpec.Generator.ClientModel.Tests.Providers.MrwSerializationTypeDefinitions @@ -687,6 +692,84 @@ public async Task PersistableModelWriteCoreHandlesJsonAndXmlFormats() Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); } + [TestCase(typeof(int), SerializationFormat.Default, ExpectedResult = "writer.WriteValue(value);\n")] + [TestCase(typeof(string), SerializationFormat.Default, ExpectedResult = "writer.WriteValue(value);\n")] + [TestCase(typeof(bool), SerializationFormat.Default, ExpectedResult = "writer.WriteValue(value);\n")] + [TestCase(typeof(long), SerializationFormat.Default, ExpectedResult = "writer.WriteValue(value);\n")] + [TestCase(typeof(float), SerializationFormat.Default, ExpectedResult = "writer.WriteValue(value);\n")] + [TestCase(typeof(double), SerializationFormat.Default, ExpectedResult = "writer.WriteValue(value);\n")] + public string SerializeXmlValueCore_PrimitiveTypes(Type type, SerializationFormat format) + { + var statement = MrwSerializationTypeDefinition.SerializeXmlValueCore( + type, + new VariableExpression(type, "value"), + new ScopedApi(new VariableExpression(typeof(XmlWriter), "writer")), + new ScopedApi(new VariableExpression(typeof(ModelReaderWriterOptions), "options")), + format); + return statement.ToDisplayString(); + } + + [TestCase(SerializationFormat.DateTime_ISO8601, ExpectedResult = "writer.WriteValue(value.ToString(\"O\"));\n")] + [TestCase(SerializationFormat.DateTime_RFC1123, ExpectedResult = "writer.WriteValue(value.ToString(\"R\"));\n")] + [TestCase(SerializationFormat.DateTime_RFC3339, ExpectedResult = "writer.WriteValue(value.ToString(\"O\"));\n")] + public string SerializeXmlValueCore_DateTimeOffset(SerializationFormat format) + { + var statement = MrwSerializationTypeDefinition.SerializeXmlValueCore( + typeof(DateTimeOffset), + new VariableExpression(typeof(DateTimeOffset), "value"), + new ScopedApi(new VariableExpression(typeof(XmlWriter), "writer")), + new ScopedApi(new VariableExpression(typeof(ModelReaderWriterOptions), "options")), + format); + return statement.ToDisplayString(); + } + + [TestCase(SerializationFormat.Duration_ISO8601, ExpectedResult = "writer.WriteValue(value.ToString(\"P\"));\n")] + [TestCase(SerializationFormat.Duration_Constant, ExpectedResult = "writer.WriteValue(value.ToString(\"c\"));\n")] + public string SerializeXmlValueCore_TimeSpan(SerializationFormat format) + { + var statement = MrwSerializationTypeDefinition.SerializeXmlValueCore( + typeof(TimeSpan), + new VariableExpression(typeof(TimeSpan), "value"), + new ScopedApi(new VariableExpression(typeof(XmlWriter), "writer")), + new ScopedApi(new VariableExpression(typeof(ModelReaderWriterOptions), "options")), + format); + return statement.ToDisplayString(); + } + + [Test] + public void SerializeXmlValueOverride_CustomTypeSerialization() + { + var inputModel = InputFactory.Model( + "TestXmlModel", + usage: InputModelTypeUsage.Input | InputModelTypeUsage.Xml, + properties: [InputFactory.Property("Name", InputPrimitiveType.String, + serializationOptions: InputFactory.Serialization.Options(xml: InputFactory.Serialization.Xml("Name")))]); + + var mockGenerator = MockHelpers.LoadMockGenerator( + inputModels: () => [inputModel]); + + // override SerializeXmlValue to return a custom statement for string types + var mockTypeFactory = Mock.Get((ScmTypeFactory)mockGenerator.Object.TypeFactory); + mockTypeFactory.Setup(p => p.SerializeXmlValue( + It.Is(t => t.FrameworkType == typeof(string)), + It.IsAny(), + It.IsAny>(), + It.IsAny>(), + It.IsAny())) + .Returns((CSharpType type, ValueExpression value, ScopedApi xmlWriter, ScopedApi options, SerializationFormat format) => + xmlWriter.WriteValue(value.Invoke(nameof(ToString)))); + + var modelProvider = mockGenerator.Object.OutputLibrary.TypeProviders.Single(t => t is ModelProvider && t.Name == "TestXmlModel"); + var serializationProvider = modelProvider.SerializationProviders.Single(t => t is MrwSerializationTypeDefinition); + Assert.IsNotNull(serializationProvider); + + var writer = new TypeProviderWriter(new FilteredMethodsTypeProvider( + serializationProvider, + name => name == "XmlModelWriteCore")); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } + private class MockMrwProvider : MrwSerializationTypeDefinition { public MockMrwProvider(InputModelType inputModel, ModelProvider modelProvider) diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/RestClientProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/RestClientProviderTests.cs index 1e0509129c9..2a9638dab4b 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/RestClientProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/RestClientProviderTests.cs @@ -8,13 +8,13 @@ using Microsoft.CodeAnalysis; using Microsoft.TypeSpec.Generator.ClientModel.Providers; using Microsoft.TypeSpec.Generator.Input; +using Microsoft.TypeSpec.Generator.Input.Extensions; using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; -using Microsoft.TypeSpec.Generator.Tests.Common; -using NUnit.Framework; using Microsoft.TypeSpec.Generator.Snippets; using Microsoft.TypeSpec.Generator.Statements; -using Microsoft.TypeSpec.Generator.Input.Extensions; +using Microsoft.TypeSpec.Generator.Tests.Common; +using NUnit.Framework; namespace Microsoft.TypeSpec.Generator.ClientModel.Tests.Providers.RestClientProviders { @@ -533,7 +533,7 @@ public void ValidateGetResponseClassifiersThrowsWhenNoSuccess() try { - var methods = restClientProvider.Methods; + var methods = restClientProvider.Methods; } catch (InvalidOperationException e) { @@ -1655,8 +1655,6 @@ public void TestApiVersionParameterReinjectedInCreateNextRequestMethod() [Test] public void ContentTypeHeaderWrappedInNullCheckWhenContentIsOptional() { - // Test that when there's an optional body parameter with a Content-Type header, - // the Content-Type header setting is wrapped in a null check for the content parameter var contentTypeParam = InputFactory.HeaderParameter( "Content-Type", InputFactory.Literal.String("application/json"), @@ -1671,37 +1669,21 @@ public void ContentTypeHeaderWrappedInNullCheckWhenContentIsOptional() "TestOperation", requestMediaTypes: ["application/json"], parameters: [contentTypeParam, bodyParam]); - var inputServiceMethod = InputFactory.BasicServiceMethod("Test", operation); - var inputClient = InputFactory.Client("TestClient", methods: [inputServiceMethod]); - MockHelpers.LoadMockGenerator(clients: () => [inputClient]); - - var client = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); - Assert.IsNotNull(client); - - var restClient = client!.RestClient; - Assert.IsNotNull(restClient); - - var createMethod = restClient.Methods.FirstOrDefault(m => m.Signature.Name == "CreateTestOperationRequest"); - Assert.IsNotNull(createMethod, "CreateTestOperationRequest method not found"); + var inputClient = InputFactory.Client( + "TestClient", + methods: [InputFactory.BasicServiceMethod("Test", operation)]); - var statements = createMethod!.BodyStatements as MethodBodyStatements; - Assert.IsNotNull(statements); + var clientProvider = new ClientProvider(inputClient); + var restClientProvider = new MockClientProvider(inputClient, clientProvider); - var expectedStatement = @"if ((content != null)) -{ - request.Headers.Set(""Content-Type"", ""application/json""); -} -"; - var statementsString = string.Join("\n", statements!.Select(s => s.ToDisplayString())); - Assert.IsTrue(statements!.Any(s => s.ToDisplayString() == expectedStatement), - $"Expected to find statement:\n{expectedStatement}\nBut got statements:\n{statementsString}"); + var writer = new TypeProviderWriter(restClientProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); } [Test] public void ContentTypeHeaderNotWrappedInNullCheckWhenContentIsRequired() { - // Test that when there's a required body parameter with a Content-Type header, - // the Content-Type header setting is NOT wrapped in a null check var contentTypeParam = InputFactory.HeaderParameter( "Content-Type", InputFactory.Literal.String("application/json"), @@ -1716,32 +1698,45 @@ public void ContentTypeHeaderNotWrappedInNullCheckWhenContentIsRequired() "TestOperation", requestMediaTypes: ["application/json"], parameters: [contentTypeParam, bodyParam]); - var inputServiceMethod = InputFactory.BasicServiceMethod("Test", operation); - var inputClient = InputFactory.Client("TestClient", methods: [inputServiceMethod]); - MockHelpers.LoadMockGenerator(clients: () => [inputClient]); + var inputClient = InputFactory.Client( + "TestClient", + methods: [InputFactory.BasicServiceMethod("Test", operation)]); - var client = ScmCodeModelGenerator.Instance.TypeFactory.CreateClient(inputClient); - Assert.IsNotNull(client); + var clientProvider = new ClientProvider(inputClient); + var restClientProvider = new MockClientProvider(inputClient, clientProvider); - var restClient = client!.RestClient; - Assert.IsNotNull(restClient); + var writer = new TypeProviderWriter(restClientProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); + } - var createMethod = restClient.Methods.FirstOrDefault(m => m.Signature.Name == "CreateTestOperationRequest"); - Assert.IsNotNull(createMethod, "CreateTestOperationRequest method not found"); + [Test] + public void ContentTypeHeaderWrappedInNullCheckWhenContentTypeIsOptional() + { + var contentTypeParam = InputFactory.HeaderParameter( + "Content-Type", + InputFactory.Literal.String("application/xml"), + isRequired: false, + isContentType: true, + scope: InputParameterScope.Constant); + var bodyParam = InputFactory.BodyParameter( + "body", + InputPrimitiveType.String, + isRequired: false); + var operation = InputFactory.Operation( + "TestOperation", + requestMediaTypes: ["application/xml"], + parameters: [contentTypeParam, bodyParam]); + var inputClient = InputFactory.Client( + "TestClient", + methods: [InputFactory.BasicServiceMethod("Test", operation)]); - var statements = createMethod!.BodyStatements as MethodBodyStatements; - Assert.IsNotNull(statements); + var clientProvider = new ClientProvider(inputClient); + var restClientProvider = new MockClientProvider(inputClient, clientProvider); - // Verify there's no if statement wrapping the Content-Type header - var wrappedStatement = @"if ((content != null)) -{ - request.Headers.Set(""Content-Type"", ""application/json""); -} -"; - var statementsString = string.Join("\n", statements!.Select(s => s.ToDisplayString())); - var hasIfWrappedContentType = statements!.Any(s => s.ToDisplayString().Contains(wrappedStatement)); - Assert.IsFalse(hasIfWrappedContentType, - $"Content-Type should NOT be wrapped in an if statement for required content, but found:\n{statementsString}"); + var writer = new TypeProviderWriter(restClientProvider); + var file = writer.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile(), file.Content); } [Test] diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderNotWrappedInNullCheckWhenContentIsRequired.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderNotWrappedInNullCheckWhenContentIsRequired.cs new file mode 100644 index 00000000000..7444c570591 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderNotWrappedInNullCheckWhenContentIsRequired.cs @@ -0,0 +1,24 @@ +// + +#nullable disable + +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Sample +{ + public partial class TestClient + { + internal global::System.ClientModel.Primitives.PipelineMessage CreateTestOperationRequest(global::System.ClientModel.BinaryContent content, global::System.ClientModel.Primitives.RequestOptions options) + { + global::Sample.ClientUriBuilder uri = new global::Sample.ClientUriBuilder(); + uri.Reset(_endpoint); + global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); + global::System.ClientModel.Primitives.PipelineRequest request = message.Request; + request.Headers.Set("Content-Type", "application/json"); + request.Content = content; + message.Apply(options); + return message; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderWrappedInNullCheckWhenContentIsOptional.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderWrappedInNullCheckWhenContentIsOptional.cs new file mode 100644 index 00000000000..08028ebda4d --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderWrappedInNullCheckWhenContentIsOptional.cs @@ -0,0 +1,27 @@ +// + +#nullable disable + +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Sample +{ + public partial class TestClient + { + internal global::System.ClientModel.Primitives.PipelineMessage CreateTestOperationRequest(global::System.ClientModel.BinaryContent content, global::System.ClientModel.Primitives.RequestOptions options) + { + global::Sample.ClientUriBuilder uri = new global::Sample.ClientUriBuilder(); + uri.Reset(_endpoint); + global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); + global::System.ClientModel.Primitives.PipelineRequest request = message.Request; + if ((content != null)) + { + request.Headers.Set("Content-Type", "application/json"); + } + request.Content = content; + message.Apply(options); + return message; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderWrappedInNullCheckWhenContentTypeIsOptional.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderWrappedInNullCheckWhenContentTypeIsOptional.cs new file mode 100644 index 00000000000..47ab29490c4 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/ContentTypeHeaderWrappedInNullCheckWhenContentTypeIsOptional.cs @@ -0,0 +1,27 @@ +// + +#nullable disable + +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Sample +{ + public partial class TestClient + { + internal global::System.ClientModel.Primitives.PipelineMessage CreateTestOperationRequest(global::System.ClientModel.BinaryContent content, global::System.ClientModel.Primitives.RequestOptions options) + { + global::Sample.ClientUriBuilder uri = new global::Sample.ClientUriBuilder(); + uri.Reset(_endpoint); + global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); + global::System.ClientModel.Primitives.PipelineRequest request = message.Request; + if ((content != null)) + { + request.Headers.Set("Content-Type", "application/xml"); + } + request.Content = content; + message.Apply(options); + return message; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedRestClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedRestClient.cs index d16e8ddea92..15cc22e0e14 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedRestClient.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/RestClientProviders/TestData/RestClientProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedRestClient.cs @@ -16,7 +16,7 @@ public partial class TestClient { global::Sample.ClientUriBuilder uri = new global::Sample.ClientUriBuilder(); uri.Reset(_endpoint); - uri.AppendQuery("apiVersion", _serviceKeyVaultApiVersion, true); + uri.AppendQuery("apiVersion", _keyVaultApiVersion, true); global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); global::System.ClientModel.Primitives.PipelineRequest request = message.Request; message.Apply(options); @@ -27,7 +27,7 @@ public partial class TestClient { global::Sample.ClientUriBuilder uri = new global::Sample.ClientUriBuilder(); uri.Reset(_endpoint); - uri.AppendQuery("apiVersion", _serviceStorageApiVersion, true); + uri.AppendQuery("apiVersion", _storageApiVersion, true); global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); global::System.ClientModel.Primitives.PipelineRequest request = message.Request; message.Apply(options); @@ -38,7 +38,7 @@ public partial class TestClient { global::Sample.ClientUriBuilder uri = new global::Sample.ClientUriBuilder(); uri.Reset(_endpoint); - uri.AppendQuery("apiVersion", _serviceComputeApiVersion, true); + uri.AppendQuery("apiVersion", _computeApiVersion, true); global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); global::System.ClientModel.Primitives.PipelineRequest request = message.Request; message.Apply(options); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmModelProvider/ScmModelProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmModelProvider/ScmModelProviderTests.cs index 9dfe03131ff..86d0fce01d6 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmModelProvider/ScmModelProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/ScmModelProvider/ScmModelProviderTests.cs @@ -62,7 +62,7 @@ public void TestSingleDiscriminatorDynamicModel(bool validateBase) InputFactory.Property("kind", InputPrimitiveType.String, isRequired: true, isDiscriminator: true), InputFactory.Property("name", InputPrimitiveType.String, isRequired: true) ], - discriminatedModels: new Dictionary() { {"cat", catModel } }); + discriminatedModels: new Dictionary() { { "cat", catModel } }); MockHelpers.LoadMockGenerator(inputModels: () => [baseModel, catModel]); var outputLibrary = ScmCodeModelGenerator.Instance.OutputLibrary; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_GeneratesExpectedClientOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_GeneratesExpectedClientOptions.cs index f3f3227ef90..cbb435387e8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_GeneratesExpectedClientOptions.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_GeneratesExpectedClientOptions.cs @@ -4,41 +4,62 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Sample { public partial class TestClientOptions : global::System.ClientModel.Primitives.ClientPipelineOptions { - private const global::Sample.TestClientOptions.ServiceAVersion LatestServiceAVersion = global::Sample.TestClientOptions.ServiceAVersion.V2_0; - private const global::Sample.TestClientOptions.ServiceBVersion LatestServiceBVersion = global::Sample.TestClientOptions.ServiceBVersion.V4_0; + private const global::Sample.TestClientOptions.ServiceAServiceVersion LatestServiceAVersion = global::Sample.TestClientOptions.ServiceAServiceVersion.V2_0; + private const global::Sample.TestClientOptions.ServiceBServiceVersion LatestServiceBVersion = global::Sample.TestClientOptions.ServiceBServiceVersion.V4_0; - public TestClientOptions(global::Sample.TestClientOptions.ServiceAVersion serviceAVersion = LatestServiceAVersion, global::Sample.TestClientOptions.ServiceBVersion serviceBVersion = LatestServiceBVersion) + public TestClientOptions(global::Sample.TestClientOptions.ServiceAServiceVersion serviceAServiceVersion = LatestServiceAVersion, global::Sample.TestClientOptions.ServiceBServiceVersion serviceBServiceVersion = LatestServiceBVersion) { - ServiceAApiVersion = serviceAVersion switch + ServiceAApiVersion = serviceAServiceVersion switch { - global::Sample.TestClientOptions.ServiceAVersion.V1_0 => "1.0", - global::Sample.TestClientOptions.ServiceAVersion.V2_0 => "2.0", + global::Sample.TestClientOptions.ServiceAServiceVersion.V1_0 => "1.0", + global::Sample.TestClientOptions.ServiceAServiceVersion.V2_0 => "2.0", _ => throw new global::System.NotSupportedException() }; - ServiceBApiVersion = serviceBVersion switch + ServiceBApiVersion = serviceBServiceVersion switch { - global::Sample.TestClientOptions.ServiceBVersion.V3_0 => "3.0", - global::Sample.TestClientOptions.ServiceBVersion.V4_0 => "4.0", + global::Sample.TestClientOptions.ServiceBServiceVersion.V3_0 => "3.0", + global::Sample.TestClientOptions.ServiceBServiceVersion.V4_0 => "4.0", _ => throw new global::System.NotSupportedException() }; } + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + internal TestClientOptions(global::Microsoft.Extensions.Configuration.IConfigurationSection section) : base(section) + { + ServiceAApiVersion = "2.0"; + ServiceBApiVersion = "4.0"; + if (((section is null) || !section.Exists())) + { + return; + } + if ((section["ServiceAApiVersion"] is string serviceAApiVersion)) + { + this.ServiceAApiVersion = serviceAApiVersion; + } + if ((section["ServiceBApiVersion"] is string serviceBApiVersion)) + { + this.ServiceBApiVersion = serviceBApiVersion; + } + } + internal string ServiceAApiVersion { get; } internal string ServiceBApiVersion { get; } - public enum ServiceAVersion + public enum ServiceAServiceVersion { V1_0 = 1, V2_0 = 2 } - public enum ServiceBVersion + public enum ServiceBServiceVersion { V3_0 = 1, V4_0 = 2 diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_SameLastSegment_ProducesUniqueVersionEnums.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_SameLastSegment_ProducesUniqueVersionEnums.cs new file mode 100644 index 00000000000..9308d24e008 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_SameLastSegment_ProducesUniqueVersionEnums.cs @@ -0,0 +1,68 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Sample +{ + public partial class TestClientOptions : global::System.ClientModel.Primitives.ClientPipelineOptions + { + private const global::Sample.TestClientOptions.ServiceOneTestsVersion LatestServiceOneTestsVersion = global::Sample.TestClientOptions.ServiceOneTestsVersion.V2_0; + private const global::Sample.TestClientOptions.ServiceTwoTestsVersion LatestServiceTwoTestsVersion = global::Sample.TestClientOptions.ServiceTwoTestsVersion.V4_0; + + public TestClientOptions(global::Sample.TestClientOptions.ServiceOneTestsVersion serviceOneTestsVersion = LatestServiceOneTestsVersion, global::Sample.TestClientOptions.ServiceTwoTestsVersion serviceTwoTestsVersion = LatestServiceTwoTestsVersion) + { + ServiceOneTestsApiVersion = serviceOneTestsVersion switch + { + global::Sample.TestClientOptions.ServiceOneTestsVersion.V1_0 => "1.0", + global::Sample.TestClientOptions.ServiceOneTestsVersion.V2_0 => "2.0", + _ => throw new global::System.NotSupportedException() + }; + ServiceTwoTestsApiVersion = serviceTwoTestsVersion switch + { + global::Sample.TestClientOptions.ServiceTwoTestsVersion.V3_0 => "3.0", + global::Sample.TestClientOptions.ServiceTwoTestsVersion.V4_0 => "4.0", + _ => throw new global::System.NotSupportedException() + }; + } + + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + internal TestClientOptions(global::Microsoft.Extensions.Configuration.IConfigurationSection section) : base(section) + { + ServiceOneTestsApiVersion = "2.0"; + ServiceTwoTestsApiVersion = "4.0"; + if (((section is null) || !section.Exists())) + { + return; + } + if ((section["ServiceOneTestsApiVersion"] is string serviceOneTestsApiVersion)) + { + this.ServiceOneTestsApiVersion = serviceOneTestsApiVersion; + } + if ((section["ServiceTwoTestsApiVersion"] is string serviceTwoTestsApiVersion)) + { + this.ServiceTwoTestsApiVersion = serviceTwoTestsApiVersion; + } + } + + internal string ServiceOneTestsApiVersion { get; } + + internal string ServiceTwoTestsApiVersion { get; } + + public enum ServiceOneTestsVersion + { + V1_0 = 1, + V2_0 = 2 + } + + public enum ServiceTwoTestsVersion + { + V3_0 = 1, + V4_0 = 2 + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_SameNamespace_ProducesUniqueVersionEnums.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_SameNamespace_ProducesUniqueVersionEnums.cs new file mode 100644 index 00000000000..8381cce6351 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_SameNamespace_ProducesUniqueVersionEnums.cs @@ -0,0 +1,64 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Sample +{ + public partial class MultiServiceClientOptions : global::System.ClientModel.Primitives.ClientPipelineOptions + { + private const global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion LatestAzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion = global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion.V2024_01_01; + private const global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion LatestAzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion = global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion.V2024_06_01; + + public MultiServiceClientOptions(global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion azureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion = LatestAzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion, global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion azureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion = LatestAzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion) + { + AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsApiVersion = azureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion switch + { + global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion.V2024_01_01 => "2024-01-01", + _ => throw new global::System.NotSupportedException() + }; + AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsApiVersion = azureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion switch + { + global::Sample.MultiServiceClientOptions.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion.V2024_06_01 => "2024-06-01", + _ => throw new global::System.NotSupportedException() + }; + } + + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + internal MultiServiceClientOptions(global::Microsoft.Extensions.Configuration.IConfigurationSection section) : base(section) + { + AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsApiVersion = "2024-01-01"; + AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsApiVersion = "2024-06-01"; + if (((section is null) || !section.Exists())) + { + return; + } + if ((section["AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsApiVersion"] is string azureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsApiVersion)) + { + this.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsApiVersion = azureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsApiVersion; + } + if ((section["AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsApiVersion"] is string azureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsApiVersion)) + { + this.AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsApiVersion = azureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsApiVersion; + } + } + + internal string AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsApiVersion { get; } + + internal string AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsApiVersion { get; } + + public enum AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceOneVersionsVersion + { + V2024_01_01 = 1 + } + + public enum AzureGeneratorMgmtTypeSpecMultiServiceTestsServiceTwoVersionsVersion + { + V2024_06_01 = 1 + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_UniqueNamespaces_ProducesUniqueVersionEnums.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_UniqueNamespaces_ProducesUniqueVersionEnums.cs new file mode 100644 index 00000000000..ae41ff46731 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_UniqueNamespaces_ProducesUniqueVersionEnums.cs @@ -0,0 +1,64 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Sample +{ + public partial class MultiServiceClientOptions : global::System.ClientModel.Primitives.ClientPipelineOptions + { + private const global::Sample.MultiServiceClientOptions.ServiceOneServiceVersion LatestServiceOneVersion = global::Sample.MultiServiceClientOptions.ServiceOneServiceVersion.V2024_01_01; + private const global::Sample.MultiServiceClientOptions.ServiceTwoServiceVersion LatestServiceTwoVersion = global::Sample.MultiServiceClientOptions.ServiceTwoServiceVersion.V2024_06_01; + + public MultiServiceClientOptions(global::Sample.MultiServiceClientOptions.ServiceOneServiceVersion serviceOneServiceVersion = LatestServiceOneVersion, global::Sample.MultiServiceClientOptions.ServiceTwoServiceVersion serviceTwoServiceVersion = LatestServiceTwoVersion) + { + ServiceOneApiVersion = serviceOneServiceVersion switch + { + global::Sample.MultiServiceClientOptions.ServiceOneServiceVersion.V2024_01_01 => "2024-01-01", + _ => throw new global::System.NotSupportedException() + }; + ServiceTwoApiVersion = serviceTwoServiceVersion switch + { + global::Sample.MultiServiceClientOptions.ServiceTwoServiceVersion.V2024_06_01 => "2024-06-01", + _ => throw new global::System.NotSupportedException() + }; + } + + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + internal MultiServiceClientOptions(global::Microsoft.Extensions.Configuration.IConfigurationSection section) : base(section) + { + ServiceOneApiVersion = "2024-01-01"; + ServiceTwoApiVersion = "2024-06-01"; + if (((section is null) || !section.Exists())) + { + return; + } + if ((section["ServiceOneApiVersion"] is string serviceOneApiVersion)) + { + this.ServiceOneApiVersion = serviceOneApiVersion; + } + if ((section["ServiceTwoApiVersion"] is string serviceTwoApiVersion)) + { + this.ServiceTwoApiVersion = serviceTwoApiVersion; + } + } + + internal string ServiceOneApiVersion { get; } + + internal string ServiceTwoApiVersion { get; } + + public enum ServiceOneServiceVersion + { + V2024_01_01 = 1 + } + + public enum ServiceTwoServiceVersion + { + V2024_06_01 = 1 + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClientOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClientOptions.cs index d7c4856dae2..37011ea3530 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClientOptions.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceClient_WithThreeServices_GeneratesExpectedClientOptions.cs @@ -4,58 +4,84 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Sample { public partial class TestClientOptions : global::System.ClientModel.Primitives.ClientPipelineOptions { - private const global::Sample.TestClientOptions.ServiceComputeVersion LatestServiceComputeVersion = global::Sample.TestClientOptions.ServiceComputeVersion.V2024_07_01; - private const global::Sample.TestClientOptions.ServiceKeyVaultVersion LatestServiceKeyVaultVersion = global::Sample.TestClientOptions.ServiceKeyVaultVersion.V7_5; - private const global::Sample.TestClientOptions.ServiceStorageVersion LatestServiceStorageVersion = global::Sample.TestClientOptions.ServiceStorageVersion.V2024_01_01; + private const global::Sample.TestClientOptions.ComputeServiceVersion LatestComputeVersion = global::Sample.TestClientOptions.ComputeServiceVersion.V2024_07_01; + private const global::Sample.TestClientOptions.KeyVaultServiceVersion LatestKeyVaultVersion = global::Sample.TestClientOptions.KeyVaultServiceVersion.V7_5; + private const global::Sample.TestClientOptions.StorageServiceVersion LatestStorageVersion = global::Sample.TestClientOptions.StorageServiceVersion.V2024_01_01; - public TestClientOptions(global::Sample.TestClientOptions.ServiceKeyVaultVersion serviceKeyVaultVersion = LatestServiceKeyVaultVersion, global::Sample.TestClientOptions.ServiceStorageVersion serviceStorageVersion = LatestServiceStorageVersion, global::Sample.TestClientOptions.ServiceComputeVersion serviceComputeVersion = LatestServiceComputeVersion) + public TestClientOptions(global::Sample.TestClientOptions.KeyVaultServiceVersion keyVaultServiceVersion = LatestKeyVaultVersion, global::Sample.TestClientOptions.StorageServiceVersion storageServiceVersion = LatestStorageVersion, global::Sample.TestClientOptions.ComputeServiceVersion computeServiceVersion = LatestComputeVersion) { - ServiceKeyVaultApiVersion = serviceKeyVaultVersion switch + KeyVaultApiVersion = keyVaultServiceVersion switch { - global::Sample.TestClientOptions.ServiceKeyVaultVersion.V7_4 => "7.4", - global::Sample.TestClientOptions.ServiceKeyVaultVersion.V7_5 => "7.5", + global::Sample.TestClientOptions.KeyVaultServiceVersion.V7_4 => "7.4", + global::Sample.TestClientOptions.KeyVaultServiceVersion.V7_5 => "7.5", _ => throw new global::System.NotSupportedException() }; - ServiceStorageApiVersion = serviceStorageVersion switch + StorageApiVersion = storageServiceVersion switch { - global::Sample.TestClientOptions.ServiceStorageVersion.V2023_01_01 => "2023-01-01", - global::Sample.TestClientOptions.ServiceStorageVersion.V2024_01_01 => "2024-01-01", + global::Sample.TestClientOptions.StorageServiceVersion.V2023_01_01 => "2023-01-01", + global::Sample.TestClientOptions.StorageServiceVersion.V2024_01_01 => "2024-01-01", _ => throw new global::System.NotSupportedException() }; - ServiceComputeApiVersion = serviceComputeVersion switch + ComputeApiVersion = computeServiceVersion switch { - global::Sample.TestClientOptions.ServiceComputeVersion.V2023_07_01 => "2023-07-01", - global::Sample.TestClientOptions.ServiceComputeVersion.V2024_03_01 => "2024-03-01", - global::Sample.TestClientOptions.ServiceComputeVersion.V2024_07_01 => "2024-07-01", + global::Sample.TestClientOptions.ComputeServiceVersion.V2023_07_01 => "2023-07-01", + global::Sample.TestClientOptions.ComputeServiceVersion.V2024_03_01 => "2024-03-01", + global::Sample.TestClientOptions.ComputeServiceVersion.V2024_07_01 => "2024-07-01", _ => throw new global::System.NotSupportedException() }; } - internal string ServiceComputeApiVersion { get; } + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + internal TestClientOptions(global::Microsoft.Extensions.Configuration.IConfigurationSection section) : base(section) + { + ComputeApiVersion = "2024-07-01"; + KeyVaultApiVersion = "7.5"; + StorageApiVersion = "2024-01-01"; + if (((section is null) || !section.Exists())) + { + return; + } + if ((section["ComputeApiVersion"] is string computeApiVersion)) + { + this.ComputeApiVersion = computeApiVersion; + } + if ((section["KeyVaultApiVersion"] is string keyVaultApiVersion)) + { + this.KeyVaultApiVersion = keyVaultApiVersion; + } + if ((section["StorageApiVersion"] is string storageApiVersion)) + { + this.StorageApiVersion = storageApiVersion; + } + } + + internal string ComputeApiVersion { get; } - internal string ServiceKeyVaultApiVersion { get; } + internal string KeyVaultApiVersion { get; } - internal string ServiceStorageApiVersion { get; } + internal string StorageApiVersion { get; } - public enum ServiceComputeVersion + public enum ComputeServiceVersion { V2023_07_01 = 1, V2024_03_01 = 2, V2024_07_01 = 3 } - public enum ServiceKeyVaultVersion + public enum KeyVaultServiceVersion { V7_4 = 1, V7_5 = 2 } - public enum ServiceStorageVersion + public enum StorageServiceVersion { V2023_01_01 = 1, V2024_01_01 = 2 diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_GeneratesExpectedClientOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_GeneratesExpectedClientOptions.cs index f3f3227ef90..cbb435387e8 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_GeneratesExpectedClientOptions.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_GeneratesExpectedClientOptions.cs @@ -4,41 +4,62 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Sample { public partial class TestClientOptions : global::System.ClientModel.Primitives.ClientPipelineOptions { - private const global::Sample.TestClientOptions.ServiceAVersion LatestServiceAVersion = global::Sample.TestClientOptions.ServiceAVersion.V2_0; - private const global::Sample.TestClientOptions.ServiceBVersion LatestServiceBVersion = global::Sample.TestClientOptions.ServiceBVersion.V4_0; + private const global::Sample.TestClientOptions.ServiceAServiceVersion LatestServiceAVersion = global::Sample.TestClientOptions.ServiceAServiceVersion.V2_0; + private const global::Sample.TestClientOptions.ServiceBServiceVersion LatestServiceBVersion = global::Sample.TestClientOptions.ServiceBServiceVersion.V4_0; - public TestClientOptions(global::Sample.TestClientOptions.ServiceAVersion serviceAVersion = LatestServiceAVersion, global::Sample.TestClientOptions.ServiceBVersion serviceBVersion = LatestServiceBVersion) + public TestClientOptions(global::Sample.TestClientOptions.ServiceAServiceVersion serviceAServiceVersion = LatestServiceAVersion, global::Sample.TestClientOptions.ServiceBServiceVersion serviceBServiceVersion = LatestServiceBVersion) { - ServiceAApiVersion = serviceAVersion switch + ServiceAApiVersion = serviceAServiceVersion switch { - global::Sample.TestClientOptions.ServiceAVersion.V1_0 => "1.0", - global::Sample.TestClientOptions.ServiceAVersion.V2_0 => "2.0", + global::Sample.TestClientOptions.ServiceAServiceVersion.V1_0 => "1.0", + global::Sample.TestClientOptions.ServiceAServiceVersion.V2_0 => "2.0", _ => throw new global::System.NotSupportedException() }; - ServiceBApiVersion = serviceBVersion switch + ServiceBApiVersion = serviceBServiceVersion switch { - global::Sample.TestClientOptions.ServiceBVersion.V3_0 => "3.0", - global::Sample.TestClientOptions.ServiceBVersion.V4_0 => "4.0", + global::Sample.TestClientOptions.ServiceBServiceVersion.V3_0 => "3.0", + global::Sample.TestClientOptions.ServiceBServiceVersion.V4_0 => "4.0", _ => throw new global::System.NotSupportedException() }; } + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + internal TestClientOptions(global::Microsoft.Extensions.Configuration.IConfigurationSection section) : base(section) + { + ServiceAApiVersion = "2.0"; + ServiceBApiVersion = "4.0"; + if (((section is null) || !section.Exists())) + { + return; + } + if ((section["ServiceAApiVersion"] is string serviceAApiVersion)) + { + this.ServiceAApiVersion = serviceAApiVersion; + } + if ((section["ServiceBApiVersion"] is string serviceBApiVersion)) + { + this.ServiceBApiVersion = serviceBApiVersion; + } + } + internal string ServiceAApiVersion { get; } internal string ServiceBApiVersion { get; } - public enum ServiceAVersion + public enum ServiceAServiceVersion { V1_0 = 1, V2_0 = 2 } - public enum ServiceBVersion + public enum ServiceBServiceVersion { V3_0 = 1, V4_0 = 2 diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClientOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClientOptions.cs index d7c4856dae2..37011ea3530 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClientOptions.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/MultiServiceCombinedClient_WithThreeServices_GeneratesExpectedClientOptions.cs @@ -4,58 +4,84 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Sample { public partial class TestClientOptions : global::System.ClientModel.Primitives.ClientPipelineOptions { - private const global::Sample.TestClientOptions.ServiceComputeVersion LatestServiceComputeVersion = global::Sample.TestClientOptions.ServiceComputeVersion.V2024_07_01; - private const global::Sample.TestClientOptions.ServiceKeyVaultVersion LatestServiceKeyVaultVersion = global::Sample.TestClientOptions.ServiceKeyVaultVersion.V7_5; - private const global::Sample.TestClientOptions.ServiceStorageVersion LatestServiceStorageVersion = global::Sample.TestClientOptions.ServiceStorageVersion.V2024_01_01; + private const global::Sample.TestClientOptions.ComputeServiceVersion LatestComputeVersion = global::Sample.TestClientOptions.ComputeServiceVersion.V2024_07_01; + private const global::Sample.TestClientOptions.KeyVaultServiceVersion LatestKeyVaultVersion = global::Sample.TestClientOptions.KeyVaultServiceVersion.V7_5; + private const global::Sample.TestClientOptions.StorageServiceVersion LatestStorageVersion = global::Sample.TestClientOptions.StorageServiceVersion.V2024_01_01; - public TestClientOptions(global::Sample.TestClientOptions.ServiceKeyVaultVersion serviceKeyVaultVersion = LatestServiceKeyVaultVersion, global::Sample.TestClientOptions.ServiceStorageVersion serviceStorageVersion = LatestServiceStorageVersion, global::Sample.TestClientOptions.ServiceComputeVersion serviceComputeVersion = LatestServiceComputeVersion) + public TestClientOptions(global::Sample.TestClientOptions.KeyVaultServiceVersion keyVaultServiceVersion = LatestKeyVaultVersion, global::Sample.TestClientOptions.StorageServiceVersion storageServiceVersion = LatestStorageVersion, global::Sample.TestClientOptions.ComputeServiceVersion computeServiceVersion = LatestComputeVersion) { - ServiceKeyVaultApiVersion = serviceKeyVaultVersion switch + KeyVaultApiVersion = keyVaultServiceVersion switch { - global::Sample.TestClientOptions.ServiceKeyVaultVersion.V7_4 => "7.4", - global::Sample.TestClientOptions.ServiceKeyVaultVersion.V7_5 => "7.5", + global::Sample.TestClientOptions.KeyVaultServiceVersion.V7_4 => "7.4", + global::Sample.TestClientOptions.KeyVaultServiceVersion.V7_5 => "7.5", _ => throw new global::System.NotSupportedException() }; - ServiceStorageApiVersion = serviceStorageVersion switch + StorageApiVersion = storageServiceVersion switch { - global::Sample.TestClientOptions.ServiceStorageVersion.V2023_01_01 => "2023-01-01", - global::Sample.TestClientOptions.ServiceStorageVersion.V2024_01_01 => "2024-01-01", + global::Sample.TestClientOptions.StorageServiceVersion.V2023_01_01 => "2023-01-01", + global::Sample.TestClientOptions.StorageServiceVersion.V2024_01_01 => "2024-01-01", _ => throw new global::System.NotSupportedException() }; - ServiceComputeApiVersion = serviceComputeVersion switch + ComputeApiVersion = computeServiceVersion switch { - global::Sample.TestClientOptions.ServiceComputeVersion.V2023_07_01 => "2023-07-01", - global::Sample.TestClientOptions.ServiceComputeVersion.V2024_03_01 => "2024-03-01", - global::Sample.TestClientOptions.ServiceComputeVersion.V2024_07_01 => "2024-07-01", + global::Sample.TestClientOptions.ComputeServiceVersion.V2023_07_01 => "2023-07-01", + global::Sample.TestClientOptions.ComputeServiceVersion.V2024_03_01 => "2024-03-01", + global::Sample.TestClientOptions.ComputeServiceVersion.V2024_07_01 => "2024-07-01", _ => throw new global::System.NotSupportedException() }; } - internal string ServiceComputeApiVersion { get; } + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + internal TestClientOptions(global::Microsoft.Extensions.Configuration.IConfigurationSection section) : base(section) + { + ComputeApiVersion = "2024-07-01"; + KeyVaultApiVersion = "7.5"; + StorageApiVersion = "2024-01-01"; + if (((section is null) || !section.Exists())) + { + return; + } + if ((section["ComputeApiVersion"] is string computeApiVersion)) + { + this.ComputeApiVersion = computeApiVersion; + } + if ((section["KeyVaultApiVersion"] is string keyVaultApiVersion)) + { + this.KeyVaultApiVersion = keyVaultApiVersion; + } + if ((section["StorageApiVersion"] is string storageApiVersion)) + { + this.StorageApiVersion = storageApiVersion; + } + } + + internal string ComputeApiVersion { get; } - internal string ServiceKeyVaultApiVersion { get; } + internal string KeyVaultApiVersion { get; } - internal string ServiceStorageApiVersion { get; } + internal string StorageApiVersion { get; } - public enum ServiceComputeVersion + public enum ComputeServiceVersion { V2023_07_01 = 1, V2024_03_01 = 2, V2024_07_01 = 3 } - public enum ServiceKeyVaultVersion + public enum KeyVaultServiceVersion { V7_4 = 1, V7_5 = 2 } - public enum ServiceStorageVersion + public enum StorageServiceVersion { V2023_01_01 = 1, V2024_01_01 = 2 diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/TestConfigurationSectionConstructorBody_BindsCustomCodeProperties/TestClientOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/TestConfigurationSectionConstructorBody_BindsCustomCodeProperties/TestClientOptions.cs new file mode 100644 index 00000000000..30f1955a770 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientOptionsProviderTests/TestConfigurationSectionConstructorBody_BindsCustomCodeProperties/TestClientOptions.cs @@ -0,0 +1,11 @@ +#nullable disable + +using System.ClientModel.Primitives; + +namespace SampleNamespace +{ + public partial class TestClientOptions : ClientPipelineOptions + { + public string Audience { get; set; } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_BindsCustomConstructorParameters/TestClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_BindsCustomConstructorParameters/TestClient.cs new file mode 100644 index 00000000000..488eb113e09 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_BindsCustomConstructorParameters/TestClient.cs @@ -0,0 +1,9 @@ +#nullable disable + +namespace SampleNamespace +{ + public partial class TestClient + { + public TestClient(string connectionString) { } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_DoesNotBindSettingsParameter/TestClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_DoesNotBindSettingsParameter/TestClient.cs new file mode 100644 index 00000000000..295c1e16637 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_DoesNotBindSettingsParameter/TestClient.cs @@ -0,0 +1,12 @@ +#nullable disable + +using System.Diagnostics.CodeAnalysis; + +namespace SampleNamespace +{ + public partial class TestClient + { + [Experimental("SCME0002")] + public TestClient(TestClientSettings settings) { } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomIntStructParam/CustomPriority.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomIntStructParam/CustomPriority.cs new file mode 100644 index 00000000000..11c10870750 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomIntStructParam/CustomPriority.cs @@ -0,0 +1,14 @@ +#nullable disable + +namespace SampleNamespace +{ + public readonly partial struct CustomPriority + { + private readonly int _value; + + public CustomPriority(int value) + { + _value = value; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomStructParam/CustomAudience.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomStructParam/CustomAudience.cs new file mode 100644 index 00000000000..05dec1f8c23 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomStructParam/CustomAudience.cs @@ -0,0 +1,14 @@ +#nullable disable + +namespace SampleNamespace +{ + public readonly partial struct CustomAudience + { + private readonly string _value; + + public CustomAudience(string value) + { + _value = value; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomStructParam_FallsBackToComplexObject/CustomComplex.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomStructParam_FallsBackToComplexObject/CustomComplex.cs new file mode 100644 index 00000000000..655f7536bac --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestBindCoreMethod_WithCustomStructParam_FallsBackToComplexObject/CustomComplex.cs @@ -0,0 +1,16 @@ +#nullable disable + +namespace SampleNamespace +{ + public readonly partial struct CustomComplex + { + private readonly string _name; + private readonly int _value; + + public CustomComplex(string name, int value) + { + _name = name; + _value = value; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithNamedStringEndpoint.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithNamedStringEndpoint.cs new file mode 100644 index 00000000000..ec384277371 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithNamedStringEndpoint.cs @@ -0,0 +1,32 @@ +// + +#nullable disable + +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Sample +{ + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + public partial class TestClientSettings : global::System.ClientModel.Primitives.ClientSettings + { + public string FullyQualifiedNamespace { get; set; } + + public global::Sample.TestClientOptions Options { get; set; } + + protected override void BindCore(global::Microsoft.Extensions.Configuration.IConfigurationSection section) + { + string fullyQualifiedNamespace = section["FullyQualifiedNamespace"]; + if (!string.IsNullOrEmpty(fullyQualifiedNamespace)) + { + this.FullyQualifiedNamespace = fullyQualifiedNamespace; + } + global::Microsoft.Extensions.Configuration.IConfigurationSection optionsSection = section.GetSection("Options"); + if (optionsSection.Exists()) + { + this.Options = new global::Sample.TestClientOptions(optionsSection); + } + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithStringEndpoint.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithStringEndpoint.cs new file mode 100644 index 00000000000..d788bffbdd1 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithStringEndpoint.cs @@ -0,0 +1,32 @@ +// + +#nullable disable + +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Sample +{ + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + public partial class TestClientSettings : global::System.ClientModel.Primitives.ClientSettings + { + public string Endpoint { get; set; } + + public global::Sample.TestClientOptions Options { get; set; } + + protected override void BindCore(global::Microsoft.Extensions.Configuration.IConfigurationSection section) + { + string endpoint = section["Endpoint"]; + if (!string.IsNullOrEmpty(endpoint)) + { + this.Endpoint = endpoint; + } + global::Microsoft.Extensions.Configuration.IConfigurationSection optionsSection = section.GetSection("Options"); + if (optionsSection.Exists()) + { + this.Options = new global::Sample.TestClientOptions(optionsSection); + } + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithUrlEndpoint.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithUrlEndpoint.cs new file mode 100644 index 00000000000..308ed1bed8b --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestGeneratedSettings_WithUrlEndpoint.cs @@ -0,0 +1,32 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Sample +{ + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + public partial class TestClientSettings : global::System.ClientModel.Primitives.ClientSettings + { + public global::System.Uri Endpoint { get; set; } + + public global::Sample.TestClientOptions Options { get; set; } + + protected override void BindCore(global::Microsoft.Extensions.Configuration.IConfigurationSection section) + { + if (global::System.Uri.TryCreate(section["Endpoint"], global::System.UriKind.Absolute, out global::System.Uri endpoint)) + { + this.Endpoint = endpoint; + } + global::Microsoft.Extensions.Configuration.IConfigurationSection optionsSection = section.GetSection("Options"); + if (optionsSection.Exists()) + { + this.Options = new global::Sample.TestClientOptions(optionsSection); + } + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestProperties_IncludesCustomConstructorParameters/TestClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestProperties_IncludesCustomConstructorParameters/TestClient.cs new file mode 100644 index 00000000000..488eb113e09 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestProperties_IncludesCustomConstructorParameters/TestClient.cs @@ -0,0 +1,9 @@ +#nullable disable + +namespace SampleNamespace +{ + public partial class TestClient + { + public TestClient(string connectionString) { } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsConstructor_WithStringEndpoint.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsConstructor_WithStringEndpoint.cs new file mode 100644 index 00000000000..b34c34bc1fa --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsConstructor_WithStringEndpoint.cs @@ -0,0 +1,49 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; + +namespace Sample +{ + public partial class TestClient + { + private readonly global::System.Uri _endpoint; + + protected TestClient() + { + } + + public TestClient(string endpoint = default) : this(endpoint, new global::Sample.TestClientOptions()) + { + } + + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, string endpoint = default, global::Sample.TestClientOptions options) + { + options ??= new global::Sample.TestClientOptions(); + + _endpoint = new global::System.Uri($"https://{endpoint}"); + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } + } + + public TestClient(string endpoint = default, global::Sample.TestClientOptions options) : this(null, endpoint, options) + { + } + + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + public TestClient(global::Sample.TestClientSettings settings) : this(global::System.ClientModel.Primitives.AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) + { + } + + public global::System.ClientModel.Primitives.ClientPipeline Pipeline { get; } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsConstructor_WithUrlEndpoint.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsConstructor_WithUrlEndpoint.cs new file mode 100644 index 00000000000..ad76eb92090 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsConstructor_WithUrlEndpoint.cs @@ -0,0 +1,51 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; + +namespace Sample +{ + public partial class TestClient + { + private readonly global::System.Uri _endpoint; + + protected TestClient() + { + } + + public TestClient(global::System.Uri endpoint) : this(endpoint, new global::Sample.TestClientOptions()) + { + } + + internal TestClient(global::System.ClientModel.Primitives.AuthenticationPolicy authenticationPolicy, global::System.Uri endpoint, global::Sample.TestClientOptions options) + { + global::Sample.Argument.AssertNotNull(endpoint, nameof(endpoint)); + + options ??= new global::Sample.TestClientOptions(); + + _endpoint = endpoint; + if ((authenticationPolicy != null)) + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = global::System.ClientModel.Primitives.ClientPipeline.Create(options, Array.Empty(), new global::System.ClientModel.Primitives.PipelinePolicy[] { new global::System.ClientModel.Primitives.UserAgentPolicy(typeof(global::Sample.TestClient).Assembly) }, Array.Empty()); + } + } + + public TestClient(global::System.Uri endpoint, global::Sample.TestClientOptions options) : this(null, endpoint, options) + { + } + + [global::System.Diagnostics.CodeAnalysis.ExperimentalAttribute("SCME0002")] + public TestClient(global::Sample.TestClientSettings settings) : this(global::System.ClientModel.Primitives.AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) + { + } + + public global::System.ClientModel.Primitives.ClientPipeline Pipeline { get; } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsType_DoesNotContainSelfReferentialSettingsProperty/TestClient.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsType_DoesNotContainSelfReferentialSettingsProperty/TestClient.cs new file mode 100644 index 00000000000..295c1e16637 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/TestData/ClientSettingsProviderTests/TestSettingsType_DoesNotContainSelfReferentialSettingsProperty/TestClient.cs @@ -0,0 +1,12 @@ +#nullable disable + +using System.Diagnostics.CodeAnalysis; + +namespace SampleNamespace +{ + public partial class TestClient + { + [Experimental("SCME0002")] + public TestClient(TestClientSettings settings) { } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ConstructorParameter_IncludesModelDefinition.json b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ConstructorParameter_IncludesModelDefinition.json new file mode 100644 index 00000000000..c36ea45c926 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ConstructorParameter_IncludesModelDefinition.json @@ -0,0 +1,53 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "TestService": { + "type": "object", + "description": "Configuration for TestService.", + "properties": { + "Endpoint": { + "type": "string", + "description": "Gets or sets the Endpoint." + }, + "ConnectionConfig": { + "$ref": "#/definitions/connectionConfig" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/testServiceOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "connectionConfig": { + "type": "object", + "properties": { + "Host": { + "type": "string" + }, + "Port": { + "type": "integer" + } + } + }, + "testServiceOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ExcludesInternalConstructorParameters/TestService.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ExcludesInternalConstructorParameters/TestService.cs new file mode 100644 index 00000000000..47edb029eba --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ExcludesInternalConstructorParameters/TestService.cs @@ -0,0 +1,10 @@ +#nullable disable + +namespace Sample +{ + public partial class TestService + { + public TestService(string connectionString) { } + internal TestService(string internalParam, int anotherInternalParam) { } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_HandlesMultipleClients.json b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_HandlesMultipleClients.json new file mode 100644 index 00000000000..7283b9b2c1f --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_HandlesMultipleClients.json @@ -0,0 +1,54 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ServiceA": { + "type": "object", + "description": "Configuration for ServiceA.", + "properties": { + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/serviceAOptions" + } + } + }, + "ServiceB": { + "type": "object", + "description": "Configuration for ServiceB.", + "properties": { + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/serviceBOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "serviceAOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + }, + "serviceBOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_IncludesCustomCodeOptionsProperties/TestServiceOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_IncludesCustomCodeOptionsProperties/TestServiceOptions.cs new file mode 100644 index 00000000000..f420dba0474 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_IncludesCustomCodeOptionsProperties/TestServiceOptions.cs @@ -0,0 +1,11 @@ +#nullable disable + +using System.ClientModel.Primitives; + +namespace Sample +{ + public partial class TestServiceOptions : ClientPipelineOptions + { + public string Audience { get; set; } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_IncludesCustomConstructorParameters/TestService.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_IncludesCustomConstructorParameters/TestService.cs new file mode 100644 index 00000000000..22eada52e54 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_IncludesCustomConstructorParameters/TestService.cs @@ -0,0 +1,9 @@ +#nullable disable + +namespace Sample +{ + public partial class TestService + { + public TestService(string connectionString) { } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ReturnsSchema_ForClientWithSettings.json b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ReturnsSchema_ForClientWithSettings.json new file mode 100644 index 00000000000..7bf8de8af1b --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/Generate_ReturnsSchema_ForClientWithSettings.json @@ -0,0 +1,35 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "TestService": { + "type": "object", + "description": "Configuration for TestService.", + "properties": { + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/testServiceOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "testServiceOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsIntegerSchema_ForCustomIntStruct/CustomPriority.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsIntegerSchema_ForCustomIntStruct/CustomPriority.cs new file mode 100644 index 00000000000..11c10870750 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsIntegerSchema_ForCustomIntStruct/CustomPriority.cs @@ -0,0 +1,14 @@ +#nullable disable + +namespace SampleNamespace +{ + public readonly partial struct CustomPriority + { + private readonly int _value; + + public CustomPriority(int value) + { + _value = value; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsObjectSchema_ForCustomStructWithNoValidConstructor/CustomComplex.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsObjectSchema_ForCustomStructWithNoValidConstructor/CustomComplex.cs new file mode 100644 index 00000000000..655f7536bac --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsObjectSchema_ForCustomStructWithNoValidConstructor/CustomComplex.cs @@ -0,0 +1,16 @@ +#nullable disable + +namespace SampleNamespace +{ + public readonly partial struct CustomComplex + { + private readonly string _name; + private readonly int _value; + + public CustomComplex(string name, int value) + { + _name = name; + _value = value; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsStringSchema_ForCustomStringStruct/CustomAudience.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsStringSchema_ForCustomStringStruct/CustomAudience.cs new file mode 100644 index 00000000000..05dec1f8c23 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestData/ConfigurationSchemaGeneratorTests/GetJsonSchemaForType_ReturnsStringSchema_ForCustomStringStruct/CustomAudience.cs @@ -0,0 +1,14 @@ +#nullable disable + +namespace SampleNamespace +{ + public readonly partial struct CustomAudience + { + private readonly string _value; + + public CustomAudience(string value) + { + _value = value; + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/TestRequestContentApi.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/TestRequestContentApi.cs index 106afd687af..3c84cc249ea 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/TestRequestContentApi.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/TestRequestContentApi.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using Microsoft.TypeSpec.Generator.ClientModel.Providers; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/Extensions/StringExtensions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/Extensions/StringExtensions.cs index 5c754e5fe48..53fe46f08cd 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/Extensions/StringExtensions.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/Extensions/StringExtensions.cs @@ -9,10 +9,11 @@ namespace Microsoft.TypeSpec.Generator.Input.Extensions { public static class StringExtensions { - private static bool IsWordSeparator(char c) => !SyntaxFacts.IsIdentifierPartCharacter(c) || c == '_'; + private static bool IsWordSeparator(char c, bool preserveUnderscores = false) + => !SyntaxFacts.IsIdentifierPartCharacter(c) || (!preserveUnderscores && c == '_'); [return: NotNullIfNotNull("name")] - public static string ToIdentifierName(this string name, bool useCamelCase = false) + public static string ToIdentifierName(this string name, bool useCamelCase = false, bool preserveUnderscores = false) { if (string.IsNullOrEmpty(name)) { @@ -39,7 +40,7 @@ public static string ToIdentifierName(this string name, bool useCamelCase = fals for (; i < name.Length; i++) { var c = name[i]; - if (IsWordSeparator(c)) + if (IsWordSeparator(c, preserveUnderscores)) { upperCase = true; continue; @@ -56,7 +57,7 @@ public static string ToIdentifierName(this string name, bool useCamelCase = fals upperCase = false; // grow the first word length when this letter follows by two other upper case letters // this happens in OSProfile, where OS is the first word - if (i + 2 < name.Length && char.IsUpper(name[i + 1]) && (char.IsUpper(name[i + 2]) || IsWordSeparator(name[i + 2]))) + if (i + 2 < name.Length && char.IsUpper(name[i + 1]) && (char.IsUpper(name[i + 2]) || IsWordSeparator(name[i + 2], preserveUnderscores))) firstWordLength++; // grow the first word length when this letter follows by another upper case letter and an end of the string // this happens when the string only has one word, like OS, DNS @@ -77,6 +78,6 @@ public static string ToIdentifierName(this string name, bool useCamelCase = fals } [return: NotNullIfNotNull(nameof(name))] - public static string ToVariableName(this string name) => name.ToIdentifierName(useCamelCase: true); + public static string ToVariableName(this string name, bool preserveUnderscores = false) => name.ToIdentifierName(useCamelCase: true, preserveUnderscores: preserveUnderscores); } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputMethodParameter.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputMethodParameter.cs index 538dbef5efc..6a5b9cc5c83 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputMethodParameter.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputMethodParameter.cs @@ -24,5 +24,7 @@ public InputMethodParameter( } public InputRequestLocation Location { get; internal set; } + + public string? ParamAlias { get; internal set; } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputOperation.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputOperation.cs index 54f37df38db..6db80119d68 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputOperation.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/InputOperation.cs @@ -73,6 +73,11 @@ public InputOperation() : this( { } public string Name { get; internal set; } + + /// + /// Gets the original name of the operation as defined in the TypeSpec before any mutations. + /// + public string? OriginalName { get; internal set; } public string? ResourceName { get; internal set; } public string? Summary { get; internal set; } public string? Doc { get; internal set; } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputMethodParameterConverter.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputMethodParameterConverter.cs index def2b8456b2..3e61c3d629a 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputMethodParameterConverter.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputMethodParameterConverter.cs @@ -62,6 +62,7 @@ internal static InputMethodParameter ReadInputMethodParameter(ref Utf8JsonReader string? defaultContentType = null; IReadOnlyList? decorators = null; string? location = null; + string? paramAlias = null; while (reader.TokenType != JsonTokenType.EndObject) { @@ -80,7 +81,8 @@ internal static InputMethodParameter ReadInputMethodParameter(ref Utf8JsonReader || reader.TryReadComplexType("contentTypes", options, ref contentTypes) || reader.TryReadComplexType("defaultContentType", options, ref defaultContentType) || reader.TryReadString("location", ref location) - || reader.TryReadComplexType("decorators", options, ref decorators); + || reader.TryReadComplexType("decorators", options, ref decorators) + || reader.TryReadString("paramAlias", ref paramAlias); if (!isKnownProperty) { @@ -107,6 +109,7 @@ internal static InputMethodParameter ReadInputMethodParameter(ref Utf8JsonReader } Enum.TryParse(location, ignoreCase: true, out var requestLocation); parameter.Location = requestLocation; + parameter.ParamAlias = paramAlias; return parameter; } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputOperationConverter.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputOperationConverter.cs index 28b6a06c988..32e27880757 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputOperationConverter.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/InputOperationConverter.cs @@ -87,6 +87,7 @@ public override void Write(Utf8JsonWriter writer, InputOperation value, JsonSeri } operation.Name = name ?? throw new JsonException("InputOperation must have name"); + operation.OriginalName = name; operation.ResourceName = resourceName; operation.Summary = summary; operation.Doc = doc; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/Utf8JsonReaderExtensions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/Utf8JsonReaderExtensions.cs index f02980b787d..00124c64137 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/Utf8JsonReaderExtensions.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/src/InputTypes/Serialization/Utf8JsonReaderExtensions.cs @@ -146,6 +146,43 @@ public static bool TryReadComplexType(this ref Utf8JsonReader reader, string return true; } + public static bool TryReadComplexType(this ref Utf8JsonReader reader, string propertyName, JsonSerializerOptions options, ref IReadOnlyDictionary? value) + { + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException(); + } + + if (reader.GetString() != propertyName) + { + return false; + } + + reader.Read(); + if (reader.TokenType != JsonTokenType.StartObject) + { + throw new JsonException(); + } + reader.Read(); + string? id = null; + var result = new Dictionary(); + while (reader.TokenType != JsonTokenType.EndObject) + { + // Skip $id metadata (reference tracking), just like TryReadReferenceId does + if (reader.TryReadReferenceId(ref id)) + { + continue; + } + var key = reader.GetString() ?? throw new JsonException("Dictionary key cannot be null"); + reader.Read(); + var item = reader.ReadWithConverter(options); + result[key] = item ?? throw new JsonException(); + } + reader.Read(); + value = result; + return true; + } + public static T? ReadWithConverter(this ref Utf8JsonReader reader, JsonSerializerOptions options) { var converter = (JsonConverter)options.GetConverter(typeof(T)); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/InputParameterTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/InputParameterTests.cs index 1c9ea38a4a8..3ffef9e25db 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/InputParameterTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/InputParameterTests.cs @@ -102,5 +102,23 @@ public void OriginalNameMatchesNameWhenNoUpdateOccurs() Assert.AreEqual("filter", parameter.Name); Assert.AreEqual("filter", parameter.OriginalName); } + + [Test] + public void ParamAliasIsSetFromFactory() + { + var parameter = InputFactory.MethodParameter("blobName", InputPrimitiveType.String, paramAlias: "name"); + + Assert.AreEqual("blobName", parameter.Name); + Assert.AreEqual("name", parameter.ParamAlias); + } + + [Test] + public void ParamAliasIsNullByDefault() + { + var parameter = InputFactory.MethodParameter("blobName", InputPrimitiveType.String); + + Assert.AreEqual("blobName", parameter.Name); + Assert.IsNull(parameter.ParamAlias); + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/StringExtensionsTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/StringExtensionsTests.cs new file mode 100644 index 00000000000..f6d04805531 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/StringExtensionsTests.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.TypeSpec.Generator.Input.Extensions; +using NUnit.Framework; + +namespace Microsoft.TypeSpec.Generator.Input.Tests +{ + public class StringExtensionsTests + { + // Existing behavior without preserveUnderscores (default) + [TestCase("Tls_1_0", false, "Tls10")] + [TestCase("hello_world", false, "HelloWorld")] + [TestCase("_leading", false, "Leading")] + [TestCase("trailing_", false, "Trailing")] + [TestCase("UPPER_CASE", false, "UPPERCASE")] + [TestCase("simple", false, "Simple")] + [TestCase("", false, "")] + [TestCase(null, false, null)] + // New behavior with preserveUnderscores = true + [TestCase("Tls_1_0", true, "Tls_1_0")] + [TestCase("hello_world", true, "Hello_world")] + [TestCase("_leading", true, "_leading")] + [TestCase("trailing_", true, "Trailing_")] + [TestCase("UPPER_CASE", true, "UPPER_CASE")] + [TestCase("simple", true, "Simple")] + [TestCase("", true, "")] + [TestCase(null, true, null)] + [TestCase("TLS_1_0", true, "TLS_1_0")] + [TestCase("foo__bar", true, "Foo__bar")] + public void TestToIdentifierNamePreserveUnderscores(string name, bool preserveUnderscores, string expected) + { + var result = name.ToIdentifierName(preserveUnderscores: preserveUnderscores); + Assert.AreEqual(expected, result); + } + + // Existing behavior of ToVariableName without preserveUnderscores + [TestCase("HelloWorld", false, "helloWorld")] + [TestCase("Tls_1_0", false, "tls10")] + [TestCase("UPPER_CASE", false, "upperCASE")] + // New behavior with preserveUnderscores = true + [TestCase("HelloWorld", true, "helloWorld")] + [TestCase("Tls_1_0", true, "tls_1_0")] + [TestCase("UPPER_CASE", true, "uppeR_CASE")] + public void TestToVariableNamePreserveUnderscores(string name, bool preserveUnderscores, string expected) + { + var result = name.ToVariableName(preserveUnderscores: preserveUnderscores); + Assert.AreEqual(expected, result); + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TestData/TypeSpecInputExampleConverterTests/LoadOperationExamples/tspCodeModel.json b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TestData/TypeSpecInputExampleConverterTests/LoadOperationExamples/tspCodeModel.json index 8de71bb388c..034dc234913 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TestData/TypeSpecInputExampleConverterTests/LoadOperationExamples/tspCodeModel.json +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TestData/TypeSpecInputExampleConverterTests/LoadOperationExamples/tspCodeModel.json @@ -6080,6 +6080,14 @@ "$ref": "203" }, "value": { + "$filter": { + "$id": "2000", + "kind": "string", + "type": { + "$ref": "209" + }, + "value": "status eq 'Active'" + }, "description": { "$id": "471", "kind": "string", diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputExampleConverterTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputExampleConverterTests.cs index b7892554d22..d12d272cfcd 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputExampleConverterTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.Input/test/TypeSpecInputExampleConverterTests.cs @@ -103,6 +103,7 @@ static void AssertStorageTaskClientExample(InputClient client) { "location", "westus" }, { "properties.description", "My Storage task" }, { "properties.enabled", true }, + { "properties.$filter", "status eq 'Active'" }, { "properties.action.if.condition", "[[equals(AccessTier, 'Cool')]]" }, { "properties.action.if.operations[0].name", "SetBlobTier" }, { "properties.action.if.operations[0].onFailure", "break" }, diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CSharpGen.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CSharpGen.cs index 777c96bf558..504f9c31e15 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CSharpGen.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CSharpGen.cs @@ -32,6 +32,10 @@ public async Task ExecuteAsync() var outputPath = CodeModelGenerator.Instance.Configuration.OutputDirectory; var generatedSourceOutputPath = CodeModelGenerator.Instance.Configuration.ProjectGeneratedDirectory; + // Resolve PackageReference items from the .csproj so custom code referencing + // external NuGet types (e.g., Azure.Storage.Common) compiles correctly. + await GeneratedCodeWorkspace.AddPackageReferencesFromProject(); + GeneratedCodeWorkspace customCodeWorkspace = await GeneratedCodeWorkspace.Create(isCustomCodeProject: true); // The generated attributes need to be added into the workspace before loading the custom code. Otherwise, // Roslyn doesn't load the attributes completely and we are unable to get the attribute arguments. @@ -112,7 +116,10 @@ await customCodeWorkspace.GetCompilationAsync(), await File.WriteAllTextAsync(filename, file.Text); } - // Write project scaffolding files + // Write additional output files (e.g. configuration schemas, .targets files) + await CodeModelGenerator.Instance.WriteAdditionalFiles(outputPath); + + // Write project scaffolding files (after additional files so schema existence can be checked) if (CodeModelGenerator.Instance.IsNewProject) { await CodeModelGenerator.Instance.TypeFactory.CreateNewProjectScaffolding().Execute(); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CodeModelGenerator.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CodeModelGenerator.cs index 6fc87d7ced9..d44b2b49305 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CodeModelGenerator.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/CodeModelGenerator.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.ComponentModel.Composition; using System.Diagnostics; +using System.Threading.Tasks; using Microsoft.CodeAnalysis; using Microsoft.TypeSpec.Generator.EmitterRpc; using Microsoft.TypeSpec.Generator.Input; @@ -182,5 +183,12 @@ public void AddTypeToKeep(string typeName, bool isRoot = true) /// Whether to treat the type as a root type. Any dependencies of root types will /// not have their accessibility changed regardless of the 'unreferenced-types-handling' value. public void AddTypeToKeep(TypeProvider type, bool isRoot = true) => AddTypeToKeep(type.Type.FullyQualifiedName, isRoot); + + /// + /// Writes additional output files (e.g. configuration schemas) after the main code generation is complete. + /// Override this method to generate non-C# output files. + /// + /// The root output directory. + public virtual Task WriteAdditionalFiles(string outputPath) => Task.CompletedTask; } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Configuration.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Configuration.cs index 98169440b6f..ee171ab66c6 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Configuration.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Configuration.cs @@ -35,7 +35,8 @@ public Configuration( string packageName, bool disableXmlDocs, UnreferencedTypesHandlingOption unreferencedTypesHandling, - LicenseInfo? licenseInfo) + LicenseInfo? licenseInfo, + IReadOnlyList? pluginPaths = null) { OutputDirectory = outputPath; AdditionalConfigurationOptions = additionalConfigurationOptions; @@ -43,6 +44,7 @@ public Configuration( DisableXmlDocs = disableXmlDocs; UnreferencedTypesHandling = unreferencedTypesHandling; LicenseInfo = licenseInfo; + PluginPaths = pluginPaths; } /// @@ -53,6 +55,7 @@ private static class Options public const string PackageName = "package-name"; public const string DisableXmlDocs = "disable-xml-docs"; public const string UnreferencedTypesHandling = "unreferenced-types-handling"; + public const string Plugins = "plugins"; } /// @@ -86,6 +89,13 @@ private static class Options public string PackageName { get; } + /// + /// Gets the paths to plugin assemblies (DLLs) or directories containing plugin assemblies. + /// When specified, the generator loads plugins from these paths in addition to any + /// plugins discovered via node_modules. + /// + public IReadOnlyList? PluginPaths { get; } + /// /// True if a sample project should be generated. /// @@ -123,7 +133,8 @@ internal static Configuration Load(string outputPath, string? json = null) ReadRequiredStringOption(root, Options.PackageName), ReadOption(root, Options.DisableXmlDocs), ReadEnumOption(root, Options.UnreferencedTypesHandling), - ReadLicenseInfo(root)); + ReadLicenseInfo(root), + ReadStringArrayOption(root, Options.Plugins)); } private static LicenseInfo? ReadLicenseInfo(JsonElement root) @@ -164,6 +175,7 @@ internal static Configuration Load(string outputPath, string? json = null) Options.PackageName, Options.DisableXmlDocs, Options.UnreferencedTypesHandling, + Options.Plugins, }; private static bool ReadOption(JsonElement root, string option) @@ -191,6 +203,25 @@ private static string ReadRequiredStringOption(JsonElement root, string option) return null; } + private static IReadOnlyList? ReadStringArrayOption(JsonElement root, string option) + { + if (root.TryGetProperty(option, out JsonElement value) && value.ValueKind == JsonValueKind.Array) + { + var list = new List(); + foreach (var item in value.EnumerateArray()) + { + var str = item.GetString(); + if (!string.IsNullOrEmpty(str)) + { + list.Add(str); + } + } + return list.Count > 0 ? list : null; + } + + return null; + } + /// /// Returns the default value for the given option. /// diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/MemberExpression.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/MemberExpression.cs index d6a9be31011..ed582f3620c 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/MemberExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/MemberExpression.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; using Microsoft.TypeSpec.Generator.Statements; @@ -10,6 +11,7 @@ public sealed record MemberExpression(ValueExpression? Inner, string MemberName) { public ValueExpression? Inner { get; internal set; } = Inner; public string MemberName { get; private set; } = MemberName; + internal CodeWriterDeclaration? Declaration { get; set; } internal override void Write(CodeWriter writer) { if (Inner is not null) @@ -17,9 +19,17 @@ internal override void Write(CodeWriter writer) Inner.Write(writer); writer.AppendRaw("."); } - // workaround to avoid Roslyn reducing properties named Object to object - // Should come up with a better approach - https://github.com/microsoft/typespec/issues/4724 - writer.AppendRaw(MemberName == "Object" && Inner == null ? $"this.{MemberName}" : MemberName); + + if (Declaration is not null) + { + writer.Append(Declaration, referenceOnly: true); + } + else + { + // workaround to avoid Roslyn reducing properties named Object to object + // Should come up with a better approach - https://github.com/microsoft/typespec/issues/4724 + writer.AppendRaw(MemberName == "Object" && Inner == null ? $"this.{MemberName}" : MemberName); + } } internal override ValueExpression? Accept(LibraryVisitor visitor, MethodProvider method) diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/ValueExpression.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/ValueExpression.cs index 35de326bf4d..0e37d14cd15 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/ValueExpression.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Expressions/ValueExpression.cs @@ -126,6 +126,8 @@ public InvokeMethodExpression Invoke(string methodName, IReadOnlyList Is(ValueExpression other) => new BinaryOperatorExpression("is", this, other).As(); + public ScopedApi IsNot(ValueExpression other) => new BinaryOperatorExpression("is not", this, other).As(); + public UnaryOperatorExpression Increment() => new UnaryOperatorExpression("++", this, true); public ValueExpression AndExpr(ValueExpression other) => new BinaryOperatorExpression("and", this, other); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/PostProcessing/GeneratedCodeWorkspace.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/PostProcessing/GeneratedCodeWorkspace.cs index 6a389540e83..431b5443059 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/PostProcessing/GeneratedCodeWorkspace.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/PostProcessing/GeneratedCodeWorkspace.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using Microsoft.Build.Construction; using Microsoft.CodeAnalysis; +using MSBuildProjectCollection = Microsoft.Build.Evaluation.ProjectCollection; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Formatting; using Microsoft.CodeAnalysis.Simplification; @@ -17,6 +18,8 @@ using Microsoft.TypeSpec.Generator.Providers; using Microsoft.TypeSpec.Generator.Utilities; using NuGet.Configuration; +using NuGet.Protocol; +using NuGet.Protocol.Core.Types; namespace Microsoft.TypeSpec.Generator { @@ -280,6 +283,147 @@ public async Task PostProcessAsync() } } + /// + /// Resolves PackageReference items from the project's .csproj file and adds their assemblies + /// as metadata references so that custom code referencing external NuGet types compiles correctly. + /// + internal static async Task AddPackageReferencesFromProject() + { + var packageName = CodeModelGenerator.Instance.Configuration.PackageName; + string projectFilePath = Path.GetFullPath( + Path.Combine(CodeModelGenerator.Instance.Configuration.ProjectDirectory, $"{packageName}.csproj")); + + if (!File.Exists(projectFilePath)) + { + return; + } + + var projectRoot = ProjectRootElement.Open(projectFilePath, new MSBuildProjectCollection()); + + var nugetSettings = Settings.LoadDefaultSettings(projectFilePath); + var globalPackagesFolder = SettingsUtility.GetGlobalPackagesFolder(nugetSettings); + + // Build a set of assembly names already registered so we can skip them + var existingRefs = new HashSet( + CodeModelGenerator.Instance.AdditionalMetadataReferences + .Where(r => r.Display is not null) + .Select(r => Path.GetFileNameWithoutExtension(r.Display!)) + .Where(n => !string.IsNullOrEmpty(n)), + StringComparer.OrdinalIgnoreCase); + + foreach (var item in projectRoot.Items.Where(i => i.ItemType == "PackageReference")) + { + var refPackageName = item.Include; + + if (string.IsNullOrEmpty(refPackageName)) + { + continue; + } + + // Skip packages already added as metadata references (e.g., by a plugin) + if (existingRefs.Contains(refPackageName)) + { + continue; + } + + // Search the NuGet global packages folder for any cached version of this package. + string? resolvedAssemblyPath = FindPackageAssembly(globalPackagesFolder, refPackageName); + + // If not found in cache, download the latest version from NuGet feeds + if (resolvedAssemblyPath == null) + { + try + { + var latestVersion = await ResolveLatestPackageVersion(refPackageName, nugetSettings); + if (latestVersion != null) + { + var downloader = new NugetPackageDownloader(refPackageName, latestVersion, null, nugetSettings); + var downloadedPath = await downloader.DownloadAndInstallPackage(); + var downloadedAssembly = Path.Combine(downloadedPath, $"{refPackageName}.dll"); + if (File.Exists(downloadedAssembly)) + { + resolvedAssemblyPath = downloadedAssembly; + } + } + } + catch (Exception ex) + { + CodeModelGenerator.Instance.Emitter.Debug( + $"Could not download package {refPackageName}: {ex.Message}"); + } + } + + if (resolvedAssemblyPath != null) + { + CodeModelGenerator.Instance.AddMetadataReference( + MetadataReference.CreateFromFile(resolvedAssemblyPath)); + CodeModelGenerator.Instance.Emitter.Debug( + $"Added metadata reference: {refPackageName} from {resolvedAssemblyPath}"); + } + } + } + + /// + /// Searches the NuGet global packages folder for a package assembly across all cached versions. + /// Returns the first matching assembly found, preferring newer versions. + /// + private static string? FindPackageAssembly(string globalPackagesFolder, string packageName) + { + var packageDir = Path.Combine(globalPackagesFolder, packageName.ToLowerInvariant()); + + if (!Directory.Exists(packageDir)) + { + return null; + } + + foreach (var versionDir in Directory.GetDirectories(packageDir).OrderDescending()) + { + foreach (var tfm in NugetPackageDownloader.PreferredDotNetFrameworkVersions) + { + var assemblyPath = Path.Combine(versionDir, "lib", tfm, $"{packageName}.dll"); + if (File.Exists(assemblyPath)) + { + return assemblyPath; + } + } + } + + return null; + } + + /// + /// Queries configured NuGet feeds to resolve the latest stable version of a package. + /// + private static async Task ResolveLatestPackageVersion(string packageName, ISettings nugetSettings) + { + var sources = SettingsUtility.GetEnabledSources(nugetSettings); + using var cacheContext = new SourceCacheContext(); + foreach (var source in sources) + { + try + { + var repository = Repository.Factory.GetCoreV3(source.Source); + var resource = await repository.GetResourceAsync(); + var versions = await resource.GetAllVersionsAsync( + packageName, cacheContext, NuGet.Common.NullLogger.Instance, CancellationToken.None); + var latest = versions? + .Where(v => !v.IsPrerelease) + .OrderByDescending(v => v) + .FirstOrDefault(); + if (latest != null) + { + return latest.ToString(); + } + } + catch + { + // Skip sources that fail (auth, network, etc.) + } + } + + return null; + } + internal static async Task LoadBaselineContract() { var packageName = CodeModelGenerator.Instance.TypeFactory.PrimaryNamespace; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs index 18f58c9bf48..6658057fbf6 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/NewProjectScaffolding.cs @@ -9,12 +9,11 @@ namespace Microsoft.TypeSpec.Generator.Primitives { - //TODO Need to define the rest of the extensibility points https://github.com/microsoft/typespec/issues/4065 public class NewProjectScaffolding { public async Task Execute() { - //clean up old sln and csproj files + //clean up old sln, slnx and csproj files foreach (var file in Directory.GetFiles(CodeModelGenerator.Instance.Configuration.OutputDirectory, "*.csproj", SearchOption.AllDirectories)) { File.Delete(file); @@ -23,14 +22,29 @@ public async Task Execute() { File.Delete(file); } + foreach (var file in Directory.GetFiles(CodeModelGenerator.Instance.Configuration.OutputDirectory, "*.slnx", SearchOption.TopDirectoryOnly)) + { + File.Delete(file); + } await WriteSolutionFiles(); await WriteProjectFiles(); + await WriteAdditionalFiles(); + return true; } + /// + /// Override this method to write additional files during new project scaffolding. + /// This is called after the solution and project files have been written. + /// + protected virtual Task WriteAdditionalFiles() + { + return Task.CompletedTask; + } + private async Task WriteProjectFiles() { await File.WriteAllBytesAsync( @@ -46,7 +60,7 @@ private string NormalizeLineEndings(string content) private async Task WriteSolutionFiles() { await File.WriteAllBytesAsync( - Path.Combine(CodeModelGenerator.Instance.Configuration.OutputDirectory, $"{CodeModelGenerator.Instance.Configuration.PackageName}.sln"), + Path.Combine(CodeModelGenerator.Instance.Configuration.OutputDirectory, $"{CodeModelGenerator.Instance.Configuration.PackageName}.slnx"), Encoding.UTF8.GetBytes(NormalizeLineEndings(GetSolutionFileContent()))); } @@ -71,6 +85,15 @@ protected virtual string GetSourceProjectFileContent() builder.CompileIncludes.Add(compileInclude); } + // Add pack items for ConfigurationSchema.json and .targets file if no custom schema is defined + var packageName = CodeModelGenerator.Instance.Configuration.PackageName; + var customSchemaPath = Path.Combine(CodeModelGenerator.Instance.Configuration.OutputDirectory, "schema", "ConfigurationSchema.json"); + if (!File.Exists(customSchemaPath)) + { + builder.PackItems.Add(new CSharpProjectWriter.CSProjPackItem(@"..\Generated\schema\ConfigurationSchema.json", @"\")); + builder.PackItems.Add(new CSharpProjectWriter.CSProjPackItem($@"..\{packageName}.NuGet.targets", @"buildTransitive\netstandard2.0\" + $"{packageName}.targets")); + } + return builder.Write(); } @@ -81,64 +104,16 @@ protected virtual string GetSourceProjectFileContent() private static readonly IReadOnlyList _unbrandedDependencyPackages = new CSharpProjectWriter.CSProjDependencyPackage[] { - new("System.ClientModel", "1.9.0"), + new("System.ClientModel", "1.10.0"), }; protected virtual string GetSolutionFileContent() { - string slnContent = @"Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -"; - slnContent += @"Project(""{{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}}"") = ""{0}"", ""src\{0}.csproj"", ""{{28FF4005-4467-4E36-92E7-DEA27DEB1519}}"" -EndProject -"; - slnContent += @"Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {{B0C276D1-2930-4887-B29A-D1A33E7009A2}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {{B0C276D1-2930-4887-B29A-D1A33E7009A2}}.Debug|Any CPU.Build.0 = Debug|Any CPU - {{B0C276D1-2930-4887-B29A-D1A33E7009A2}}.Release|Any CPU.ActiveCfg = Release|Any CPU - {{B0C276D1-2930-4887-B29A-D1A33E7009A2}}.Release|Any CPU.Build.0 = Release|Any CPU - {{8E9A77AC-792A-4432-8320-ACFD46730401}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {{8E9A77AC-792A-4432-8320-ACFD46730401}}.Debug|Any CPU.Build.0 = Debug|Any CPU - {{8E9A77AC-792A-4432-8320-ACFD46730401}}.Release|Any CPU.ActiveCfg = Release|Any CPU - {{8E9A77AC-792A-4432-8320-ACFD46730401}}.Release|Any CPU.Build.0 = Release|Any CPU -"; - slnContent += @" {{A4241C1F-A53D-474C-9E4E-075054407E74}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {{A4241C1F-A53D-474C-9E4E-075054407E74}}.Debug|Any CPU.Build.0 = Debug|Any CPU - {{A4241C1F-A53D-474C-9E4E-075054407E74}}.Release|Any CPU.ActiveCfg = Release|Any CPU - {{A4241C1F-A53D-474C-9E4E-075054407E74}}.Release|Any CPU.Build.0 = Release|Any CPU - {{FA8BD3F1-8616-47B6-974C-7576CDF4717E}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {{FA8BD3F1-8616-47B6-974C-7576CDF4717E}}.Debug|Any CPU.Build.0 = Debug|Any CPU - {{FA8BD3F1-8616-47B6-974C-7576CDF4717E}}.Release|Any CPU.ActiveCfg = Release|Any CPU - {{FA8BD3F1-8616-47B6-974C-7576CDF4717E}}.Release|Any CPU.Build.0 = Release|Any CPU - {{85677AD3-C214-42FA-AE6E-49B956CAC8DC}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {{85677AD3-C214-42FA-AE6E-49B956CAC8DC}}.Debug|Any CPU.Build.0 = Debug|Any CPU - {{85677AD3-C214-42FA-AE6E-49B956CAC8DC}}.Release|Any CPU.ActiveCfg = Release|Any CPU - {{85677AD3-C214-42FA-AE6E-49B956CAC8DC}}.Release|Any CPU.Build.0 = Release|Any CPU - {{28FF4005-4467-4E36-92E7-DEA27DEB1519}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {{28FF4005-4467-4E36-92E7-DEA27DEB1519}}.Debug|Any CPU.Build.0 = Debug|Any CPU - {{28FF4005-4467-4E36-92E7-DEA27DEB1519}}.Release|Any CPU.ActiveCfg = Release|Any CPU - {{28FF4005-4467-4E36-92E7-DEA27DEB1519}}.Release|Any CPU.Build.0 = Release|Any CPU - {{1F1CD1D4-9932-4B73-99D8-C252A67D4B46}}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {{1F1CD1D4-9932-4B73-99D8-C252A67D4B46}}.Debug|Any CPU.Build.0 = Debug|Any CPU - {{1F1CD1D4-9932-4B73-99D8-C252A67D4B46}}.Release|Any CPU.ActiveCfg = Release|Any CPU - {{1F1CD1D4-9932-4B73-99D8-C252A67D4B46}}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {{A97F4B90-2591-4689-B1F8-5F21FE6D6CAE}} - EndGlobalSection -EndGlobal -"; - return string.Format(slnContent, CodeModelGenerator.Instance.Configuration.PackageName); + return string.Format( + @" + + +", CodeModelGenerator.Instance.Configuration.PackageName); } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/PropertyWireInformation.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/PropertyWireInformation.cs index b7a2e85b87a..603686c1c73 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/PropertyWireInformation.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Primitives/PropertyWireInformation.cs @@ -34,7 +34,7 @@ public PropertyWireInformation(SerializationFormat serializationFormat, bool isR /// /// The input model property. internal PropertyWireInformation(InputProperty inputProperty) - : base(CodeModelGenerator.Instance.TypeFactory.GetSerializationFormat(inputProperty.Type), inputProperty.SerializedName) + : base(CodeModelGenerator.Instance.TypeFactory.GetSerializationFormat(inputProperty), inputProperty.SerializedName) // TODO -- this is only temporary because we do not support other type of serialization, improvement tracking https://github.com/microsoft/typespec/issues/5861 { InputModelProperty? modelProperty = inputProperty as InputModelProperty; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ApiVersionEnumProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ApiVersionEnumProvider.cs index 76f41c1e6f4..8bb38365343 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ApiVersionEnumProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ApiVersionEnumProvider.cs @@ -7,6 +7,7 @@ using System.Linq; using Microsoft.TypeSpec.Generator.Expressions; using Microsoft.TypeSpec.Generator.Input; +using Microsoft.TypeSpec.Generator.Input.Extensions; using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Shared; using Microsoft.TypeSpec.Generator.Utilities; @@ -38,7 +39,15 @@ protected override string BuildName() var serviceNamespace = _inputEnum.Namespace; if (!string.IsNullOrEmpty(serviceNamespace)) { - return ClientHelper.BuildNameForService(serviceNamespace, ServicePrefix, VersionSuffix); + if (!ClientHelper.HasLastSegmentCollision(serviceNamespace, _inputEnum, apiVersionEnums)) + { + // No collision in the last segment — use BuildNameForService with the last segment. + return ClientHelper.BuildNameForService(serviceNamespace, string.Empty, ApiVersionEnumName); + } + + // Last segment collides — find the shortest unique namespace suffix. + string uniquePrefix = ClientHelper.GetShortestUniqueNamespacePrefix(serviceNamespace, _inputEnum, apiVersionEnums); + return $"{uniquePrefix.ToIdentifierName()}{VersionSuffix}"; } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/FieldProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/FieldProvider.cs index c76b632ef46..cb411d1d53f 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/FieldProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/FieldProvider.cs @@ -101,6 +101,10 @@ public void Update( _variable?.Update(name: name); _asMember?.Update(memberName: name); _declaration = null; + if (_asMember != null) + { + _asMember.Declaration = Declaration; + } InitializeParameter(); } @@ -148,6 +152,6 @@ private void InitializeParameter() } private MemberExpression? _asMember; - public static implicit operator MemberExpression(FieldProvider field) => field._asMember ??= new MemberExpression(null, field.Name); + public static implicit operator MemberExpression(FieldProvider field) => field._asMember ??= new MemberExpression(null, field.Name) { Declaration = field.Declaration }; } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/PropertyProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/PropertyProvider.cs index d6ffb0fa6ed..a7cd7e1a6cc 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/PropertyProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/PropertyProvider.cs @@ -92,7 +92,7 @@ private PropertyProvider(InputProperty inputProperty, CSharpType propertyType, T } EnclosingType = enclosingType; - _serializationFormat = GetSerializationFormat(inputProperty); + _serializationFormat = CodeModelGenerator.Instance.TypeFactory.GetSerializationFormat(inputProperty); _isRequiredNonNullableConstant = inputProperty.IsRequired && propertyType is { IsLiteral: true, IsNullable: false }; var propHasSetter = PropertyHasSetter(propertyType, inputProperty); MethodSignatureModifiers setterModifier = propHasSetter ? MethodSignatureModifiers.Public : MethodSignatureModifiers.None; @@ -101,9 +101,10 @@ private PropertyProvider(InputProperty inputProperty, CSharpType propertyType, T IsDiscriminator = IsDiscriminatorProperty(inputProperty); var hasOutputUsage = inputProperty.EnclosingType?.Usage.HasFlag(InputModelTypeUsage.Output) ?? false; Modifiers = IsDiscriminator || (!hasOutputUsage && _isRequiredNonNullableConstant) ? MethodSignatureModifiers.Internal : MethodSignatureModifiers.Public; - Name = inputProperty.Name == enclosingType.Name - ? $"{inputProperty.Name.ToIdentifierName()}Property" - : inputProperty.Name.ToIdentifierName(); + var identifierName = inputProperty.Name.ToIdentifierName(); + Name = identifierName == enclosingType.Name + ? $"{identifierName}Property" + : identifierName; Body = new AutoPropertyBody(propHasSetter, setterModifier, GetPropertyInitializationValue(propertyType, inputProperty)); WireInfo = new PropertyWireInformation(inputProperty); @@ -335,21 +336,5 @@ public void Update( BuildDocs(); } } - - private SerializationFormat GetSerializationFormat(InputProperty inputProperty) - { - // Handle array encoding from InputModelProperty - if (inputProperty is InputModelProperty modelProperty && - inputProperty.Type is InputArrayType) - { - var arrayEncoding = modelProperty.Encode; - if (arrayEncoding.HasValue) - { - return arrayEncoding.Value.ToSerializationFormat(); - } - } - - return CodeModelGenerator.Instance.TypeFactory.GetSerializationFormat(inputProperty.Type); - } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Shared/ClientHelper.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Shared/ClientHelper.cs index 527959086ec..7430554896a 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Shared/ClientHelper.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Shared/ClientHelper.cs @@ -2,6 +2,9 @@ // Licensed under the MIT License. using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.TypeSpec.Generator.Input; namespace Microsoft.TypeSpec.Generator.Shared { @@ -35,5 +38,81 @@ public static string BuildNameForService(string serviceName, string prefix, stri (false, false) => $"{prefix}{lastNamespaceSegment}{suffix}" }; } + + /// + /// Extracts the last segment of a dotted namespace. + /// + /// The full namespace (e.g., "Sample.KeyVault"). + /// The last segment (e.g., "KeyVault"), or the input if there is no dot. + public static string GetLastNamespaceSegment(string ns) + { + int lastDot = ns.LastIndexOf('.'); + return lastDot >= 0 ? ns.Substring(lastDot + 1) : ns; + } + + /// + /// Determines whether the last namespace segment of the given service namespace + /// collides with any other enum's last namespace segment in the collection. + /// + /// The namespace to check for collisions. + /// The current enum to exclude from the comparison. + /// All API version enums to compare against. + /// True if another enum has the same last namespace segment. + public static bool HasLastSegmentCollision(string serviceNamespace, InputEnumType currentEnum, IEnumerable apiVersionEnums) + { + var lastSegment = GetLastNamespaceSegment(serviceNamespace); + return apiVersionEnums.Any(e => + e != currentEnum && + !string.IsNullOrEmpty(e.Namespace) && + string.Equals(GetLastNamespaceSegment(e.Namespace), lastSegment, StringComparison.OrdinalIgnoreCase)); + } + + /// + /// Finds the shortest unique namespace suffix for the given enum among all API version enums, + /// by progressively adding segments from right to left until the suffix is unique. + /// If all segments are exhausted and the suffix is still not unique (same namespace), + /// the enum's input name is appended for disambiguation. + /// + /// The full namespace of the current enum. + /// The current enum to exclude from the comparison. + /// All API version enums to compare against. + /// + /// The shortest unique namespace suffix string (e.g., "ServiceOne.Tests" from "Azure.ServiceOne.Tests"), + /// or the full namespace plus the enum's input name if the namespace itself is not unique. + /// + public static string GetShortestUniqueNamespacePrefix(string serviceNamespace, InputEnumType currentEnum, IEnumerable apiVersionEnums) + { + var otherNamespaces = apiVersionEnums + .Where(e => e != currentEnum && !string.IsNullOrEmpty(e.Namespace)) + .Select(e => e.Namespace!) + .ToList(); + + string[] segments = serviceNamespace.Split('.'); + + // Start from the last segment and progressively prepend segments + for (int count = 1; count <= segments.Length; count++) + { + string candidate = string.Join(".", segments, segments.Length - count, count); + bool isUnique = true; + foreach (var otherNs in otherNamespaces) + { + string[] otherSegments = otherNs.Split('.'); + int otherCount = Math.Min(count, otherSegments.Length); + string otherCandidate = string.Join(".", otherSegments, otherSegments.Length - otherCount, otherCount); + if (string.Equals(candidate, otherCandidate, StringComparison.OrdinalIgnoreCase)) + { + isUnique = false; + break; + } + } + if (isUnique) + { + return candidate; + } + } + + // Full namespace still collides (identical namespaces) — append enum input name + return $"{serviceNamespace}.{currentEnum.Name}"; + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/Snippet.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/Snippet.cs index 783263be300..bfb6e7360ff 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/Snippet.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Snippets/Snippet.cs @@ -15,6 +15,7 @@ public static partial class Snippet { public static ScopedApi Equal(this ParameterProvider parameter, ValueExpression other) => new BinaryOperatorExpression("==", parameter, other).As(); public static ScopedApi Is(this ParameterProvider parameter, ValueExpression other) => new BinaryOperatorExpression("is", parameter, other).As(); + public static ScopedApi IsNot(this ParameterProvider parameter, ValueExpression other) => new BinaryOperatorExpression("is not", parameter, other).As(); public static ScopedApi As(this ParameterProvider parameter, CSharpType type) => ((ValueExpression)parameter).As(type); public static ScopedApi As(this ParameterProvider parameter) => ((ValueExpression)parameter).As(); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/CommandLineOptions.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/CommandLineOptions.cs index 4e635daa3cb..dfe6aeb1e3e 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/CommandLineOptions.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/CommandLineOptions.cs @@ -18,7 +18,7 @@ internal class CommandLineOptions private const string CmdLineOutputDirectoryOptionHelpText = "The path to the directory containing the input files to the generator including the code model file and the configuration file for the generator."; private const string CmdLineDebugOptionHelpText = "Attempt to attach the debugger on execute."; private const string CmdLineGeneratorOptionHelpText = "The name of the generator to execute."; - private const string CmdLineNewProjectOptionHelpText = "Indicates if the generator should create the project files such as csproj, sln, etc."; + private const string CmdLineNewProjectOptionHelpText = "Indicates if the generator should create the project files such as csproj, slnx, etc."; /// /// The command line option to specify the path to the directory containing the input files to the generator. diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/GeneratorHandler.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/GeneratorHandler.cs index 7c68b51533a..bee78c0034c 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/GeneratorHandler.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/StartUp/GeneratorHandler.cs @@ -5,10 +5,12 @@ using System.Collections.Generic; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Hosting; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Text.Json; +using System.Xml.Linq; using Microsoft.TypeSpec.Generator.EmitterRpc; namespace Microsoft.TypeSpec.Generator @@ -24,9 +26,13 @@ public void LoadGenerator(CommandLineOptions options) AddPluginDlls(catalog); + // Load plugins specified via the 'plugins' configuration option + var configuration = Configuration.Load(options.OutputDirectory); + AddConfiguredPluginDlls(catalog, configuration); + using CompositionContainer container = new(catalog); - container.ComposeExportedValue(new GeneratorContext(Configuration.Load(options.OutputDirectory))); + container.ComposeExportedValue(new GeneratorContext(configuration)); container.ComposeParts(this); SelectGenerator(options); @@ -34,14 +40,56 @@ public void LoadGenerator(CommandLineOptions options) private static void AddPluginDlls(AggregateCatalog catalog) { - var dllPathsInOrder = GetOrderedPluginDlls(AppContext.BaseDirectory); - if (dllPathsInOrder.Count == 0) + string? rootDirectory = FindRootDirectory(AppContext.BaseDirectory); + if (rootDirectory == null) + { + return; + } + + var packagePath = Path.Combine(rootDirectory, "package.json"); + if (!File.Exists(packagePath)) + { + return; + } + + using var doc = JsonDocument.Parse(File.ReadAllText(packagePath)); + if (!doc.RootElement.TryGetProperty("dependencies", out var deps)) { return; } + // We need to construct the emitter independently as the CodeModelGenerator is not yet initialized. using var emitter = new Emitter(Console.OpenStandardOutput()); + var packageNamesInOrder = deps.EnumerateObject().Select(p => p.Name).ToList(); + var dllPathsInOrder = new List(); + + foreach (var package in packageNamesInOrder) + { + var packageDir = Path.Combine(rootDirectory, NodeModulesDir, package); + var packageDistPath = Path.Combine(packageDir, "dist"); + + if (Directory.Exists(packageDistPath)) + { + var dlls = Directory.EnumerateFiles(packageDistPath, "*.dll", SearchOption.AllDirectories); + dllPathsInOrder.AddRange(dlls); + } + else + { + // No pre-built DLLs — look for a .csproj to build + var builtDll = BuildPluginIfNeeded(packageDir, emitter); + if (builtDll != null) + { + dllPathsInOrder.Add(builtDll); + } + } + } + + if (dllPathsInOrder.Count == 0) + { + return; + } + var highestVersions = new Dictionary(StringComparer.OrdinalIgnoreCase); foreach (var dllPath in dllPathsInOrder) { @@ -86,6 +134,167 @@ private static void AddPluginDlls(AggregateCatalog catalog) } } + /// + /// Loads plugin assemblies from directory paths specified via the 'plugins' configuration option. + /// If a directory contains a .csproj file, the project is built first to produce the plugin assembly. + /// + internal static void AddConfiguredPluginDlls(AggregateCatalog catalog, Configuration configuration) + { + var pluginPaths = configuration.PluginPaths; + if (pluginPaths == null || pluginPaths.Count == 0) + { + return; + } + + using var emitter = new Emitter(Console.OpenStandardOutput()); + + foreach (var pluginPath in pluginPaths) + { + if (string.IsNullOrEmpty(pluginPath)) + { + continue; + } + + if (!Directory.Exists(pluginPath)) + { + throw new InvalidOperationException( + $"Plugin path '{pluginPath}' is not a valid directory."); + } + + var builtDll = BuildPluginIfNeeded(pluginPath, emitter); + if (builtDll != null) + { + catalog.Catalogs.Add(new AssemblyCatalog(builtDll)); + } + else + { + // No .csproj found — scan for pre-built DLLs + foreach (var dll in Directory.EnumerateFiles(pluginPath, "*.dll")) + { + try + { + catalog.Catalogs.Add(new AssemblyCatalog(dll)); + } + catch + { + // Skip DLLs that can't be loaded as MEF catalogs (e.g. native DLLs) + } + } + } + } + } + + /// + /// Looks for a .csproj in the given directory (recursively) and builds it if found. + /// Returns the path to the built DLL, or null if no .csproj was found. + /// + internal static string? BuildPluginIfNeeded(string directory, Emitter emitter) + { + var csprojFiles = Directory.GetFiles(directory, "*.csproj", SearchOption.AllDirectories); + if (csprojFiles.Length == 0) + { + return null; + } + + return BuildPlugin(csprojFiles[0], emitter); + } + + /// + /// Builds a plugin .csproj and returns the path to the output DLL. + /// The output path is constructed from the csproj properties rather than parsing build output. + /// + internal static string? BuildPlugin(string csprojPath, Emitter emitter) + { + emitter.Info($"Building plugin: {csprojPath}"); + + var process = new Process + { + StartInfo = new ProcessStartInfo + { + FileName = "dotnet", + Arguments = $"build \"{csprojPath}\" -c Release", + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = true + } + }; + + process.Start(); + // Read both streams to avoid deadlocks, even though we only use stderr for error reporting. + process.StandardOutput.ReadToEnd(); + var stderr = process.StandardError.ReadToEnd(); + process.WaitForExit(); + + if (process.ExitCode != 0) + { + throw new InvalidOperationException( + $"Failed to build plugin '{csprojPath}'. Exit code: {process.ExitCode}\n{stderr}"); + } + + var dllPath = GetExpectedOutputPath(csprojPath); + if (dllPath != null && File.Exists(dllPath)) + { + emitter.Info($"Plugin built: {dllPath}"); + return dllPath; + } + + emitter.Info($"Warning: Build succeeded but could not determine output DLL path for '{csprojPath}'"); + return null; + } + + /// + /// Constructs the expected output DLL path from the csproj properties: + /// [ProjectDirectory]/bin/Release/[TargetFramework]/[AssemblyName].dll + /// + internal static string? GetExpectedOutputPath(string csprojPath) + { + var projectDir = Path.GetDirectoryName(csprojPath)!; + var projectName = Path.GetFileNameWithoutExtension(csprojPath); + + try + { + using var stream = File.OpenRead(csprojPath); + var doc = XDocument.Load(stream); + + var propertyGroups = doc.Descendants("PropertyGroup"); + string? targetFramework = null; + string? assemblyName = null; + + foreach (var pg in propertyGroups) + { + targetFramework ??= pg.Element("TargetFramework")?.Value; + assemblyName ??= pg.Element("AssemblyName")?.Value; + } + + // For multi-targeting projects, use the first target framework + if (string.IsNullOrEmpty(targetFramework)) + { + foreach (var pg in propertyGroups) + { + var frameworks = pg.Element("TargetFrameworks")?.Value; + if (!string.IsNullOrEmpty(frameworks)) + { + targetFramework = frameworks.Split(';', StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(); + break; + } + } + } + + if (string.IsNullOrEmpty(targetFramework)) + { + return null; + } + + var effectiveAssemblyName = string.IsNullOrEmpty(assemblyName) ? projectName : assemblyName; + return Path.Combine(projectDir, "bin", "Release", targetFramework, $"{effectiveAssemblyName}.dll"); + } + catch + { + return null; + } + } + internal static IList GetOrderedPluginDlls(string pluginDirectoryStart) { var dllPathsInOrder = new List(); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs index a6454ee6f79..c5f46a399d5 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs @@ -51,7 +51,7 @@ protected internal TypeFactory() } type = CreateCSharpTypeCore(inputType); - TypeCache.Add(inputType, type); + TypeCache[inputType] = type; return type; } @@ -385,6 +385,25 @@ or InputPrimitiveTypeKind.Int64 or InputPrimitiveTypeKind.UInt8 or InputPrimitiv _ => SerializationFormat.Default }; + /// + /// Retrieves the serialization format for a given input property. For array-typed properties + /// this checks the property-level before falling + /// back to . + /// + /// The to retrieve the serialization format for. + /// The for the input property. + internal SerializationFormat GetSerializationFormat(InputProperty inputProperty) + { + if (inputProperty is InputModelProperty modelProperty && + inputProperty.Type is InputArrayType && + modelProperty.Encode.HasValue) + { + return modelProperty.Encode.Value.ToSerializationFormat(); + } + + return GetSerializationFormat(inputProperty.Type); + } + /// /// The initialization type of list properties. This type should implement both and . /// diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CSharpProjectWriter.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CSharpProjectWriter.cs index c6cf1db6ebb..810ac06e632 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CSharpProjectWriter.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CSharpProjectWriter.cs @@ -19,6 +19,7 @@ public CSharpProjectWriter() PackageReferences = new List(); PrivatePackageReferences = new List(); CompileIncludes = new List(); + PackItems = new List(); } public CSProjProperty? Description { get; init; } @@ -61,6 +62,8 @@ public CSharpProjectWriter() public IList CompileIncludes { get; } + public IList PackItems { get; } + public string Write() { var builder = new StringBuilder(); @@ -132,6 +135,19 @@ public string Write() writer.WriteEndElement(); } + // write pack items for NuGet package + if (PackItems.Count > 0) + { + writer.Flush(); + builder.Append(NewLine); + writer.WriteStartElement("ItemGroup"); + foreach (var item in PackItems) + { + WritePackItem(writer, item); + } + writer.WriteEndElement(); + } + writer.WriteEndDocument(); writer.Close(); writer.Flush(); @@ -207,6 +223,15 @@ private void WritePackageReference(XmlWriter writer, CSProjDependencyPackage pac writer.WriteEndElement(); } + private static void WritePackItem(XmlWriter writer, CSProjPackItem item) + { + writer.WriteStartElement("None"); + writer.WriteAttributeString("Include", item.Include); + writer.WriteAttributeString("Pack", "true"); + writer.WriteAttributeString("PackagePath", item.PackagePath); + writer.WriteEndElement(); + } + public record CSProjProperty(string Value, string? Comment) { public CSProjProperty(string value) : this(value, null) @@ -220,4 +245,6 @@ public record CSProjDependencyPackage(string PackageName, string? Version) { public CSProjDependencyPackage(string packageName) : this(packageName, null) { } } + + public record CSProjPackItem(string Include, string PackagePath); } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CodeWriter.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CodeWriter.cs index f57b5435a4d..1302db936ac 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CodeWriter.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Writers/CodeWriter.cs @@ -1004,12 +1004,16 @@ public CodeScope AmbientScope() return codeWriterScope; } - internal void Append(CodeWriterDeclaration declaration) + internal void Append(CodeWriterDeclaration declaration, bool referenceOnly = false) { if (declaration.HasBeenDeclared(_scopes)) { WriteIdentifier(declaration.GetActualName(_scopes.Peek())); } + else if (referenceOnly) + { + WriteIdentifier(declaration.RequestedName); + } else { WriteDeclaration(declaration); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs index d0ca28deb43..9fef6b61194 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs @@ -253,6 +253,64 @@ public void LicenseInfoIsNullWhenNotInConfig() Assert.IsNull(licenseInfo); } + [Test] + public void PluginPaths_ParsedFromConfig() + { + var mockJson = @"{ + ""output-folder"": ""outputFolder"", + ""package-name"": ""libraryName"", + ""plugins"": [""/path/to/Plugin.dll"", ""/path/to/plugin-dir""] + }"; + + MockHelpers.LoadMockGenerator(configuration: mockJson); + var pluginPaths = CodeModelGenerator.Instance.Configuration.PluginPaths; + Assert.IsNotNull(pluginPaths); + Assert.AreEqual(2, pluginPaths!.Count); + Assert.AreEqual("/path/to/Plugin.dll", pluginPaths[0]); + Assert.AreEqual("/path/to/plugin-dir", pluginPaths[1]); + } + + [Test] + public void PluginPaths_NullWhenNotInConfig() + { + var mockJson = @"{ + ""output-folder"": ""outputFolder"", + ""package-name"": ""libraryName"" + }"; + + MockHelpers.LoadMockGenerator(configuration: mockJson); + var pluginPaths = CodeModelGenerator.Instance.Configuration.PluginPaths; + Assert.IsNull(pluginPaths); + } + + [Test] + public void PluginPaths_NullWhenEmptyArray() + { + var mockJson = @"{ + ""output-folder"": ""outputFolder"", + ""package-name"": ""libraryName"", + ""plugins"": [] + }"; + + MockHelpers.LoadMockGenerator(configuration: mockJson); + var pluginPaths = CodeModelGenerator.Instance.Configuration.PluginPaths; + Assert.IsNull(pluginPaths); + } + + [Test] + public void PluginPaths_NotInAdditionalConfigOptions() + { + var mockJson = @"{ + ""output-folder"": ""outputFolder"", + ""package-name"": ""libraryName"", + ""plugins"": [""/path/to/Plugin.dll""] + }"; + + MockHelpers.LoadMockGenerator(configuration: mockJson); + var additionalOptions = CodeModelGenerator.Instance.Configuration.AdditionalConfigurationOptions; + Assert.IsFalse(additionalOptions.ContainsKey("plugins")); + } + public static IEnumerable ParseConfigOutputFolderTestCases { get diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/GeneratedCodeWorkspaceTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/GeneratedCodeWorkspaceTests.cs index 62c2fa12635..0a75d8c9360 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/GeneratedCodeWorkspaceTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/GeneratedCodeWorkspaceTests.cs @@ -97,6 +97,245 @@ await MockHelpers.LoadMockGeneratorAsync( Assert.NotNull(fooMethod, "Foo method should be found in the SimpleType"); } + [Test] + public async Task AddPackageReferencesFromProject_AddsReferencesFromCsproj() + { + var ns = "TestNamespace"; + var nugetCacheDir = Path.Combine(_tempDirectory!, "NuGetCache"); + + // Create a fake external package assembly in the NuGet cache + var externalPkgName = "My.External.Library"; + var externalPkgVersion = "2.0.0"; + var externalPkgDir = Path.Combine( + nugetCacheDir, externalPkgName.ToLowerInvariant(), externalPkgVersion, "lib", "netstandard2.0"); + Directory.CreateDirectory(externalPkgDir); + + var externalSyntaxTree = CSharpSyntaxTree.ParseText(@" +namespace My.External.Library +{ + public class ExternalCredential { } +}"); + var externalCompilation = CSharpCompilation.Create( + externalPkgName, + [externalSyntaxTree], + [MetadataReference.CreateFromFile(typeof(object).Assembly.Location)], + new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)); + var externalDllPath = Path.Combine(externalPkgDir, $"{externalPkgName}.dll"); + var emitResult = externalCompilation.Emit(externalDllPath); + Assert.IsTrue(emitResult.Success, "Failed to emit external test assembly"); + + // Create a .csproj with a PackageReference to the external package + var csprojContent = $@" + + netstandard2.0 + + + + {externalPkgVersion} + + +"; + var csProjPath = Path.Combine(_projectDir!, "src", $"{ns}.csproj"); + File.WriteAllText(csProjPath, csprojContent); + + MockHelpers.LoadMockGenerator( + inputNamespaceName: ns, + outputPath: _projectDir, + configuration: $"{{\"package-name\": \"{ns}\"}}"); + + var refCountBefore = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + await GeneratedCodeWorkspace.AddPackageReferencesFromProject(); + var refCountAfter = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + + Assert.AreEqual(refCountBefore + 1, refCountAfter, "Should have added one metadata reference"); + } + + [Test] + public async Task AddPackageReferencesFromProject_SkipsWhenNoCsproj() + { + // Use a namespace that doesn't match any .csproj in the project dir + MockHelpers.LoadMockGenerator( + inputNamespaceName: "NonExistentNamespace", + outputPath: _projectDir, + configuration: "{\"package-name\": \"NonExistentNamespace\"}"); + + var refCountBefore = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + await GeneratedCodeWorkspace.AddPackageReferencesFromProject(); + var refCountAfter = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + + Assert.AreEqual(refCountBefore, refCountAfter, "Should not add references when no .csproj exists"); + } + + [Test] + public async Task AddPackageReferencesFromProject_SkipsPackageNotInCache() + { + var ns = "TestNamespace"; + + // Create a .csproj referencing a package that doesn't exist in + // the cache or on any NuGet feed — should gracefully skip it. + var csprojContent = @" + + netstandard2.0 + + + + 1.0.0 + + +"; + var csProjPath = Path.Combine(_projectDir!, "src", $"{ns}.csproj"); + File.WriteAllText(csProjPath, csprojContent); + + MockHelpers.LoadMockGenerator( + inputNamespaceName: ns, + outputPath: _projectDir, + configuration: $"{{\"package-name\": \"{ns}\"}}"); + + var refCountBefore = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + await GeneratedCodeWorkspace.AddPackageReferencesFromProject(); + var refCountAfter = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + + Assert.AreEqual(refCountBefore, refCountAfter, "Should not add references for packages not in cache"); + } + + [Test] + public async Task AddPackageReferencesFromProject_ResolvesPackageWithNoVersion() + { + var ns = "TestNamespace"; + var nugetCacheDir = Path.Combine(_tempDirectory!, "NuGetCache"); + + // Create a fake package in the cache (simulating a centrally managed package) + var externalPkgName = "Centrally.Managed.Package"; + CreateFakeNuGetPackage(nugetCacheDir, externalPkgName, "4.2.0"); + + // Create a .csproj with no Version on the PackageReference + var csprojContent = $@" + + netstandard2.0 + + + + +"; + File.WriteAllText(Path.Combine(_projectDir!, "src", $"{ns}.csproj"), csprojContent); + + MockHelpers.LoadMockGenerator( + inputNamespaceName: ns, + outputPath: _projectDir, + configuration: $"{{\"package-name\": \"{ns}\"}}"); + + var refCountBefore = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + await GeneratedCodeWorkspace.AddPackageReferencesFromProject(); + var refCountAfter = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + + Assert.AreEqual(refCountBefore + 1, refCountAfter, + "Should resolve package from cache even without a version (centrally managed)"); + } + + [Test] + public async Task AddPackageReferencesFromProject_SkipsAlreadyAddedReferences() + { + var ns = "TestNamespace"; + var nugetCacheDir = Path.Combine(_tempDirectory!, "NuGetCache"); + + // Create a fake external package assembly in the NuGet cache + var externalPkgName = "Already.Added.Package"; + var externalPkgVersion = "1.0.0"; + var dllPath = CreateFakeNuGetPackage(nugetCacheDir, externalPkgName, externalPkgVersion); + + // Create a .csproj referencing the package + var csprojContent = $@" + + netstandard2.0 + + + + {externalPkgVersion} + + +"; + File.WriteAllText(Path.Combine(_projectDir!, "src", $"{ns}.csproj"), csprojContent); + + MockHelpers.LoadMockGenerator( + inputNamespaceName: ns, + outputPath: _projectDir, + configuration: $"{{\"package-name\": \"{ns}\"}}"); + + // Pre-add the reference (simulating a plugin that already added it) + CodeModelGenerator.Instance.AddMetadataReference( + MetadataReference.CreateFromFile(dllPath)); + + var refCountBefore = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + await GeneratedCodeWorkspace.AddPackageReferencesFromProject(); + var refCountAfter = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + + Assert.AreEqual(refCountBefore, refCountAfter, + "Should not add duplicate reference for a package already in AdditionalMetadataReferences"); + } + + [Test] + public async Task AddPackageReferencesFromProject_AddsMultiplePackageReferences() + { + var ns = "TestNamespace"; + var nugetCacheDir = Path.Combine(_tempDirectory!, "NuGetCache"); + + // Create two fake packages in the cache + CreateFakeNuGetPackage(nugetCacheDir, "First.Package", "1.0.0"); + CreateFakeNuGetPackage(nugetCacheDir, "Second.Package", "3.5.0"); + + var csprojContent = @" + + netstandard2.0 + + + + 1.0.0 + + + 3.5.0 + + +"; + File.WriteAllText(Path.Combine(_projectDir!, "src", $"{ns}.csproj"), csprojContent); + + MockHelpers.LoadMockGenerator( + inputNamespaceName: ns, + outputPath: _projectDir, + configuration: $"{{\"package-name\": \"{ns}\"}}"); + + var refCountBefore = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + await GeneratedCodeWorkspace.AddPackageReferencesFromProject(); + var refCountAfter = CodeModelGenerator.Instance.AdditionalMetadataReferences.Count; + + Assert.AreEqual(refCountBefore + 2, refCountAfter, "Should have added two metadata references"); + } + + /// + /// Creates a fake NuGet package assembly in the given cache directory and returns the DLL path. + /// + private static string CreateFakeNuGetPackage(string nugetCacheDir, string packageName, string version) + { + var pkgDir = Path.Combine( + nugetCacheDir, packageName.ToLowerInvariant(), version, "lib", "netstandard2.0"); + Directory.CreateDirectory(pkgDir); + + var syntaxTree = CSharpSyntaxTree.ParseText($@" +namespace {packageName} +{{ + public class Placeholder {{ }} +}}"); + var compilation = CSharpCompilation.Create( + packageName, + [syntaxTree], + [MetadataReference.CreateFromFile(typeof(object).Assembly.Location)], + new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)); + + var dllPath = Path.Combine(pkgDir, $"{packageName}.dll"); + var result = compilation.Emit(dllPath); + Assert.IsTrue(result.Success, $"Failed to emit fake assembly for {packageName}"); + return dllPath; + } + private void CreateTestAssemblyAndProjectFile(string nugetCacheDir, string csProjectFileName) { var ns = csProjectFileName.StartsWith("TestNamespaceUnevaluatedFrameworkValue") diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Primitives/NewProjectScaffoldingTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Primitives/NewProjectScaffoldingTests.cs new file mode 100644 index 00000000000..76d565169e0 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Primitives/NewProjectScaffoldingTests.cs @@ -0,0 +1,122 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.IO; +using System.Threading.Tasks; +using Microsoft.TypeSpec.Generator.Primitives; +using NUnit.Framework; + +namespace Microsoft.TypeSpec.Generator.Tests.Primitives +{ + internal class NewProjectScaffoldingTests + { + private string _outputDir = null!; + + [SetUp] + public void SetUp() + { + _outputDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + Directory.CreateDirectory(_outputDir); + Directory.CreateDirectory(Path.Combine(_outputDir, "src")); + + MockHelpers.LoadMockGenerator( + outputPath: _outputDir, + configuration: "{\"package-name\": \"TestPackage\"}"); + } + + [TearDown] + public void TearDown() + { + if (Directory.Exists(_outputDir)) + { + Directory.Delete(_outputDir, true); + } + } + + [Test] + public async Task Execute_WritesSlnxAndCsprojFiles() + { + var scaffolding = new NewProjectScaffolding(); + var result = await scaffolding.Execute(); + + Assert.IsTrue(result); + Assert.IsTrue(File.Exists(Path.Combine(_outputDir, "TestPackage.slnx"))); + Assert.IsTrue(File.Exists(Path.Combine(_outputDir, "src", "TestPackage.csproj"))); + } + + [Test] + public async Task Execute_CleansUpOldSlnFiles() + { + // Create old .sln file + var oldSlnPath = Path.Combine(_outputDir, "OldProject.sln"); + await File.WriteAllTextAsync(oldSlnPath, "old content"); + + var scaffolding = new NewProjectScaffolding(); + await scaffolding.Execute(); + + Assert.IsFalse(File.Exists(oldSlnPath)); + } + + [Test] + public async Task Execute_CleansUpOldSlnxFiles() + { + // Create old .slnx file + var oldSlnxPath = Path.Combine(_outputDir, "OldProject.slnx"); + await File.WriteAllTextAsync(oldSlnxPath, "old content"); + + var scaffolding = new NewProjectScaffolding(); + await scaffolding.Execute(); + + Assert.IsFalse(File.Exists(oldSlnxPath)); + } + + [Test] + public async Task Execute_CallsWriteAdditionalFiles() + { + var scaffolding = new TestScaffolding(); + var result = await scaffolding.Execute(); + + Assert.IsTrue(result); + Assert.IsTrue(scaffolding.WriteAdditionalFilesCalled); + } + + [Test] + public async Task WriteAdditionalFiles_CanEmitCustomFiles() + { + var ciYmlPath = Path.Combine(_outputDir, "ci.yml"); + var scaffolding = new FileWritingScaffolding(ciYmlPath, "name: CI"); + await scaffolding.Execute(); + + Assert.IsTrue(File.Exists(ciYmlPath)); + Assert.AreEqual("name: CI", await File.ReadAllTextAsync(ciYmlPath)); + } + + private class TestScaffolding : NewProjectScaffolding + { + public bool WriteAdditionalFilesCalled { get; private set; } + + protected override Task WriteAdditionalFiles() + { + WriteAdditionalFilesCalled = true; + return Task.CompletedTask; + } + } + + private class FileWritingScaffolding : NewProjectScaffolding + { + private readonly string _filePath; + private readonly string _content; + + public FileWritingScaffolding(string filePath, string content) + { + _filePath = filePath; + _content = content; + } + + protected override async Task WriteAdditionalFiles() + { + await File.WriteAllTextAsync(_filePath, _content); + } + } + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/ApiVersionEnumProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/ApiVersionEnumProviderTests.cs index 548e71f06a2..a26619bceb3 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/ApiVersionEnumProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/ApiVersionEnumProviderTests.cs @@ -3,6 +3,7 @@ using System.Linq; using Microsoft.TypeSpec.Generator.Input; +using Microsoft.TypeSpec.Generator.Primitives; using Microsoft.TypeSpec.Generator.Providers; using Microsoft.TypeSpec.Generator.Tests.Common; using NUnit.Framework; @@ -178,9 +179,9 @@ public void MultiServiceClient_WithMultipleApiVersionEnums_GeneratesCorrectEnumN Assert.IsTrue(storageEnumType is ApiVersionEnumProvider); var storageProvider = (ApiVersionEnumProvider)storageEnumType; - // Verify enum names follow the multiservice naming pattern: Service{ServiceName}Version - Assert.AreEqual("ServiceKeyVaultVersion", keyVaultProvider.Name); - Assert.AreEqual("ServiceStorageVersion", storageProvider.Name); + // Verify enum names use BuildNameForService when there are no collisions + Assert.AreEqual("KeyVaultServiceVersion", keyVaultProvider.Name); + Assert.AreEqual("StorageServiceVersion", storageProvider.Name); } [Test] @@ -211,5 +212,53 @@ public void MultiServiceClient_WithOneApiVersionEnums_GeneratesCorrectEnumNames( // Verify enum names follow the multiservice naming pattern: Service{ServiceName}Version Assert.AreEqual("ServiceVersion", keyVaultProvider.Name); } + + [Test] + public void MultiServiceClient_WithCollidingLastSegments_UsesShortestUniquePrefix() + { + // When two services have different full namespaces but the same last segment, + // the shortest unique namespace suffix should be used to avoid collisions. + var serviceOneEnum = InputFactory.StringEnum( + "ServiceOneVersion", + [("1.0", "1.0"), ("2.0", "2.0")], + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.ServiceOne.Tests"); + var serviceTwoEnum = InputFactory.StringEnum( + "ServiceTwoVersion", + [("3.0", "3.0"), ("4.0", "4.0")], + usage: InputModelTypeUsage.ApiVersionEnum, + clientNamespace: "Azure.ServiceTwo.Tests"); + + var client = InputFactory.Client("TestClient", isMultiServiceClient: true); + + MockHelpers.LoadMockGenerator( + inputEnumTypes: [serviceOneEnum, serviceTwoEnum], + inputClients: [client]); + + var mockDeclaringType = new Mock(); + mockDeclaringType.Protected().Setup("BuildName").Returns("TestClientOptions"); + mockDeclaringType.Protected().Setup("BuildNamespace").Returns("Azure"); + + var serviceOneEnumType = EnumProvider.Create(serviceOneEnum, mockDeclaringType.Object); + Assert.IsTrue(serviceOneEnumType is ApiVersionEnumProvider); + var serviceOneProvider = (ApiVersionEnumProvider)serviceOneEnumType; + + var serviceTwoEnumType = EnumProvider.Create(serviceTwoEnum, mockDeclaringType.Object); + Assert.IsTrue(serviceTwoEnumType is ApiVersionEnumProvider); + var serviceTwoProvider = (ApiVersionEnumProvider)serviceTwoEnumType; + + // Verify enum names use the shortest unique namespace suffix (2 segments: ServiceOne.Tests) + Assert.AreEqual("ServiceOneTestsVersion", serviceOneProvider.Name); + Assert.AreEqual("ServiceTwoTestsVersion", serviceTwoProvider.Name); + + // Validate generated output + var writerOne = new TypeProviderWriter(serviceOneProvider); + var fileOne = writerOne.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile("ServiceOne"), fileOne.Content); + + var writerTwo = new TypeProviderWriter(serviceTwoProvider); + var fileTwo = writerTwo.Write(); + Assert.AreEqual(Helpers.GetExpectedFromFile("ServiceTwo"), fileTwo.Content); + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/TestData/ApiVersionEnumProviderTests/MultiServiceClient_WithCollidingLastSegments_UsesShortestUniquePrefix(ServiceOne).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/TestData/ApiVersionEnumProviderTests/MultiServiceClient_WithCollidingLastSegments_UsesShortestUniquePrefix(ServiceOne).cs new file mode 100644 index 00000000000..574d744733f --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/TestData/ApiVersionEnumProviderTests/MultiServiceClient_WithCollidingLastSegments_UsesShortestUniquePrefix(ServiceOne).cs @@ -0,0 +1,12 @@ +// + +#nullable disable + +namespace Azure.ServiceOne.Tests +{ + public enum ServiceOneTestsVersion + { + V1_0 = 1, + V2_0 = 2 + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/TestData/ApiVersionEnumProviderTests/MultiServiceClient_WithCollidingLastSegments_UsesShortestUniquePrefix(ServiceTwo).cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/TestData/ApiVersionEnumProviderTests/MultiServiceClient_WithCollidingLastSegments_UsesShortestUniquePrefix(ServiceTwo).cs new file mode 100644 index 00000000000..7c2c401c0ce --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/EnumProviders/TestData/ApiVersionEnumProviderTests/MultiServiceClient_WithCollidingLastSegments_UsesShortestUniquePrefix(ServiceTwo).cs @@ -0,0 +1,12 @@ +// + +#nullable disable + +namespace Azure.ServiceTwo.Tests +{ + public enum ServiceTwoTestsVersion + { + V3_0 = 1, + V4_0 = 2 + } +} diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/PropertyProviderTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/PropertyProviderTests.cs index a8abb739b69..cb95a6cb497 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/PropertyProviderTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Providers/PropertyProviderTests.cs @@ -129,6 +129,17 @@ public void TestSpecialWords() Assert.AreEqual(inputPropertyName.ToIdentifierName() + "Property", property.Name); } + [Test] + public void TestPropertyNameConflictsWithTypeNameAfterPascalCase() + { + var testTypeProvider = new TestTypeProvider(name: "Filter"); + InputModelProperty inputModelProperty = InputFactory.Property("filter", InputPrimitiveType.String); + InputFactory.Model("Filter", properties: [inputModelProperty]); + + var property = new PropertyProvider(inputModelProperty, testTypeProvider); + Assert.AreEqual("FilterProperty", property.Name); + } + [Test] public void CanUpdatePropertyProvider() { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/StartUp/GeneratorHandlerTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/StartUp/GeneratorHandlerTests.cs index 45f98adace2..18589224bdf 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/StartUp/GeneratorHandlerTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/StartUp/GeneratorHandlerTests.cs @@ -7,6 +7,7 @@ using System.ComponentModel.Composition.Hosting; using System.IO; using System.Linq; +using Microsoft.TypeSpec.Generator.EmitterRpc; using Moq; using NUnit.Framework; @@ -184,5 +185,423 @@ public void GetOrderedPluginDlls() File.Delete(Path.Combine(plugin2Directory, "Plugin2.dll")); } } + + [Test] + public void BuildPlugin_BuildsProjectAndReturnsDllPath() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + // Create a minimal .csproj + File.WriteAllText(Path.Combine(testDir, "TestPlugin.csproj"), @" + + net10.0 + +"); + + // Create a minimal .cs file (doesn't need to be a real plugin for the build test) + File.WriteAllText(Path.Combine(testDir, "TestPlugin.cs"), @" +namespace TestPlugin +{ + public class Dummy { } +}"); + + using var emitter = new Emitter(Stream.Null); + var result = GeneratorHandler.BuildPlugin( + Path.Combine(testDir, "TestPlugin.csproj"), + emitter); + + Assert.IsNotNull(result, "BuildPlugin should return a DLL path"); + Assert.IsTrue(result!.EndsWith("TestPlugin.dll", StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(File.Exists(result), $"Built DLL should exist at {result}"); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void BuildPlugin_ThrowsOnInvalidProject() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + // Create an invalid .csproj + File.WriteAllText(Path.Combine(testDir, "Bad.csproj"), "not valid xml"); + + using var emitter = new Emitter(Stream.Null); + + Assert.Throws(() => + GeneratorHandler.BuildPlugin( + Path.Combine(testDir, "Bad.csproj"), + emitter)); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void BuildPluginIfNeeded_ReturnsNullWhenNoCsproj() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + File.WriteAllText(Path.Combine(testDir, "readme.txt"), "no csproj here"); + + using var emitter = new Emitter(Stream.Null); + var result = GeneratorHandler.BuildPluginIfNeeded(testDir, emitter); + + Assert.IsNull(result); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void BuildPluginIfNeeded_FindsCsprojInSubdirectory() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + var srcDir = Path.Combine(testDir, "src"); + try + { + Directory.CreateDirectory(srcDir); + + File.WriteAllText(Path.Combine(srcDir, "SubPlugin.csproj"), @" + + net10.0 + +"); + + File.WriteAllText(Path.Combine(srcDir, "SubPlugin.cs"), @" +namespace SubPlugin { public class Dummy { } }"); + + using var emitter = new Emitter(Stream.Null); + var result = GeneratorHandler.BuildPluginIfNeeded(testDir, emitter); + + Assert.IsNotNull(result); + Assert.IsTrue(result!.EndsWith("SubPlugin.dll", StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(File.Exists(result)); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void BuildPlugin_OutputDllContainsCompiledType() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + File.WriteAllText(Path.Combine(testDir, "TypedPlugin.csproj"), @" + + net10.0 + +"); + + File.WriteAllText(Path.Combine(testDir, "MyType.cs"), @" +namespace TypedPlugin { public class MyType { public int Value => 42; } }"); + + using var emitter = new Emitter(Stream.Null); + var dllPath = GeneratorHandler.BuildPlugin( + Path.Combine(testDir, "TypedPlugin.csproj"), emitter); + + Assert.IsNotNull(dllPath); + var asm = System.Reflection.Assembly.LoadFrom(dllPath!); + var type = asm.GetType("TypedPlugin.MyType"); + Assert.IsNotNull(type, "Compiled assembly should contain MyType"); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void AddConfiguredPluginDlls_NoPluginPaths_DoesNothing() + { + var config = new Configuration( + Path.GetTempPath(), + new Dictionary(), + "TestPackage", + false, + Configuration.UnreferencedTypesHandlingOption.RemoveOrInternalize, + null, + pluginPaths: null); + + using var catalog = new AggregateCatalog(); + GeneratorHandler.AddConfiguredPluginDlls(catalog, config); + + Assert.AreEqual(0, catalog.Catalogs.Count); + } + + [Test] + public void AddConfiguredPluginDlls_InvalidDirectory_Throws() + { + var config = new Configuration( + Path.GetTempPath(), + new Dictionary(), + "TestPackage", + false, + Configuration.UnreferencedTypesHandlingOption.RemoveOrInternalize, + null, + pluginPaths: ["/nonexistent/path"]); + + using var catalog = new AggregateCatalog(); + + Assert.Throws(() => + GeneratorHandler.AddConfiguredPluginDlls(catalog, config)); + } + + [Test] + public void AddConfiguredPluginDlls_DirectoryWithPreBuiltDlls_LoadsThem() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + // Copy the test assembly as a pre-built plugin DLL + var testAssembly = typeof(GeneratorHandlerTests).Assembly.Location; + File.Copy(testAssembly, Path.Combine(testDir, "PreBuiltPlugin.dll")); + + var config = new Configuration( + Path.GetTempPath(), + new Dictionary(), + "TestPackage", + false, + Configuration.UnreferencedTypesHandlingOption.RemoveOrInternalize, + null, + pluginPaths: [testDir]); + + using var catalog = new AggregateCatalog(); + GeneratorHandler.AddConfiguredPluginDlls(catalog, config); + + Assert.IsTrue(catalog.Catalogs.Count > 0, "Should have loaded at least one catalog"); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void AddConfiguredPluginDlls_DirectoryWithCsproj_BuildsAndLoads() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + File.WriteAllText(Path.Combine(testDir, "AutoBuildPlugin.csproj"), @" + + net10.0 + +"); + + File.WriteAllText(Path.Combine(testDir, "Plugin.cs"), @" +namespace AutoBuildPlugin { public class Dummy { } }"); + + var config = new Configuration( + Path.GetTempPath(), + new Dictionary(), + "TestPackage", + false, + Configuration.UnreferencedTypesHandlingOption.RemoveOrInternalize, + null, + pluginPaths: [testDir]); + + using var catalog = new AggregateCatalog(); + GeneratorHandler.AddConfiguredPluginDlls(catalog, config); + + Assert.IsTrue(catalog.Catalogs.Count > 0, "Should have built and loaded the plugin"); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void AddConfiguredPluginDlls_MultiplePluginPaths() + { + var testDir1 = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + var testDir2 = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + // Plugin 1: pre-built DLL + Directory.CreateDirectory(testDir1); + var testAssembly = typeof(GeneratorHandlerTests).Assembly.Location; + File.Copy(testAssembly, Path.Combine(testDir1, "Plugin1.dll")); + + // Plugin 2: .csproj to build + Directory.CreateDirectory(testDir2); + File.WriteAllText(Path.Combine(testDir2, "Plugin2.csproj"), @" + + net10.0 + +"); + File.WriteAllText(Path.Combine(testDir2, "Plugin2.cs"), @" +namespace Plugin2 { public class Dummy { } }"); + + var config = new Configuration( + Path.GetTempPath(), + new Dictionary(), + "TestPackage", + false, + Configuration.UnreferencedTypesHandlingOption.RemoveOrInternalize, + null, + pluginPaths: [testDir1, testDir2]); + + using var catalog = new AggregateCatalog(); + GeneratorHandler.AddConfiguredPluginDlls(catalog, config); + + Assert.IsTrue(catalog.Catalogs.Count >= 2, "Should have loaded catalogs from both plugin paths"); + } + finally + { + try { Directory.Delete(testDir1, true); } catch { } + try { Directory.Delete(testDir2, true); } catch { } + } + } + [Test] + public void GetExpectedOutputPath_ConstructsPathFromCsprojProperties() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + File.WriteAllText(Path.Combine(testDir, "MyPlugin.csproj"), @" + + net10.0 + +"); + + var result = GeneratorHandler.GetExpectedOutputPath( + Path.Combine(testDir, "MyPlugin.csproj")); + + Assert.IsNotNull(result); + var expected = Path.Combine(testDir, "bin", "Release", "net10.0", "MyPlugin.dll"); + Assert.AreEqual(expected, result); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void GetExpectedOutputPath_UsesAssemblyNameWhenSpecified() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + File.WriteAllText(Path.Combine(testDir, "MyPlugin.csproj"), @" + + net10.0 + CustomName + +"); + + var result = GeneratorHandler.GetExpectedOutputPath( + Path.Combine(testDir, "MyPlugin.csproj")); + + Assert.IsNotNull(result); + var expected = Path.Combine(testDir, "bin", "Release", "net10.0", "CustomName.dll"); + Assert.AreEqual(expected, result); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void GetExpectedOutputPath_ReturnsNullWhenNoTargetFramework() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + File.WriteAllText(Path.Combine(testDir, "Bad.csproj"), @" + + +"); + + var result = GeneratorHandler.GetExpectedOutputPath( + Path.Combine(testDir, "Bad.csproj")); + + Assert.IsNull(result); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void GetExpectedOutputPath_ReturnsNullForInvalidXml() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + File.WriteAllText(Path.Combine(testDir, "Bad.csproj"), "not valid xml"); + + var result = GeneratorHandler.GetExpectedOutputPath( + Path.Combine(testDir, "Bad.csproj")); + + Assert.IsNull(result); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } + + [Test] + public void GetExpectedOutputPath_UsesFirstTargetFrameworkFromMultiTargeting() + { + var testDir = Path.Combine(Path.GetTempPath(), "typespec-test-plugin-" + Guid.NewGuid().ToString("N")[..8]); + try + { + Directory.CreateDirectory(testDir); + + File.WriteAllText(Path.Combine(testDir, "MultiTarget.csproj"), @" + + net8.0;net10.0 + +"); + + var result = GeneratorHandler.GetExpectedOutputPath( + Path.Combine(testDir, "MultiTarget.csproj")); + + Assert.IsNotNull(result); + var expected = Path.Combine(testDir, "bin", "Release", "net8.0", "MultiTarget.dll"); + Assert.AreEqual(expected, result); + } + finally + { + try { Directory.Delete(testDir, true); } catch { } + } + } } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/TypeFactoryTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/TypeFactoryTests.cs index 557d08a7a7f..174c1c24eb2 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/TypeFactoryTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/TypeFactoryTests.cs @@ -283,6 +283,30 @@ public void CreateEnum_ExtensibleEnumWithoutVisitorsOrCustomCode_ReturnsExtensib Assert.IsTrue(enumProvider!.IsExtensible); } + [Test] + public void CreateCSharpType_SelfReferencingModel_DoesNotThrow() + { + var selfRefModel = InputFactory.Model("QueryFilter"); + var isReentrant = false; + + MockHelpers.LoadMockGenerator(createCSharpTypeCore: (InputType inputType) => + { + if (inputType == selfRefModel && !isReentrant) + { + isReentrant = true; + // Simulate the re-entrant call that occurs with self-referencing models + // (e.g., QueryFilter with property and: QueryFilter[]). + // CreateCSharpTypeCore -> CreateModel -> BuildProperties -> CreateCSharpType(same model) + CodeModelGenerator.Instance.TypeFactory.CreateCSharpType(selfRefModel); + } + return typeof(object); + }); + + // Before the fix, this would throw ArgumentException: + // "An item with the same key has already been added" + Assert.DoesNotThrow(() => CodeModelGenerator.Instance.TypeFactory.CreateCSharpType(selfRefModel)); + } + /// /// Test visitor that modifies enum namespaces to end with ".Models" /// diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/CodeWriterDeclarationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/CodeWriterDeclarationTests.cs index 259c75ea069..35d1f628594 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/CodeWriterDeclarationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/CodeWriterDeclarationTests.cs @@ -168,6 +168,35 @@ public void ScopeDeclaredTwiceForMethodSignatureParam() Assert.AreEqual(Helpers.GetExpectedFromFile(), codeWriter.ToString(false)); } + [Test] + public void FieldDeduplicationUpdatesReferencesViaMemberExpression() + { + var type = new TestTypeProvider(); + var field1 = new FieldProvider(FieldModifiers.Private | FieldModifiers.ReadOnly, typeof(string), "_scope", type); + var field2 = new FieldProvider(FieldModifiers.Private | FieldModifiers.ReadOnly, typeof(string), "_scope", type); + + using var codeWriter = new CodeWriter(); + // Write both field declarations - the second should be deduped to _scope0 + codeWriter.WriteField(field1); + codeWriter.WriteField(field2); + // Write a reference to the second field via AsValueExpression (implicit MemberExpression) + field2.AsValueExpression.Write(codeWriter); + Assert.AreEqual(Helpers.GetExpectedFromFile(), codeWriter.ToString(false)); + } + + [Test] + public void FieldReferenceBeforeDeclarationUsesRequestedName() + { + var type = new TestTypeProvider(); + var field = new FieldProvider(FieldModifiers.Private | FieldModifiers.ReadOnly, typeof(string), "_token", type); + + using var codeWriter = new CodeWriter(); + // Write a reference BEFORE the field declaration — should use the original name, not create a declaration + field.AsValueExpression.Write(codeWriter); + codeWriter.WriteField(field); + Assert.AreEqual(Helpers.GetExpectedFromFile(), codeWriter.ToString(false)); + } + private Dictionary GetDeclarationScopes(CodeWriterDeclaration declaration) { var namesDictionaryField = typeof(CodeWriterDeclaration).GetField("_actualNames", BindingFlags.NonPublic | BindingFlags.Instance); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/TestData/CodeWriterDeclarationTests/FieldDeduplicationUpdatesReferencesViaMemberExpression.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/TestData/CodeWriterDeclarationTests/FieldDeduplicationUpdatesReferencesViaMemberExpression.cs new file mode 100644 index 00000000000..93797a79ad5 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/TestData/CodeWriterDeclarationTests/FieldDeduplicationUpdatesReferencesViaMemberExpression.cs @@ -0,0 +1,3 @@ +private readonly string _scope; +private readonly string _scope0; +_scope0 \ No newline at end of file diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/TestData/CodeWriterDeclarationTests/FieldReferenceBeforeDeclarationUsesRequestedName.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/TestData/CodeWriterDeclarationTests/FieldReferenceBeforeDeclarationUsesRequestedName.cs new file mode 100644 index 00000000000..69338c17a95 --- /dev/null +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/Writers/TestData/CodeWriterDeclarationTests/FieldReferenceBeforeDeclarationUsesRequestedName.cs @@ -0,0 +1 @@ +_tokenprivate readonly string _token; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs index 53c8b2228c8..2881aceeaa6 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/common/InputFactory.cs @@ -278,7 +278,8 @@ public static InputModelProperty Property( string? summary = null, string? serializedName = null, string? doc = null, - InputSerializationOptions? serializationOptions = null) + InputSerializationOptions? serializationOptions = null, + ArrayKnownEncoding? encode = null) { serializationOptions ??= new InputSerializationOptions(); return new InputModelProperty( @@ -294,7 +295,8 @@ public static InputModelProperty Property( access: null, isDiscriminator: isDiscriminator, serializedName: serializedName ?? wireName ?? name.ToVariableName(), - serializationOptions: serializationOptions); + serializationOptions: serializationOptions, + encode: encode); } public static InputHeaderParameter HeaderParameter( @@ -469,7 +471,8 @@ public static InputMethodParameter MethodParameter( string? doc = null, string? serializedName = null, InputRequestLocation location = InputRequestLocation.Body, - InputParameterScope scope = InputParameterScope.Method) + InputParameterScope scope = InputParameterScope.Method, + string? paramAlias = null) { return new InputMethodParameter( name: name, @@ -483,7 +486,10 @@ public static InputMethodParameter MethodParameter( scope: scope, access: null, location: location, - serializedName: serializedName ?? name); + serializedName: serializedName ?? name) + { + ParamAlias = paramAlias + }; } // Replace reflection with InternalsVisibleTo after fixing https://github.com/microsoft/typespec/issues/7075")] @@ -639,7 +645,7 @@ public static InputOperation Operation( bool generateConvenienceMethod = true, string? ns = null) { - return new InputOperation( + var operation = new InputOperation( name, null, "", @@ -658,6 +664,8 @@ public static InputOperation Operation( generateConvenienceMethod, name, ns); + operation.OriginalName = name; + return operation; } public static InputPagingServiceMetadata NextLinkPagingMetadata( @@ -707,7 +715,7 @@ public static InputServiceMethodResponse ServiceMethodResponse(InputType? type, private static readonly Dictionary> _childClientsCache = new(); - public static InputClient Client(string name, string clientNamespace = "Sample", string? doc = null, IEnumerable? methods = null, IEnumerable? parameters = null, InputClient? parent = null, string? crossLanguageDefinitionId = null, IEnumerable? apiVersions = null, InputClientInitializedBy initializedBy = InputClientInitializedBy.Default, bool? isMultiServiceClient = false) + public static InputClient Client(string name, string clientNamespace = "Sample", string? doc = null, IEnumerable? methods = null, IEnumerable? parameters = null, InputClient? parent = null, string? crossLanguageDefinitionId = null, IEnumerable? apiVersions = null, InputClientInitializedBy initializedBy = InputClientInitializedBy.Individually, bool? isMultiServiceClient = false) { // when this client has parent, we add the constructed client into the `children` list of the parent var clientChildren = new List(); diff --git a/packages/http-client-csharp/generator/Packages.Data.props b/packages/http-client-csharp/generator/Packages.Data.props index 3a46d074dfa..e0d387e0cfb 100644 --- a/packages/http-client-csharp/generator/Packages.Data.props +++ b/packages/http-client-csharp/generator/Packages.Data.props @@ -14,7 +14,8 @@ - - + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..94ee15dbddc --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,80 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "Notebooks": { + "type": "object", + "description": "Configuration for Notebooks.", + "properties": { + "SampleTypeSpecUrl": { + "type": "string", + "format": "uri", + "description": "Gets or sets the SampleTypeSpecUrl." + }, + "Notebook": { + "type": "string" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/sampleTypeSpecClientOptions" + } + } + }, + "Metrics": { + "type": "object", + "description": "Configuration for Metrics.", + "properties": { + "SampleTypeSpecUrl": { + "type": "string", + "format": "uri", + "description": "Gets or sets the SampleTypeSpecUrl." + }, + "MetricsNamespace": { + "type": "string" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/sampleTypeSpecClientOptions" + } + } + }, + "SampleTypeSpecClient": { + "type": "object", + "description": "Configuration for SampleTypeSpecClient.", + "properties": { + "SampleTypeSpecUrl": { + "type": "string", + "format": "uri", + "description": "Gets or sets the SampleTypeSpecUrl." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/sampleTypeSpecClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "sampleTypeSpecClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/Sample-TypeSpec.tsp b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/Sample-TypeSpec.tsp index ede0acbb6bd..05c5c0e7b26 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/Sample-TypeSpec.tsp +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/Sample-TypeSpec.tsp @@ -1 +1,29 @@ import "../../../../../../docs/samples/client/csharp/SampleService/main.tsp"; + +using TypeSpec.Http; +using Azure.ClientGenerator.Core; + +namespace SampleTypeSpec; + +// E2E example demonstrating @paramAlias with @clientInitialization. +// The client parameter "notebook" is aliased to the operation's "notebookName" path parameter, +// allowing a different parameter name in client initialization while mapping to the original +// operation parameter name on the wire. +model NotebookClientParams { + @paramAlias("notebookName") + notebook: string; +} + +@clientInitialization({ + initializedBy: InitializedBy.individually | InitializedBy.parent, + parameters: NotebookClientParams, +}) +interface Notebooks { + @doc("Get a notebook by name") + @get + @route("/notebooks/{notebookName}") + getNotebook(@path notebookName: string): { + name: string; + content: string; + }; +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.sln b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.sln deleted file mode 100644 index 4165fdf5119..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleTypeSpec", "src\SampleTypeSpec.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.slnx b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.slnx new file mode 100644 index 00000000000..7245b38d126 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/SampleTypeSpec.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Metrics.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Metrics.cs index 8e55488af08..dab61b07de2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Metrics.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Metrics.cs @@ -8,6 +8,8 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -17,6 +19,17 @@ namespace SampleTypeSpec public partial class Metrics { private readonly Uri _endpoint; + private const string AuthorizationHeader = "my-api-key"; + /// The OAuth2 flows supported by the service. + private static readonly Dictionary[] _flows = new Dictionary[] + { + new Dictionary + { + { GetTokenOptions.ScopesPropertyName, new string[] { "read" } }, + { GetTokenOptions.AuthorizationUrlPropertyName, "https://api.example.com/oauth2/authorize" }, + { GetTokenOptions.RefreshUrlPropertyName, "https://api.example.com/oauth2/refresh" } + } + }; private readonly string _metricsNamespace; /// Initializes a new instance of Metrics for mocking. @@ -38,19 +51,29 @@ internal Metrics(ClientPipeline pipeline, Uri endpoint, string metricsNamespace) /// Initializes a new instance of Metrics. /// Service endpoint. /// - /// or is null. + /// A credential used to authenticate to the service. + /// , or is null. /// is an empty string, and was expected to be non-empty. - public Metrics(Uri endpoint, string metricsNamespace) : this(endpoint, metricsNamespace, new SampleTypeSpecClientOptions()) + public Metrics(Uri endpoint, string metricsNamespace, ApiKeyCredential credential) : this(endpoint, metricsNamespace, credential, new SampleTypeSpecClientOptions()) { } /// Initializes a new instance of Metrics. /// Service endpoint. /// - /// The options for configuring the client. - /// or is null. + /// A credential provider used to authenticate to the service. + /// , or is null. /// is an empty string, and was expected to be non-empty. - public Metrics(Uri endpoint, string metricsNamespace, SampleTypeSpecClientOptions options) + public Metrics(Uri endpoint, string metricsNamespace, AuthenticationTokenProvider tokenProvider) : this(endpoint, metricsNamespace, tokenProvider, new SampleTypeSpecClientOptions()) + { + } + + /// Initializes a new instance of Metrics. + /// The authentication policy to use for pipeline creation. + /// Service endpoint. + /// + /// The options for configuring the client. + internal Metrics(AuthenticationPolicy authenticationPolicy, Uri endpoint, string metricsNamespace, SampleTypeSpecClientOptions options) { Argument.AssertNotNull(endpoint, nameof(endpoint)); Argument.AssertNotNullOrEmpty(metricsNamespace, nameof(metricsNamespace)); @@ -59,7 +82,43 @@ public Metrics(Uri endpoint, string metricsNamespace, SampleTypeSpecClientOption _endpoint = endpoint; _metricsNamespace = metricsNamespace; - Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(Metrics).Assembly) }, Array.Empty()); + if (authenticationPolicy != null) + { + Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(Metrics).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(Metrics).Assembly) }, Array.Empty()); + } + } + + /// Initializes a new instance of Metrics. + /// Service endpoint. + /// + /// A credential used to authenticate to the service. + /// The options for configuring the client. + /// , or is null. + /// is an empty string, and was expected to be non-empty. + public Metrics(Uri endpoint, string metricsNamespace, ApiKeyCredential credential, SampleTypeSpecClientOptions options) : this(ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader), endpoint, metricsNamespace, options) + { + } + + /// Initializes a new instance of Metrics. + /// Service endpoint. + /// + /// A credential provider used to authenticate to the service. + /// The options for configuring the client. + /// , or is null. + /// is an empty string, and was expected to be non-empty. + public Metrics(Uri endpoint, string metricsNamespace, AuthenticationTokenProvider tokenProvider, SampleTypeSpecClientOptions options) : this(new BearerTokenPolicy(tokenProvider, _flows), endpoint, metricsNamespace, options) + { + } + + /// Initializes a new instance of Metrics from a . + /// The settings for Metrics. + [Experimental("SCME0002")] + public Metrics(MetricsSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.SampleTypeSpecUrl, settings?.MetricsNamespace, settings?.Options) + { } /// The HTTP pipeline for sending and receiving REST requests and responses. diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/MetricsSettings.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/MetricsSettings.cs new file mode 100644 index 00000000000..ef92878a0d4 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/MetricsSettings.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace SampleTypeSpec +{ + /// Represents the settings used to configure a that can be loaded from an . + [Experimental("SCME0002")] + public partial class MetricsSettings : ClientSettings + { + /// Gets or sets the SampleTypeSpecUrl. + public Uri SampleTypeSpecUrl { get; set; } + + /// Gets or sets the MetricsNamespace. + public string MetricsNamespace { get; set; } + + /// Gets or sets the Options. + public SampleTypeSpecClientOptions Options { get; set; } + + /// Binds configuration values from the given section. + /// The configuration section. + protected override void BindCore(IConfigurationSection section) + { + if (Uri.TryCreate(section["SampleTypeSpecUrl"], UriKind.Absolute, out Uri sampleTypeSpecUrl)) + { + SampleTypeSpecUrl = sampleTypeSpecUrl; + } + string metricsNamespace = section["MetricsNamespace"]; + if (!string.IsNullOrEmpty(metricsNamespace)) + { + MetricsNamespace = metricsNamespace; + } + IConfigurationSection optionsSection = section.GetSection("Options"); + if (optionsSection.Exists()) + { + Options = new SampleTypeSpecClientOptions(optionsSection); + } + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/GetNotebookResponse.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/GetNotebookResponse.Serialization.cs new file mode 100644 index 00000000000..9c34abe0624 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/GetNotebookResponse.Serialization.cs @@ -0,0 +1,159 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Text.Json; + +namespace SampleTypeSpec +{ + /// The GetNotebookResponse. + public partial class GetNotebookResponse : IJsonModel + { + /// Initializes a new instance of for deserialization. + internal GetNotebookResponse() + { + } + + /// The data to parse. + /// The client options for reading and writing models. + protected virtual GetNotebookResponse PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) + { + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + using (JsonDocument document = JsonDocument.Parse(data, ModelSerializationExtensions.JsonDocumentOptions)) + { + return DeserializeGetNotebookResponse(document.RootElement, options); + } + default: + throw new FormatException($"The model {nameof(GetNotebookResponse)} does not support reading '{options.Format}' format."); + } + } + + /// The client options for reading and writing models. + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) + { + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + switch (format) + { + case "J": + return ModelReaderWriter.Write(this, options, SampleTypeSpecContext.Default); + default: + throw new FormatException($"The model {nameof(GetNotebookResponse)} does not support writing '{options.Format}' format."); + } + } + + /// The client options for reading and writing models. + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options); + + /// The data to parse. + /// The client options for reading and writing models. + GetNotebookResponse IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => PersistableModelCreateCore(data, options); + + /// The client options for reading and writing models. + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J"; + + /// The to deserialize the from. + public static explicit operator GetNotebookResponse(ClientResult result) + { + PipelineResponse response = result.GetRawResponse(); + using JsonDocument document = JsonDocument.Parse(response.Content, ModelSerializationExtensions.JsonDocumentOptions); + return DeserializeGetNotebookResponse(document.RootElement, ModelSerializationExtensions.WireOptions); + } + + /// The JSON writer. + /// The client options for reading and writing models. + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + writer.WriteStartObject(); + JsonModelWriteCore(writer, options); + writer.WriteEndObject(); + } + + /// The JSON writer. + /// The client options for reading and writing models. + protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) + { + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(GetNotebookResponse)} does not support writing '{format}' format."); + } + writer.WritePropertyName("name"u8); + writer.WriteStringValue(Name); + writer.WritePropertyName("content"u8); + writer.WriteStringValue(Content); + if (options.Format != "W" && _additionalBinaryDataProperties != null) + { + foreach (var item in _additionalBinaryDataProperties) + { + writer.WritePropertyName(item.Key); +#if NET6_0_OR_GREATER + writer.WriteRawValue(item.Value); +#else + using (JsonDocument document = JsonDocument.Parse(item.Value)) + { + JsonSerializer.Serialize(writer, document.RootElement); + } +#endif + } + } + } + + /// The JSON reader. + /// The client options for reading and writing models. + GetNotebookResponse IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => JsonModelCreateCore(ref reader, options); + + /// The JSON reader. + /// The client options for reading and writing models. + protected virtual GetNotebookResponse JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options) + { + string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format; + if (format != "J") + { + throw new FormatException($"The model {nameof(GetNotebookResponse)} does not support reading '{format}' format."); + } + using JsonDocument document = JsonDocument.ParseValue(ref reader); + return DeserializeGetNotebookResponse(document.RootElement, options); + } + + /// The JSON element to deserialize. + /// The client options for reading and writing models. + internal static GetNotebookResponse DeserializeGetNotebookResponse(JsonElement element, ModelReaderWriterOptions options) + { + if (element.ValueKind == JsonValueKind.Null) + { + return null; + } + string name = default; + string content = default; + IDictionary additionalBinaryDataProperties = new ChangeTrackingDictionary(); + foreach (var prop in element.EnumerateObject()) + { + if (prop.NameEquals("name"u8)) + { + name = prop.Value.GetString(); + continue; + } + if (prop.NameEquals("content"u8)) + { + content = prop.Value.GetString(); + continue; + } + if (options.Format != "W") + { + additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText())); + } + } + return new GetNotebookResponse(name, content, additionalBinaryDataProperties); + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/GetNotebookResponse.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/GetNotebookResponse.cs new file mode 100644 index 00000000000..af0f633f72a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/GetNotebookResponse.cs @@ -0,0 +1,45 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.Collections.Generic; + +namespace SampleTypeSpec +{ + /// The GetNotebookResponse. + public partial class GetNotebookResponse + { + /// Keeps track of any properties unknown to the library. + private protected readonly IDictionary _additionalBinaryDataProperties; + + /// Initializes a new instance of . + /// + /// + internal GetNotebookResponse(string name, string content) + { + Name = name; + Content = content; + } + + /// Initializes a new instance of . + /// + /// + /// Keeps track of any properties unknown to the library. + internal GetNotebookResponse(string name, string content, IDictionary additionalBinaryDataProperties) + { + Name = name; + Content = content; + _additionalBinaryDataProperties = additionalBinaryDataProperties; + } + + /// Gets the Name. + public string Name { get; } + + /// Gets the Content. + public string Content { get; } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/SampleTypeSpecContext.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/SampleTypeSpecContext.cs index bdeaf475d0a..c50862552e8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/SampleTypeSpecContext.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/SampleTypeSpecContext.cs @@ -19,6 +19,7 @@ namespace SampleTypeSpec [ModelReaderWriterBuildable(typeof(Dog))] [ModelReaderWriterBuildable(typeof(DynamicModel))] [ModelReaderWriterBuildable(typeof(Friend))] + [ModelReaderWriterBuildable(typeof(GetNotebookResponse))] [ModelReaderWriterBuildable(typeof(GetWidgetMetricsResponse))] [ModelReaderWriterBuildable(typeof(ListWithContinuationTokenHeaderResponseResponse))] [ModelReaderWriterBuildable(typeof(ListWithContinuationTokenResponse))] diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Notebooks.RestClient.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Notebooks.RestClient.cs new file mode 100644 index 00000000000..745de2d13b0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Notebooks.RestClient.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System.ClientModel.Primitives; + +namespace SampleTypeSpec +{ + /// + public partial class Notebooks + { + private static PipelineMessageClassifier _pipelineMessageClassifier200; + + private static PipelineMessageClassifier PipelineMessageClassifier200 => _pipelineMessageClassifier200 ??= PipelineMessageClassifier.Create(stackalloc ushort[] { 200 }); + + internal PipelineMessage CreateGetNotebookRequest(RequestOptions options) + { + ClientUriBuilder uri = new ClientUriBuilder(); + uri.Reset(_endpoint); + uri.AppendPath("/notebooks/", false); + uri.AppendPath(_notebook, true); + PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200); + PipelineRequest request = message.Request; + request.Headers.Set("Accept", "application/json"); + message.Apply(options); + return message; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Notebooks.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Notebooks.cs new file mode 100644 index 00000000000..27cc5179a09 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Notebooks.cs @@ -0,0 +1,179 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Threading; +using System.Threading.Tasks; + +namespace SampleTypeSpec +{ + /// The Notebooks sub-client. + public partial class Notebooks + { + private readonly Uri _endpoint; + private const string AuthorizationHeader = "my-api-key"; + /// The OAuth2 flows supported by the service. + private static readonly Dictionary[] _flows = new Dictionary[] + { + new Dictionary + { + { GetTokenOptions.ScopesPropertyName, new string[] { "read" } }, + { GetTokenOptions.AuthorizationUrlPropertyName, "https://api.example.com/oauth2/authorize" }, + { GetTokenOptions.RefreshUrlPropertyName, "https://api.example.com/oauth2/refresh" } + } + }; + private readonly string _notebook; + + /// Initializes a new instance of Notebooks for mocking. + protected Notebooks() + { + } + + /// Initializes a new instance of Notebooks. + /// The HTTP pipeline for sending and receiving REST requests and responses. + /// Service endpoint. + /// + internal Notebooks(ClientPipeline pipeline, Uri endpoint, string notebook) + { + _endpoint = endpoint; + Pipeline = pipeline; + _notebook = notebook; + } + + /// Initializes a new instance of Notebooks. + /// Service endpoint. + /// + /// A credential used to authenticate to the service. + /// , or is null. + /// is an empty string, and was expected to be non-empty. + public Notebooks(Uri endpoint, string notebook, ApiKeyCredential credential) : this(endpoint, notebook, credential, new SampleTypeSpecClientOptions()) + { + } + + /// Initializes a new instance of Notebooks. + /// Service endpoint. + /// + /// A credential provider used to authenticate to the service. + /// , or is null. + /// is an empty string, and was expected to be non-empty. + public Notebooks(Uri endpoint, string notebook, AuthenticationTokenProvider tokenProvider) : this(endpoint, notebook, tokenProvider, new SampleTypeSpecClientOptions()) + { + } + + /// Initializes a new instance of Notebooks. + /// The authentication policy to use for pipeline creation. + /// Service endpoint. + /// + /// The options for configuring the client. + internal Notebooks(AuthenticationPolicy authenticationPolicy, Uri endpoint, string notebook, SampleTypeSpecClientOptions options) + { + Argument.AssertNotNull(endpoint, nameof(endpoint)); + Argument.AssertNotNullOrEmpty(notebook, nameof(notebook)); + + options ??= new SampleTypeSpecClientOptions(); + + _endpoint = endpoint; + _notebook = notebook; + if (authenticationPolicy != null) + { + Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(Notebooks).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(Notebooks).Assembly) }, Array.Empty()); + } + } + + /// Initializes a new instance of Notebooks. + /// Service endpoint. + /// + /// A credential used to authenticate to the service. + /// The options for configuring the client. + /// , or is null. + /// is an empty string, and was expected to be non-empty. + public Notebooks(Uri endpoint, string notebook, ApiKeyCredential credential, SampleTypeSpecClientOptions options) : this(ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader), endpoint, notebook, options) + { + } + + /// Initializes a new instance of Notebooks. + /// Service endpoint. + /// + /// A credential provider used to authenticate to the service. + /// The options for configuring the client. + /// , or is null. + /// is an empty string, and was expected to be non-empty. + public Notebooks(Uri endpoint, string notebook, AuthenticationTokenProvider tokenProvider, SampleTypeSpecClientOptions options) : this(new BearerTokenPolicy(tokenProvider, _flows), endpoint, notebook, options) + { + } + + /// Initializes a new instance of Notebooks from a . + /// The settings for Notebooks. + [Experimental("SCME0002")] + public Notebooks(NotebooksSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.SampleTypeSpecUrl, settings?.Notebook, settings?.Options) + { + } + + /// The HTTP pipeline for sending and receiving REST requests and responses. + public ClientPipeline Pipeline { get; } + + /// + /// [Protocol Method] Get a notebook by name + /// + /// + /// This protocol method allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual ClientResult GetNotebook(RequestOptions options) + { + using PipelineMessage message = CreateGetNotebookRequest(options); + return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options)); + } + + /// + /// [Protocol Method] Get a notebook by name + /// + /// + /// This protocol method allows explicit creation of the request and processing of the response for advanced scenarios. + /// + /// + /// + /// The request options, which can override default behaviors of the client pipeline on a per-call basis. + /// Service returned a non-success status code. + /// The response returned from the service. + public virtual async Task GetNotebookAsync(RequestOptions options) + { + using PipelineMessage message = CreateGetNotebookRequest(options); + return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false)); + } + + /// Get a notebook by name. + /// The cancellation token that can be used to cancel the operation. + /// Service returned a non-success status code. + public virtual ClientResult GetNotebook(CancellationToken cancellationToken = default) + { + ClientResult result = GetNotebook(cancellationToken.ToRequestOptions()); + return ClientResult.FromValue((GetNotebookResponse)result, result.GetRawResponse()); + } + + /// Get a notebook by name. + /// The cancellation token that can be used to cancel the operation. + /// Service returned a non-success status code. + public virtual async Task> GetNotebookAsync(CancellationToken cancellationToken = default) + { + ClientResult result = await GetNotebookAsync(cancellationToken.ToRequestOptions()).ConfigureAwait(false); + return ClientResult.FromValue((GetNotebookResponse)result, result.GetRawResponse()); + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/NotebooksSettings.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/NotebooksSettings.cs new file mode 100644 index 00000000000..576a053e6bb --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/NotebooksSettings.cs @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace SampleTypeSpec +{ + /// Represents the settings used to configure a that can be loaded from an . + [Experimental("SCME0002")] + public partial class NotebooksSettings : ClientSettings + { + /// Gets or sets the SampleTypeSpecUrl. + public Uri SampleTypeSpecUrl { get; set; } + + /// Gets or sets the Notebook. + public string Notebook { get; set; } + + /// Gets or sets the Options. + public SampleTypeSpecClientOptions Options { get; set; } + + /// Binds configuration values from the given section. + /// The configuration section. + protected override void BindCore(IConfigurationSection section) + { + if (Uri.TryCreate(section["SampleTypeSpecUrl"], UriKind.Absolute, out Uri sampleTypeSpecUrl)) + { + SampleTypeSpecUrl = sampleTypeSpecUrl; + } + string notebook = section["Notebook"]; + if (!string.IsNullOrEmpty(notebook)) + { + Notebook = notebook; + } + IConfigurationSection optionsSection = section.GetSection("Options"); + if (optionsSection.Exists()) + { + Options = new SampleTypeSpecClientOptions(optionsSection); + } + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClient.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClient.cs index cc40aaedfa9..8d8a1d19a65 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClient.cs @@ -9,6 +9,7 @@ using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -20,13 +21,9 @@ namespace SampleTypeSpec public partial class SampleTypeSpecClient { private readonly Uri _endpoint; - /// A credential used to authenticate to the service. - private readonly ApiKeyCredential _keyCredential; private const string AuthorizationHeader = "my-api-key"; - /// A credential provider used to authenticate to the service. - private readonly AuthenticationTokenProvider _tokenProvider; /// The OAuth2 flows supported by the service. - private readonly Dictionary[] _flows = new Dictionary[] + private static readonly Dictionary[] _flows = new Dictionary[] { new Dictionary { @@ -55,39 +52,50 @@ protected SampleTypeSpecClient() } /// Initializes a new instance of SampleTypeSpecClient. + /// The authentication policy to use for pipeline creation. /// Service endpoint. - /// A credential used to authenticate to the service. /// The options for configuring the client. - /// or is null. - public SampleTypeSpecClient(Uri endpoint, ApiKeyCredential credential, SampleTypeSpecClientOptions options) + internal SampleTypeSpecClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, SampleTypeSpecClientOptions options) { Argument.AssertNotNull(endpoint, nameof(endpoint)); - Argument.AssertNotNull(credential, nameof(credential)); options ??= new SampleTypeSpecClientOptions(); _endpoint = endpoint; - _keyCredential = credential; - Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(SampleTypeSpecClient).Assembly), ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(_keyCredential, AuthorizationHeader) }, Array.Empty()); + if (authenticationPolicy != null) + { + Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(SampleTypeSpecClient).Assembly), authenticationPolicy }, Array.Empty()); + } + else + { + Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(SampleTypeSpecClient).Assembly) }, Array.Empty()); + } _apiVersion = options.Version; } + /// Initializes a new instance of SampleTypeSpecClient. + /// Service endpoint. + /// A credential used to authenticate to the service. + /// The options for configuring the client. + /// or is null. + public SampleTypeSpecClient(Uri endpoint, ApiKeyCredential credential, SampleTypeSpecClientOptions options) : this(ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader), endpoint, options) + { + } + /// Initializes a new instance of SampleTypeSpecClient. /// Service endpoint. /// A credential provider used to authenticate to the service. /// The options for configuring the client. /// or is null. - public SampleTypeSpecClient(Uri endpoint, AuthenticationTokenProvider tokenProvider, SampleTypeSpecClientOptions options) + public SampleTypeSpecClient(Uri endpoint, AuthenticationTokenProvider tokenProvider, SampleTypeSpecClientOptions options) : this(new BearerTokenPolicy(tokenProvider, _flows), endpoint, options) { - Argument.AssertNotNull(endpoint, nameof(endpoint)); - Argument.AssertNotNull(tokenProvider, nameof(tokenProvider)); - - options ??= new SampleTypeSpecClientOptions(); + } - _endpoint = endpoint; - _tokenProvider = tokenProvider; - Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { new UserAgentPolicy(typeof(SampleTypeSpecClient).Assembly), new BearerTokenPolicy(_tokenProvider, _flows) }, Array.Empty()); - _apiVersion = options.Version; + /// Initializes a new instance of SampleTypeSpecClient from a . + /// The settings for SampleTypeSpecClient. + [Experimental("SCME0002")] + public SampleTypeSpecClient(SampleTypeSpecClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.SampleTypeSpecUrl, settings?.Options) + { } /// The HTTP pipeline for sending and receiving REST requests and responses. @@ -718,7 +726,7 @@ public virtual ClientResult AnonymousBody(string name, BinaryData require Argument.AssertNotNullOrEmpty(propertyWithSpecialDocs, nameof(propertyWithSpecialDocs)); Thing spreadModel = new Thing( - default, + name, requiredUnion, "accept", requiredNullableString, @@ -769,7 +777,7 @@ public virtual async Task> AnonymousBodyAsync(string name, B Argument.AssertNotNullOrEmpty(propertyWithSpecialDocs, nameof(propertyWithSpecialDocs)); Thing spreadModel = new Thing( - default, + name, requiredUnion, "accept", requiredNullableString, @@ -1881,6 +1889,16 @@ public virtual async Task> UpdateXmlAdvancedModel return ClientResult.FromValue((XmlAdvancedModel)result, result.GetRawResponse()); } + /// Initializes a new instance of Notebooks. + /// + /// is null. + public virtual Notebooks GetNotebooksClient(string notebook) + { + Argument.AssertNotNull(notebook, nameof(notebook)); + + return new Notebooks(Pipeline, _endpoint, notebook); + } + /// Initializes a new instance of AnimalOperations. public virtual AnimalOperations GetAnimalOperationsClient() { diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClientOptions.cs index 43baf1ff90f..e26fb92bc89 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClientOptions.cs @@ -7,6 +7,8 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace SampleTypeSpec { @@ -27,6 +29,22 @@ public SampleTypeSpecClientOptions(ServiceVersion version = LatestVersion) }; } + /// Initializes a new instance of SampleTypeSpecClientOptions from configuration. + /// The configuration section. + [Experimental("SCME0002")] + internal SampleTypeSpecClientOptions(IConfigurationSection section) : base(section) + { + Version = "2024-08-16-preview"; + if (section is null || !section.Exists()) + { + return; + } + if (section["Version"] is string version) + { + Version = version; + } + } + /// Gets the Version. internal string Version { get; } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClientSettings.cs new file mode 100644 index 00000000000..ecda8d3d801 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecClientSettings.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT License. + +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace SampleTypeSpec +{ + /// Represents the settings used to configure a that can be loaded from an . + [Experimental("SCME0002")] + public partial class SampleTypeSpecClientSettings : ClientSettings + { + /// Gets or sets the SampleTypeSpecUrl. + public Uri SampleTypeSpecUrl { get; set; } + + /// Gets or sets the Options. + public SampleTypeSpecClientOptions Options { get; set; } + + /// Binds configuration values from the given section. + /// The configuration section. + protected override void BindCore(IConfigurationSection section) + { + if (Uri.TryCreate(section["SampleTypeSpecUrl"], UriKind.Absolute, out Uri sampleTypeSpecUrl)) + { + SampleTypeSpecUrl = sampleTypeSpecUrl; + } + IConfigurationSection optionsSection = section.GetSection("Options"); + if (optionsSection.Exists()) + { + Options = new SampleTypeSpecClientOptions(optionsSection); + } + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecModelFactory.cs b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecModelFactory.cs index 2438564a8c3..6df3c63a85a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecModelFactory.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/SampleTypeSpecModelFactory.cs @@ -377,6 +377,15 @@ public static XmlModelWithNamespace XmlModelWithNamespace(string foo = default) return new XmlModelWithNamespace(foo, additionalBinaryDataProperties: null); } + /// The GetNotebookResponse. + /// + /// + /// A new instance for mocking. + public static GetNotebookResponse GetNotebookResponse(string name = default, string content = default) + { + return new GetNotebookResponse(name, content, additionalBinaryDataProperties: null); + } + /// /// Base animal with discriminator /// Please note this is the abstract base class. The derived classes available for instantiation are: and . diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj index 9465df7d19f..155e2653d9d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/SampleTypeSpec.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json index 459ab161e6f..b387bdf191f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/tspCodeModel.json @@ -1743,7 +1743,7 @@ { "$id": "188", "kind": "constant", - "name": "updatePetAsAnimalContentType", + "name": "getNotebookContentType", "namespace": "", "usage": "None", "valueType": { @@ -1759,7 +1759,7 @@ { "$id": "190", "kind": "constant", - "name": "updatePetAsAnimalContentType1", + "name": "updatePetAsAnimalContentType", "namespace": "", "usage": "None", "valueType": { @@ -1775,7 +1775,7 @@ { "$id": "192", "kind": "constant", - "name": "updateDogAsAnimalContentType", + "name": "updatePetAsAnimalContentType1", "namespace": "", "usage": "None", "valueType": { @@ -1791,7 +1791,7 @@ { "$id": "194", "kind": "constant", - "name": "updateDogAsAnimalContentType1", + "name": "updateDogAsAnimalContentType", "namespace": "", "usage": "None", "valueType": { @@ -1807,7 +1807,7 @@ { "$id": "196", "kind": "constant", - "name": "updatePetAsPetContentType", + "name": "updateDogAsAnimalContentType1", "namespace": "", "usage": "None", "valueType": { @@ -1823,7 +1823,7 @@ { "$id": "198", "kind": "constant", - "name": "updatePetAsPetContentType1", + "name": "updatePetAsPetContentType", "namespace": "", "usage": "None", "valueType": { @@ -1839,7 +1839,7 @@ { "$id": "200", "kind": "constant", - "name": "updateDogAsPetContentType", + "name": "updatePetAsPetContentType1", "namespace": "", "usage": "None", "valueType": { @@ -1855,7 +1855,7 @@ { "$id": "202", "kind": "constant", - "name": "updateDogAsPetContentType1", + "name": "updateDogAsPetContentType", "namespace": "", "usage": "None", "valueType": { @@ -1871,7 +1871,7 @@ { "$id": "204", "kind": "constant", - "name": "updateDogAsDogContentType", + "name": "updateDogAsPetContentType1", "namespace": "", "usage": "None", "valueType": { @@ -1887,7 +1887,7 @@ { "$id": "206", "kind": "constant", - "name": "updateDogAsDogContentType1", + "name": "updateDogAsDogContentType", "namespace": "", "usage": "None", "valueType": { @@ -1903,7 +1903,7 @@ { "$id": "208", "kind": "constant", - "name": "getTreeContentType", + "name": "updateDogAsDogContentType1", "namespace": "", "usage": "None", "valueType": { @@ -1913,13 +1913,13 @@ "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, - "value": "application/xml", + "value": "application/json", "decorators": [] }, { "$id": "210", "kind": "constant", - "name": "GetXmlAdvancedModelResponseContentType4", + "name": "getTreeContentType", "namespace": "", "usage": "None", "valueType": { @@ -1935,7 +1935,7 @@ { "$id": "212", "kind": "constant", - "name": "getTreeAsJsonContentType", + "name": "GetXmlAdvancedModelResponseContentType4", "namespace": "", "usage": "None", "valueType": { @@ -1945,13 +1945,13 @@ "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, - "value": "application/json", + "value": "application/xml", "decorators": [] }, { "$id": "214", "kind": "constant", - "name": "GetTreeAsJsonResponseContentType", + "name": "getTreeAsJsonContentType", "namespace": "", "usage": "None", "valueType": { @@ -1967,7 +1967,7 @@ { "$id": "216", "kind": "constant", - "name": "GetXmlAdvancedModelResponseContentType5", + "name": "GetTreeAsJsonResponseContentType", "namespace": "", "usage": "None", "valueType": { @@ -1977,13 +1977,13 @@ "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, - "value": "application/xml", + "value": "application/json", "decorators": [] }, { "$id": "218", "kind": "constant", - "name": "GetXmlAdvancedModelResponseContentType6", + "name": "GetXmlAdvancedModelResponseContentType5", "namespace": "", "usage": "None", "valueType": { @@ -1999,7 +1999,7 @@ { "$id": "220", "kind": "constant", - "name": "updateTreeContentType", + "name": "GetXmlAdvancedModelResponseContentType6", "namespace": "", "usage": "None", "valueType": { @@ -2015,7 +2015,7 @@ { "$id": "222", "kind": "constant", - "name": "GetXmlAdvancedModelResponseContentType7", + "name": "updateTreeContentType", "namespace": "", "usage": "None", "valueType": { @@ -2031,7 +2031,7 @@ { "$id": "224", "kind": "constant", - "name": "GetTreeAsJsonResponseContentType1", + "name": "GetXmlAdvancedModelResponseContentType7", "namespace": "", "usage": "None", "valueType": { @@ -2041,13 +2041,13 @@ "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, - "value": "application/json", + "value": "application/xml", "decorators": [] }, { "$id": "226", "kind": "constant", - "name": "GetTreeAsJsonResponseContentType2", + "name": "GetTreeAsJsonResponseContentType1", "namespace": "", "usage": "None", "valueType": { @@ -2063,7 +2063,7 @@ { "$id": "228", "kind": "constant", - "name": "updateTreeAsJsonContentType", + "name": "GetTreeAsJsonResponseContentType2", "namespace": "", "usage": "None", "valueType": { @@ -2079,7 +2079,7 @@ { "$id": "230", "kind": "constant", - "name": "GetTreeAsJsonResponseContentType3", + "name": "updateTreeAsJsonContentType", "namespace": "", "usage": "None", "valueType": { @@ -2095,7 +2095,7 @@ { "$id": "232", "kind": "constant", - "name": "getWidgetMetricsContentType", + "name": "GetTreeAsJsonResponseContentType3", "namespace": "", "usage": "None", "valueType": { @@ -2107,11 +2107,27 @@ }, "value": "application/json", "decorators": [] + }, + { + "$id": "234", + "kind": "constant", + "name": "getWidgetMetricsContentType", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "235", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/json", + "decorators": [] } ], "models": [ { - "$id": "234", + "$id": "236", "kind": "model", "name": "Thing", "namespace": "SampleTypeSpec", @@ -2126,13 +2142,13 @@ }, "properties": [ { - "$id": "235", + "$id": "237", "kind": "property", "name": "name", "serializedName": "name", "doc": "name of the Thing", "type": { - "$id": "236", + "$id": "238", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2152,29 +2168,29 @@ "isHttpMetadata": false }, { - "$id": "237", + "$id": "239", "kind": "property", "name": "requiredUnion", "serializedName": "requiredUnion", "doc": "required Union", "type": { - "$id": "238", + "$id": "240", "kind": "union", "name": "ThingRequiredUnion", "variantTypes": [ { - "$id": "239", + "$id": "241", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, { - "$id": "240", + "$id": "242", "kind": "array", "name": "Array", "valueType": { - "$id": "241", + "$id": "243", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2184,7 +2200,7 @@ "decorators": [] }, { - "$id": "242", + "$id": "244", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -2208,7 +2224,7 @@ "isHttpMetadata": false }, { - "$id": "243", + "$id": "245", "kind": "property", "name": "requiredLiteralString", "serializedName": "requiredLiteralString", @@ -2230,16 +2246,16 @@ "isHttpMetadata": false }, { - "$id": "244", + "$id": "246", "kind": "property", "name": "requiredNullableString", "serializedName": "requiredNullableString", "doc": "required nullable string", "type": { - "$id": "245", + "$id": "247", "kind": "nullable", "type": { - "$id": "246", + "$id": "248", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2261,16 +2277,16 @@ "isHttpMetadata": false }, { - "$id": "247", + "$id": "249", "kind": "property", "name": "optionalNullableString", "serializedName": "optionalNullableString", "doc": "required optional string", "type": { - "$id": "248", + "$id": "250", "kind": "nullable", "type": { - "$id": "249", + "$id": "251", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2292,7 +2308,7 @@ "isHttpMetadata": false }, { - "$id": "250", + "$id": "252", "kind": "property", "name": "requiredLiteralInt", "serializedName": "requiredLiteralInt", @@ -2314,7 +2330,7 @@ "isHttpMetadata": false }, { - "$id": "251", + "$id": "253", "kind": "property", "name": "requiredLiteralFloat", "serializedName": "requiredLiteralFloat", @@ -2336,7 +2352,7 @@ "isHttpMetadata": false }, { - "$id": "252", + "$id": "254", "kind": "property", "name": "requiredLiteralBool", "serializedName": "requiredLiteralBool", @@ -2358,7 +2374,7 @@ "isHttpMetadata": false }, { - "$id": "253", + "$id": "255", "kind": "property", "name": "optionalLiteralString", "serializedName": "optionalLiteralString", @@ -2380,13 +2396,13 @@ "isHttpMetadata": false }, { - "$id": "254", + "$id": "256", "kind": "property", "name": "requiredNullableLiteralString", "serializedName": "requiredNullableLiteralString", "doc": "required nullable literal string", "type": { - "$id": "255", + "$id": "257", "kind": "nullable", "type": { "$ref": "5" @@ -2407,7 +2423,7 @@ "isHttpMetadata": false }, { - "$id": "256", + "$id": "258", "kind": "property", "name": "optionalLiteralInt", "serializedName": "optionalLiteralInt", @@ -2429,7 +2445,7 @@ "isHttpMetadata": false }, { - "$id": "257", + "$id": "259", "kind": "property", "name": "optionalLiteralFloat", "serializedName": "optionalLiteralFloat", @@ -2451,7 +2467,7 @@ "isHttpMetadata": false }, { - "$id": "258", + "$id": "260", "kind": "property", "name": "optionalLiteralBool", "serializedName": "optionalLiteralBool", @@ -2473,13 +2489,13 @@ "isHttpMetadata": false }, { - "$id": "259", + "$id": "261", "kind": "property", "name": "requiredBadDescription", "serializedName": "requiredBadDescription", "doc": "description with xml <|endoftext|>", "type": { - "$id": "260", + "$id": "262", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2499,20 +2515,20 @@ "isHttpMetadata": false }, { - "$id": "261", + "$id": "263", "kind": "property", "name": "optionalNullableList", "serializedName": "optionalNullableList", "doc": "optional nullable collection", "type": { - "$id": "262", + "$id": "264", "kind": "nullable", "type": { - "$id": "263", + "$id": "265", "kind": "array", "name": "Array1", "valueType": { - "$id": "264", + "$id": "266", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -2537,16 +2553,16 @@ "isHttpMetadata": false }, { - "$id": "265", + "$id": "267", "kind": "property", "name": "requiredNullableList", "serializedName": "requiredNullableList", "doc": "required nullable collection", "type": { - "$id": "266", + "$id": "268", "kind": "nullable", "type": { - "$ref": "263" + "$ref": "265" }, "namespace": "SampleTypeSpec" }, @@ -2564,13 +2580,13 @@ "isHttpMetadata": false }, { - "$id": "267", + "$id": "269", "kind": "property", "name": "propertyWithSpecialDocs", "serializedName": "propertyWithSpecialDocs", "doc": "This tests:\n- Simple bullet point. This bullet point is going to be very long to test how text wrapping is handled in bullet points within documentation comments. It should properly indent the wrapped lines.\n- Another bullet point with **bold text**. This bullet point is also intentionally long to see how the formatting is preserved when the text wraps onto multiple lines in the generated documentation.\n- Third bullet point with *italic text*. Similar to the previous points, this one is extended to ensure that the wrapping and formatting are correctly applied in the output.\n- Complex bullet point with **bold** and *italic* combined. This bullet point combines both bold and italic formatting and is long enough to test the wrapping behavior in such cases.\n- **Bold bullet point**: A bullet point that is entirely bolded. This point is also made lengthy to observe how the bold formatting is maintained across wrapped lines.\n- *Italic bullet point*: A bullet point that is entirely italicized. This final point is extended to verify that italic formatting is correctly applied even when the text spans multiple lines.", "type": { - "$id": "268", + "$id": "270", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2592,7 +2608,7 @@ ] }, { - "$id": "269", + "$id": "271", "kind": "model", "name": "RoundTripModel", "namespace": "SampleTypeSpec", @@ -2607,13 +2623,13 @@ }, "properties": [ { - "$id": "270", + "$id": "272", "kind": "property", "name": "requiredString", "serializedName": "requiredString", "doc": "Required string, illustrating a reference type property.", "type": { - "$id": "271", + "$id": "273", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2633,13 +2649,13 @@ "isHttpMetadata": false }, { - "$id": "272", + "$id": "274", "kind": "property", "name": "requiredInt", "serializedName": "requiredInt", "doc": "Required int, illustrating a value type property.", "type": { - "$id": "273", + "$id": "275", "kind": "int32", "name": "int32", "encode": "string", @@ -2660,13 +2676,13 @@ "isHttpMetadata": false }, { - "$id": "274", + "$id": "276", "kind": "property", "name": "requiredCollection", "serializedName": "requiredCollection", "doc": "Required collection of enums", "type": { - "$id": "275", + "$id": "277", "kind": "array", "name": "ArrayStringFixedEnum", "valueType": { @@ -2689,16 +2705,16 @@ "isHttpMetadata": false }, { - "$id": "276", + "$id": "278", "kind": "property", "name": "requiredDictionary", "serializedName": "requiredDictionary", "doc": "Required dictionary of enums", "type": { - "$id": "277", + "$id": "279", "kind": "dict", "keyType": { - "$id": "278", + "$id": "280", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2723,13 +2739,13 @@ "isHttpMetadata": false }, { - "$id": "279", + "$id": "281", "kind": "property", "name": "requiredModel", "serializedName": "requiredModel", "doc": "Required model", "type": { - "$ref": "234" + "$ref": "236" }, "optional": false, "readOnly": false, @@ -2745,7 +2761,7 @@ "isHttpMetadata": false }, { - "$id": "280", + "$id": "282", "kind": "property", "name": "intExtensibleEnum", "serializedName": "intExtensibleEnum", @@ -2767,13 +2783,13 @@ "isHttpMetadata": false }, { - "$id": "281", + "$id": "283", "kind": "property", "name": "intExtensibleEnumCollection", "serializedName": "intExtensibleEnumCollection", "doc": "this is a collection of int based extensible enum", "type": { - "$id": "282", + "$id": "284", "kind": "array", "name": "ArrayIntExtensibleEnum", "valueType": { @@ -2796,7 +2812,7 @@ "isHttpMetadata": false }, { - "$id": "283", + "$id": "285", "kind": "property", "name": "floatExtensibleEnum", "serializedName": "floatExtensibleEnum", @@ -2818,7 +2834,7 @@ "isHttpMetadata": false }, { - "$id": "284", + "$id": "286", "kind": "property", "name": "floatExtensibleEnumWithIntValue", "serializedName": "floatExtensibleEnumWithIntValue", @@ -2840,13 +2856,13 @@ "isHttpMetadata": false }, { - "$id": "285", + "$id": "287", "kind": "property", "name": "floatExtensibleEnumCollection", "serializedName": "floatExtensibleEnumCollection", "doc": "this is a collection of float based extensible enum", "type": { - "$id": "286", + "$id": "288", "kind": "array", "name": "ArrayFloatExtensibleEnum", "valueType": { @@ -2869,7 +2885,7 @@ "isHttpMetadata": false }, { - "$id": "287", + "$id": "289", "kind": "property", "name": "floatFixedEnum", "serializedName": "floatFixedEnum", @@ -2891,7 +2907,7 @@ "isHttpMetadata": false }, { - "$id": "288", + "$id": "290", "kind": "property", "name": "floatFixedEnumWithIntValue", "serializedName": "floatFixedEnumWithIntValue", @@ -2913,13 +2929,13 @@ "isHttpMetadata": false }, { - "$id": "289", + "$id": "291", "kind": "property", "name": "floatFixedEnumCollection", "serializedName": "floatFixedEnumCollection", "doc": "this is a collection of float based fixed enum", "type": { - "$id": "290", + "$id": "292", "kind": "array", "name": "ArrayFloatFixedEnum", "valueType": { @@ -2942,7 +2958,7 @@ "isHttpMetadata": false }, { - "$id": "291", + "$id": "293", "kind": "property", "name": "intFixedEnum", "serializedName": "intFixedEnum", @@ -2964,13 +2980,13 @@ "isHttpMetadata": false }, { - "$id": "292", + "$id": "294", "kind": "property", "name": "intFixedEnumCollection", "serializedName": "intFixedEnumCollection", "doc": "this is a collection of int based fixed enum", "type": { - "$id": "293", + "$id": "295", "kind": "array", "name": "ArrayIntFixedEnum", "valueType": { @@ -2993,7 +3009,7 @@ "isHttpMetadata": false }, { - "$id": "294", + "$id": "296", "kind": "property", "name": "stringFixedEnum", "serializedName": "stringFixedEnum", @@ -3015,13 +3031,13 @@ "isHttpMetadata": false }, { - "$id": "295", + "$id": "297", "kind": "property", "name": "requiredUnknown", "serializedName": "requiredUnknown", "doc": "required unknown", "type": { - "$id": "296", + "$id": "298", "kind": "unknown", "name": "unknown", "crossLanguageDefinitionId": "", @@ -3041,13 +3057,13 @@ "isHttpMetadata": false }, { - "$id": "297", + "$id": "299", "kind": "property", "name": "optionalUnknown", "serializedName": "optionalUnknown", "doc": "optional unknown", "type": { - "$id": "298", + "$id": "300", "kind": "unknown", "name": "unknown", "crossLanguageDefinitionId": "", @@ -3067,23 +3083,23 @@ "isHttpMetadata": false }, { - "$id": "299", + "$id": "301", "kind": "property", "name": "requiredRecordUnknown", "serializedName": "requiredRecordUnknown", "doc": "required record of unknown", "type": { - "$id": "300", + "$id": "302", "kind": "dict", "keyType": { - "$id": "301", + "$id": "303", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$id": "302", + "$id": "304", "kind": "unknown", "name": "unknown", "crossLanguageDefinitionId": "", @@ -3105,13 +3121,13 @@ "isHttpMetadata": false }, { - "$id": "303", + "$id": "305", "kind": "property", "name": "optionalRecordUnknown", "serializedName": "optionalRecordUnknown", "doc": "optional record of unknown", "type": { - "$ref": "300" + "$ref": "302" }, "optional": true, "readOnly": false, @@ -3127,13 +3143,13 @@ "isHttpMetadata": false }, { - "$id": "304", + "$id": "306", "kind": "property", "name": "readOnlyRequiredRecordUnknown", "serializedName": "readOnlyRequiredRecordUnknown", "doc": "required readonly record of unknown", "type": { - "$ref": "300" + "$ref": "302" }, "optional": false, "readOnly": true, @@ -3149,13 +3165,13 @@ "isHttpMetadata": false }, { - "$id": "305", + "$id": "307", "kind": "property", "name": "readOnlyOptionalRecordUnknown", "serializedName": "readOnlyOptionalRecordUnknown", "doc": "optional readonly record of unknown", "type": { - "$ref": "300" + "$ref": "302" }, "optional": true, "readOnly": true, @@ -3171,13 +3187,13 @@ "isHttpMetadata": false }, { - "$id": "306", + "$id": "308", "kind": "property", "name": "modelWithRequiredNullable", "serializedName": "modelWithRequiredNullable", "doc": "this is a model with required nullable properties", "type": { - "$id": "307", + "$id": "309", "kind": "model", "name": "ModelWithRequiredNullableProperties", "namespace": "SampleTypeSpec", @@ -3192,16 +3208,16 @@ }, "properties": [ { - "$id": "308", + "$id": "310", "kind": "property", "name": "requiredNullablePrimitive", "serializedName": "requiredNullablePrimitive", "doc": "required nullable primitive type", "type": { - "$id": "309", + "$id": "311", "kind": "nullable", "type": { - "$id": "310", + "$id": "312", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -3223,13 +3239,13 @@ "isHttpMetadata": false }, { - "$id": "311", + "$id": "313", "kind": "property", "name": "requiredExtensibleEnum", "serializedName": "requiredExtensibleEnum", "doc": "required nullable extensible enum type", "type": { - "$id": "312", + "$id": "314", "kind": "nullable", "type": { "$ref": "22" @@ -3250,13 +3266,13 @@ "isHttpMetadata": false }, { - "$id": "313", + "$id": "315", "kind": "property", "name": "requiredFixedEnum", "serializedName": "requiredFixedEnum", "doc": "required nullable fixed enum type", "type": { - "$id": "314", + "$id": "316", "kind": "nullable", "type": { "$ref": "17" @@ -3292,13 +3308,13 @@ "isHttpMetadata": false }, { - "$id": "315", + "$id": "317", "kind": "property", "name": "requiredBytes", "serializedName": "requiredBytes", "doc": "Required bytes", "type": { - "$id": "316", + "$id": "318", "kind": "bytes", "name": "bytes", "encode": "base64", @@ -3321,10 +3337,10 @@ ] }, { - "$ref": "307" + "$ref": "309" }, { - "$id": "317", + "$id": "319", "kind": "model", "name": "Wrapper", "namespace": "SampleTypeSpec", @@ -3334,12 +3350,12 @@ "serializationOptions": {}, "properties": [ { - "$id": "318", + "$id": "320", "kind": "property", "name": "p1", "doc": "header parameter", "type": { - "$id": "319", + "$id": "321", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3355,12 +3371,12 @@ "isHttpMetadata": true }, { - "$id": "320", + "$id": "322", "kind": "property", "name": "action", "doc": "body parameter", "type": { - "$ref": "269" + "$ref": "271" }, "optional": false, "readOnly": false, @@ -3372,12 +3388,12 @@ "isHttpMetadata": false }, { - "$id": "321", + "$id": "323", "kind": "property", "name": "p2", "doc": "path parameter", "type": { - "$id": "322", + "$id": "324", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3395,7 +3411,7 @@ ] }, { - "$id": "323", + "$id": "325", "kind": "model", "name": "Friend", "namespace": "SampleTypeSpec", @@ -3410,13 +3426,13 @@ }, "properties": [ { - "$id": "324", + "$id": "326", "kind": "property", "name": "name", "serializedName": "name", "doc": "name of the NotFriend", "type": { - "$id": "325", + "$id": "327", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3438,7 +3454,7 @@ ] }, { - "$id": "326", + "$id": "328", "kind": "model", "name": "RenamedModel", "namespace": "SampleTypeSpec", @@ -3453,13 +3469,13 @@ }, "properties": [ { - "$id": "327", + "$id": "329", "kind": "property", "name": "otherName", "serializedName": "otherName", "doc": "name of the ModelWithClientName", "type": { - "$id": "328", + "$id": "330", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3481,7 +3497,7 @@ ] }, { - "$id": "329", + "$id": "331", "kind": "model", "name": "ReturnsAnonymousModelResponse", "namespace": "SampleTypeSpec", @@ -3496,7 +3512,7 @@ "properties": [] }, { - "$id": "330", + "$id": "332", "kind": "model", "name": "ListWithNextLinkResponse", "namespace": "SampleTypeSpec", @@ -3510,16 +3526,16 @@ }, "properties": [ { - "$id": "331", + "$id": "333", "kind": "property", "name": "things", "serializedName": "things", "type": { - "$id": "332", + "$id": "334", "kind": "array", "name": "ArrayThing", "valueType": { - "$ref": "234" + "$ref": "236" }, "crossLanguageDefinitionId": "TypeSpec.Array", "decorators": [] @@ -3538,12 +3554,12 @@ "isHttpMetadata": false }, { - "$id": "333", + "$id": "335", "kind": "property", "name": "next", "serializedName": "next", "type": { - "$id": "334", + "$id": "336", "kind": "url", "name": "url", "crossLanguageDefinitionId": "TypeSpec.url", @@ -3565,7 +3581,7 @@ ] }, { - "$id": "335", + "$id": "337", "kind": "model", "name": "ListWithStringNextLinkResponse", "namespace": "SampleTypeSpec", @@ -3579,12 +3595,12 @@ }, "properties": [ { - "$id": "336", + "$id": "338", "kind": "property", "name": "things", "serializedName": "things", "type": { - "$ref": "332" + "$ref": "334" }, "optional": false, "readOnly": false, @@ -3600,12 +3616,12 @@ "isHttpMetadata": false }, { - "$id": "337", + "$id": "339", "kind": "property", "name": "next", "serializedName": "next", "type": { - "$id": "338", + "$id": "340", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3627,7 +3643,7 @@ ] }, { - "$id": "339", + "$id": "341", "kind": "model", "name": "ListWithContinuationTokenResponse", "namespace": "SampleTypeSpec", @@ -3641,12 +3657,12 @@ }, "properties": [ { - "$id": "340", + "$id": "342", "kind": "property", "name": "things", "serializedName": "things", "type": { - "$ref": "332" + "$ref": "334" }, "optional": false, "readOnly": false, @@ -3662,12 +3678,12 @@ "isHttpMetadata": false }, { - "$id": "341", + "$id": "343", "kind": "property", "name": "nextToken", "serializedName": "nextToken", "type": { - "$id": "342", + "$id": "344", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3689,7 +3705,7 @@ ] }, { - "$id": "343", + "$id": "345", "kind": "model", "name": "ListWithContinuationTokenHeaderResponseResponse", "namespace": "", @@ -3703,12 +3719,12 @@ }, "properties": [ { - "$id": "344", + "$id": "346", "kind": "property", "name": "things", "serializedName": "things", "type": { - "$ref": "332" + "$ref": "334" }, "optional": false, "readOnly": false, @@ -3726,7 +3742,7 @@ ] }, { - "$id": "345", + "$id": "347", "kind": "model", "name": "PageThing", "namespace": "SampleTypeSpec", @@ -3740,12 +3756,12 @@ }, "properties": [ { - "$id": "346", + "$id": "348", "kind": "property", "name": "items", "serializedName": "items", "type": { - "$ref": "332" + "$ref": "334" }, "optional": false, "readOnly": false, @@ -3763,7 +3779,7 @@ ] }, { - "$id": "347", + "$id": "349", "kind": "model", "name": "ModelWithEmbeddedNonBodyParameters", "namespace": "SampleTypeSpec", @@ -3777,13 +3793,13 @@ }, "properties": [ { - "$id": "348", + "$id": "350", "kind": "property", "name": "name", "serializedName": "name", "doc": "name of the ModelWithEmbeddedNonBodyParameters", "type": { - "$id": "349", + "$id": "351", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3803,13 +3819,13 @@ "isHttpMetadata": false }, { - "$id": "350", + "$id": "352", "kind": "property", "name": "requiredHeader", "serializedName": "requiredHeader", "doc": "required header parameter", "type": { - "$id": "351", + "$id": "353", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3829,13 +3845,13 @@ "isHttpMetadata": true }, { - "$id": "352", + "$id": "354", "kind": "property", "name": "optionalHeader", "serializedName": "optionalHeader", "doc": "optional header parameter", "type": { - "$id": "353", + "$id": "355", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3855,13 +3871,13 @@ "isHttpMetadata": true }, { - "$id": "354", + "$id": "356", "kind": "property", "name": "requiredQuery", "serializedName": "requiredQuery", "doc": "required query parameter", "type": { - "$id": "355", + "$id": "357", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3881,13 +3897,13 @@ "isHttpMetadata": true }, { - "$id": "356", + "$id": "358", "kind": "property", "name": "optionalQuery", "serializedName": "optionalQuery", "doc": "optional query parameter", "type": { - "$id": "357", + "$id": "359", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3909,7 +3925,7 @@ ] }, { - "$id": "358", + "$id": "360", "kind": "model", "name": "DynamicModel", "namespace": "SampleTypeSpec", @@ -3929,12 +3945,12 @@ }, "properties": [ { - "$id": "359", + "$id": "361", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "360", + "$id": "362", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3954,12 +3970,12 @@ "isHttpMetadata": false }, { - "$id": "361", + "$id": "363", "kind": "property", "name": "optionalUnknown", "serializedName": "optionalUnknown", "type": { - "$id": "362", + "$id": "364", "kind": "unknown", "name": "unknown", "crossLanguageDefinitionId": "", @@ -3979,12 +3995,12 @@ "isHttpMetadata": false }, { - "$id": "363", + "$id": "365", "kind": "property", "name": "optionalInt", "serializedName": "optionalInt", "type": { - "$id": "364", + "$id": "366", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -4004,15 +4020,15 @@ "isHttpMetadata": false }, { - "$id": "365", + "$id": "367", "kind": "property", "name": "optionalNullableList", "serializedName": "optionalNullableList", "type": { - "$id": "366", + "$id": "368", "kind": "nullable", "type": { - "$ref": "263" + "$ref": "265" }, "namespace": "SampleTypeSpec" }, @@ -4030,15 +4046,15 @@ "isHttpMetadata": false }, { - "$id": "367", + "$id": "369", "kind": "property", "name": "requiredNullableList", "serializedName": "requiredNullableList", "type": { - "$id": "368", + "$id": "370", "kind": "nullable", "type": { - "$ref": "263" + "$ref": "265" }, "namespace": "SampleTypeSpec" }, @@ -4056,25 +4072,25 @@ "isHttpMetadata": false }, { - "$id": "369", + "$id": "371", "kind": "property", "name": "optionalNullableDictionary", "serializedName": "optionalNullableDictionary", "type": { - "$id": "370", + "$id": "372", "kind": "nullable", "type": { - "$id": "371", + "$id": "373", "kind": "dict", "keyType": { - "$id": "372", + "$id": "374", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$id": "373", + "$id": "375", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -4098,15 +4114,15 @@ "isHttpMetadata": false }, { - "$id": "374", + "$id": "376", "kind": "property", "name": "requiredNullableDictionary", "serializedName": "requiredNullableDictionary", "type": { - "$id": "375", + "$id": "377", "kind": "nullable", "type": { - "$ref": "371" + "$ref": "373" }, "namespace": "SampleTypeSpec" }, @@ -4124,12 +4140,12 @@ "isHttpMetadata": false }, { - "$id": "376", + "$id": "378", "kind": "property", "name": "primitiveDictionary", "serializedName": "primitiveDictionary", "type": { - "$ref": "371" + "$ref": "373" }, "optional": false, "readOnly": false, @@ -4145,12 +4161,12 @@ "isHttpMetadata": false }, { - "$id": "377", + "$id": "379", "kind": "property", "name": "foo", "serializedName": "foo", "type": { - "$id": "378", + "$id": "380", "kind": "model", "name": "AnotherDynamicModel", "namespace": "SampleTypeSpec", @@ -4170,12 +4186,12 @@ }, "properties": [ { - "$id": "379", + "$id": "381", "kind": "property", "name": "bar", "serializedName": "bar", "type": { - "$id": "380", + "$id": "382", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4210,16 +4226,16 @@ "isHttpMetadata": false }, { - "$id": "381", + "$id": "383", "kind": "property", "name": "listFoo", "serializedName": "listFoo", "type": { - "$id": "382", + "$id": "384", "kind": "array", "name": "ArrayAnotherDynamicModel", "valueType": { - "$ref": "378" + "$ref": "380" }, "crossLanguageDefinitionId": "TypeSpec.Array", "decorators": [] @@ -4238,16 +4254,16 @@ "isHttpMetadata": false }, { - "$id": "383", + "$id": "385", "kind": "property", "name": "listOfListFoo", "serializedName": "listOfListFoo", "type": { - "$id": "384", + "$id": "386", "kind": "array", "name": "ArrayArray", "valueType": { - "$ref": "382" + "$ref": "384" }, "crossLanguageDefinitionId": "TypeSpec.Array", "decorators": [] @@ -4266,22 +4282,22 @@ "isHttpMetadata": false }, { - "$id": "385", + "$id": "387", "kind": "property", "name": "dictionaryFoo", "serializedName": "dictionaryFoo", "type": { - "$id": "386", + "$id": "388", "kind": "dict", "keyType": { - "$id": "387", + "$id": "389", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$ref": "378" + "$ref": "380" }, "decorators": [] }, @@ -4299,22 +4315,22 @@ "isHttpMetadata": false }, { - "$id": "388", + "$id": "390", "kind": "property", "name": "dictionaryOfDictionaryFoo", "serializedName": "dictionaryOfDictionaryFoo", "type": { - "$id": "389", + "$id": "391", "kind": "dict", "keyType": { - "$id": "390", + "$id": "392", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$ref": "386" + "$ref": "388" }, "decorators": [] }, @@ -4332,22 +4348,22 @@ "isHttpMetadata": false }, { - "$id": "391", + "$id": "393", "kind": "property", "name": "dictionaryListFoo", "serializedName": "dictionaryListFoo", "type": { - "$id": "392", + "$id": "394", "kind": "dict", "keyType": { - "$id": "393", + "$id": "395", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$ref": "382" + "$ref": "384" }, "decorators": [] }, @@ -4365,16 +4381,16 @@ "isHttpMetadata": false }, { - "$id": "394", + "$id": "396", "kind": "property", "name": "listOfDictionaryFoo", "serializedName": "listOfDictionaryFoo", "type": { - "$id": "395", + "$id": "397", "kind": "array", "name": "ArrayRecord", "valueType": { - "$ref": "386" + "$ref": "388" }, "crossLanguageDefinitionId": "TypeSpec.Array", "decorators": [] @@ -4395,10 +4411,10 @@ ] }, { - "$ref": "378" + "$ref": "380" }, { - "$id": "396", + "$id": "398", "kind": "model", "name": "XmlAdvancedModel", "namespace": "SampleTypeSpec", @@ -4422,13 +4438,13 @@ }, "properties": [ { - "$id": "397", + "$id": "399", "kind": "property", "name": "name", "serializedName": "name", "doc": "A simple string property", "type": { - "$id": "398", + "$id": "400", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4450,13 +4466,13 @@ "isHttpMetadata": false }, { - "$id": "399", + "$id": "401", "kind": "property", "name": "age", "serializedName": "age", "doc": "An integer property", "type": { - "$id": "400", + "$id": "402", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -4478,13 +4494,13 @@ "isHttpMetadata": false }, { - "$id": "401", + "$id": "403", "kind": "property", "name": "enabled", "serializedName": "enabled", "doc": "A boolean property", "type": { - "$id": "402", + "$id": "404", "kind": "boolean", "name": "boolean", "crossLanguageDefinitionId": "TypeSpec.boolean", @@ -4506,13 +4522,13 @@ "isHttpMetadata": false }, { - "$id": "403", + "$id": "405", "kind": "property", "name": "score", "serializedName": "score", "doc": "A float property", "type": { - "$id": "404", + "$id": "406", "kind": "float32", "name": "float32", "crossLanguageDefinitionId": "TypeSpec.float32", @@ -4534,13 +4550,13 @@ "isHttpMetadata": false }, { - "$id": "405", + "$id": "407", "kind": "property", "name": "optionalString", "serializedName": "optionalString", "doc": "An optional string", "type": { - "$id": "406", + "$id": "408", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4562,13 +4578,13 @@ "isHttpMetadata": false }, { - "$id": "407", + "$id": "409", "kind": "property", "name": "optionalInt", "serializedName": "optionalInt", "doc": "An optional integer", "type": { - "$id": "408", + "$id": "410", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -4590,16 +4606,16 @@ "isHttpMetadata": false }, { - "$id": "409", + "$id": "411", "kind": "property", "name": "nullableString", "serializedName": "nullableString", "doc": "A nullable string", "type": { - "$id": "410", + "$id": "412", "kind": "nullable", "type": { - "$id": "411", + "$id": "413", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4623,13 +4639,13 @@ "isHttpMetadata": false }, { - "$id": "412", + "$id": "414", "kind": "property", "name": "id", "serializedName": "id", "doc": "A string as XML attribute", "type": { - "$id": "413", + "$id": "415", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4656,13 +4672,13 @@ "isHttpMetadata": false }, { - "$id": "414", + "$id": "416", "kind": "property", "name": "version", "serializedName": "version", "doc": "An integer as XML attribute", "type": { - "$id": "415", + "$id": "417", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -4689,13 +4705,13 @@ "isHttpMetadata": false }, { - "$id": "416", + "$id": "418", "kind": "property", "name": "isActive", "serializedName": "isActive", "doc": "A boolean as XML attribute", "type": { - "$id": "417", + "$id": "419", "kind": "boolean", "name": "boolean", "crossLanguageDefinitionId": "TypeSpec.boolean", @@ -4722,13 +4738,13 @@ "isHttpMetadata": false }, { - "$id": "418", + "$id": "420", "kind": "property", "name": "originalName", "serializedName": "RenamedProperty", "doc": "A property with a custom XML element name", "type": { - "$id": "419", + "$id": "421", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4757,13 +4773,13 @@ "isHttpMetadata": false }, { - "$id": "420", + "$id": "422", "kind": "property", "name": "xmlIdentifier", "serializedName": "xml-id", "doc": "An attribute with a custom XML name", "type": { - "$id": "421", + "$id": "423", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4796,13 +4812,13 @@ "isHttpMetadata": false }, { - "$id": "422", + "$id": "424", "kind": "property", "name": "content", "serializedName": "content", "doc": "Text content in the element (unwrapped string)", "type": { - "$id": "423", + "$id": "425", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4829,13 +4845,13 @@ "isHttpMetadata": false }, { - "$id": "424", + "$id": "426", "kind": "property", "name": "unwrappedStrings", "serializedName": "unwrappedStrings", "doc": "An unwrapped array of strings - items appear directly without wrapper", "type": { - "$ref": "240" + "$ref": "242" }, "optional": false, "readOnly": false, @@ -4859,13 +4875,13 @@ "isHttpMetadata": false }, { - "$id": "425", + "$id": "427", "kind": "property", "name": "unwrappedCounts", "serializedName": "unwrappedCounts", "doc": "An unwrapped array of integers", "type": { - "$ref": "263" + "$ref": "265" }, "optional": false, "readOnly": false, @@ -4889,17 +4905,17 @@ "isHttpMetadata": false }, { - "$id": "426", + "$id": "428", "kind": "property", "name": "unwrappedItems", "serializedName": "unwrappedItems", "doc": "An unwrapped array of models", "type": { - "$id": "427", + "$id": "429", "kind": "array", "name": "ArrayXmlItem", "valueType": { - "$id": "428", + "$id": "430", "kind": "model", "name": "XmlItem", "namespace": "SampleTypeSpec", @@ -4923,13 +4939,13 @@ }, "properties": [ { - "$id": "429", + "$id": "431", "kind": "property", "name": "itemName", "serializedName": "itemName", "doc": "The item name", "type": { - "$id": "430", + "$id": "432", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -4951,13 +4967,13 @@ "isHttpMetadata": false }, { - "$id": "431", + "$id": "433", "kind": "property", "name": "itemValue", "serializedName": "itemValue", "doc": "The item value", "type": { - "$id": "432", + "$id": "434", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -4979,13 +4995,13 @@ "isHttpMetadata": false }, { - "$id": "433", + "$id": "435", "kind": "property", "name": "itemId", "serializedName": "itemId", "doc": "Item ID as attribute", "type": { - "$id": "434", + "$id": "436", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -5038,13 +5054,13 @@ "isHttpMetadata": false }, { - "$id": "435", + "$id": "437", "kind": "property", "name": "wrappedColors", "serializedName": "wrappedColors", "doc": "A wrapped array of strings (default)", "type": { - "$ref": "240" + "$ref": "242" }, "optional": false, "readOnly": false, @@ -5063,13 +5079,13 @@ "isHttpMetadata": false }, { - "$id": "436", + "$id": "438", "kind": "property", "name": "items", "serializedName": "ItemCollection", "doc": "A wrapped array with custom wrapper name", "type": { - "$ref": "427" + "$ref": "429" }, "optional": false, "readOnly": false, @@ -5095,13 +5111,13 @@ "isHttpMetadata": false }, { - "$id": "437", + "$id": "439", "kind": "property", "name": "nestedModel", "serializedName": "nestedModel", "doc": "A nested model property", "type": { - "$id": "438", + "$id": "440", "kind": "model", "name": "XmlNestedModel", "namespace": "SampleTypeSpec", @@ -5118,13 +5134,13 @@ }, "properties": [ { - "$id": "439", + "$id": "441", "kind": "property", "name": "value", "serializedName": "value", "doc": "The value of the nested model", "type": { - "$id": "440", + "$id": "442", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -5146,13 +5162,13 @@ "isHttpMetadata": false }, { - "$id": "441", + "$id": "443", "kind": "property", "name": "nestedId", "serializedName": "nestedId", "doc": "An attribute on the nested model", "type": { - "$id": "442", + "$id": "444", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -5196,13 +5212,13 @@ "isHttpMetadata": false }, { - "$id": "443", + "$id": "445", "kind": "property", "name": "optionalNestedModel", "serializedName": "optionalNestedModel", "doc": "An optional nested model", "type": { - "$ref": "438" + "$ref": "440" }, "optional": true, "readOnly": false, @@ -5220,23 +5236,23 @@ "isHttpMetadata": false }, { - "$id": "444", + "$id": "446", "kind": "property", "name": "metadata", "serializedName": "metadata", "doc": "A dictionary property", "type": { - "$id": "445", + "$id": "447", "kind": "dict", "keyType": { - "$id": "446", + "$id": "448", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$id": "447", + "$id": "449", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -5260,18 +5276,18 @@ "isHttpMetadata": false }, { - "$id": "448", + "$id": "450", "kind": "property", "name": "createdAt", "serializedName": "createdAt", "doc": "A date-time property", "type": { - "$id": "449", + "$id": "451", "kind": "utcDateTime", "name": "utcDateTime", "encode": "rfc3339", "wireType": { - "$id": "450", + "$id": "452", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -5296,18 +5312,18 @@ "isHttpMetadata": false }, { - "$id": "451", + "$id": "453", "kind": "property", "name": "duration", "serializedName": "duration", "doc": "A duration property", "type": { - "$id": "452", + "$id": "454", "kind": "duration", "name": "duration", "encode": "ISO8601", "wireType": { - "$id": "453", + "$id": "455", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -5332,13 +5348,13 @@ "isHttpMetadata": false }, { - "$id": "454", + "$id": "456", "kind": "property", "name": "data", "serializedName": "data", "doc": "A bytes property", "type": { - "$id": "455", + "$id": "457", "kind": "bytes", "name": "bytes", "encode": "base64", @@ -5361,13 +5377,13 @@ "isHttpMetadata": false }, { - "$id": "456", + "$id": "458", "kind": "property", "name": "optionalRecordUnknown", "serializedName": "optionalRecordUnknown", "doc": "optional record of unknown", "type": { - "$ref": "300" + "$ref": "302" }, "optional": true, "readOnly": false, @@ -5385,7 +5401,7 @@ "isHttpMetadata": false }, { - "$id": "457", + "$id": "459", "kind": "property", "name": "fixedEnum", "serializedName": "fixedEnum", @@ -5409,7 +5425,7 @@ "isHttpMetadata": false }, { - "$id": "458", + "$id": "460", "kind": "property", "name": "extensibleEnum", "serializedName": "extensibleEnum", @@ -5433,7 +5449,7 @@ "isHttpMetadata": false }, { - "$id": "459", + "$id": "461", "kind": "property", "name": "optionalFixedEnum", "serializedName": "optionalFixedEnum", @@ -5457,7 +5473,7 @@ "isHttpMetadata": false }, { - "$id": "460", + "$id": "462", "kind": "property", "name": "optionalExtensibleEnum", "serializedName": "optionalExtensibleEnum", @@ -5481,12 +5497,12 @@ "isHttpMetadata": false }, { - "$id": "461", + "$id": "463", "kind": "property", "name": "label", "serializedName": "label", "type": { - "$id": "462", + "$id": "464", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -5501,13 +5517,13 @@ "name": "TypeSpec.Xml.@ns", "arguments": { "ns": { - "$id": "463", + "$id": "465", "kind": "enumvalue", "decorators": [], "name": "ns1", "value": "https://example.com/ns1", "enumType": { - "$id": "464", + "$id": "466", "kind": "enum", "decorators": [ { @@ -5519,7 +5535,7 @@ "isGeneratedName": false, "namespace": "SampleTypeSpec", "valueType": { - "$id": "465", + "$id": "467", "kind": "string", "decorators": [], "doc": "A sequence of textual characters.", @@ -5528,30 +5544,30 @@ }, "values": [ { - "$id": "466", + "$id": "468", "kind": "enumvalue", "decorators": [], "name": "ns1", "value": "https://example.com/ns1", "enumType": { - "$ref": "464" + "$ref": "466" }, "valueType": { - "$ref": "465" + "$ref": "467" }, "crossLanguageDefinitionId": "SampleTypeSpec.XmlNamespaces.ns1" }, { - "$id": "467", + "$id": "469", "kind": "enumvalue", "decorators": [], "name": "ns2", "value": "https://example.com/ns2", "enumType": { - "$ref": "464" + "$ref": "466" }, "valueType": { - "$ref": "465" + "$ref": "467" }, "crossLanguageDefinitionId": "SampleTypeSpec.XmlNamespaces.ns2" } @@ -5569,7 +5585,7 @@ "__accessSet": true }, "valueType": { - "$ref": "465" + "$ref": "467" }, "crossLanguageDefinitionId": "SampleTypeSpec.XmlNamespaces.ns1" } @@ -5595,12 +5611,12 @@ "isHttpMetadata": false }, { - "$id": "468", + "$id": "470", "kind": "property", "name": "daysUsed", "serializedName": "daysUsed", "type": { - "$id": "469", + "$id": "471", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -5615,16 +5631,16 @@ "name": "TypeSpec.Xml.@ns", "arguments": { "ns": { - "$id": "470", + "$id": "472", "kind": "enumvalue", "decorators": [], "name": "ns2", "value": "https://example.com/ns2", "enumType": { - "$ref": "464" + "$ref": "466" }, "valueType": { - "$ref": "465" + "$ref": "467" }, "crossLanguageDefinitionId": "SampleTypeSpec.XmlNamespaces.ns2" } @@ -5646,12 +5662,12 @@ "isHttpMetadata": false }, { - "$id": "471", + "$id": "473", "kind": "property", "name": "fooItems", "serializedName": "fooItems", "type": { - "$ref": "240" + "$ref": "242" }, "optional": false, "readOnly": false, @@ -5682,12 +5698,12 @@ "isHttpMetadata": false }, { - "$id": "472", + "$id": "474", "kind": "property", "name": "anotherModel", "serializedName": "anotherModel", "type": { - "$ref": "438" + "$ref": "440" }, "optional": false, "readOnly": false, @@ -5717,16 +5733,16 @@ "isHttpMetadata": false }, { - "$id": "473", + "$id": "475", "kind": "property", "name": "modelsWithNamespaces", "serializedName": "modelsWithNamespaces", "type": { - "$id": "474", + "$id": "476", "kind": "array", "name": "ArrayXmlModelWithNamespace", "valueType": { - "$id": "475", + "$id": "477", "kind": "model", "name": "XmlModelWithNamespace", "namespace": "SampleTypeSpec", @@ -5754,12 +5770,12 @@ }, "properties": [ { - "$id": "476", + "$id": "478", "kind": "property", "name": "foo", "serializedName": "foo", "type": { - "$id": "477", + "$id": "479", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -5806,12 +5822,12 @@ "isHttpMetadata": false }, { - "$id": "478", + "$id": "480", "kind": "property", "name": "unwrappedModelsWithNamespaces", "serializedName": "unwrappedModelsWithNamespaces", "type": { - "$ref": "474" + "$ref": "476" }, "optional": false, "readOnly": false, @@ -5835,16 +5851,16 @@ "isHttpMetadata": false }, { - "$id": "479", + "$id": "481", "kind": "property", "name": "listOfListFoo", "serializedName": "listOfListFoo", "type": { - "$id": "480", + "$id": "482", "kind": "array", "name": "ArrayArray1", "valueType": { - "$ref": "427" + "$ref": "429" }, "crossLanguageDefinitionId": "TypeSpec.Array", "decorators": [] @@ -5866,22 +5882,22 @@ "isHttpMetadata": false }, { - "$id": "481", + "$id": "483", "kind": "property", "name": "dictionaryFoo", "serializedName": "dictionaryFoo", "type": { - "$id": "482", + "$id": "484", "kind": "dict", "keyType": { - "$id": "483", + "$id": "485", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$ref": "428" + "$ref": "430" }, "decorators": [] }, @@ -5901,22 +5917,22 @@ "isHttpMetadata": false }, { - "$id": "484", + "$id": "486", "kind": "property", "name": "dictionaryOfDictionaryFoo", "serializedName": "dictionaryOfDictionaryFoo", "type": { - "$id": "485", + "$id": "487", "kind": "dict", "keyType": { - "$id": "486", + "$id": "488", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$ref": "482" + "$ref": "484" }, "decorators": [] }, @@ -5936,22 +5952,22 @@ "isHttpMetadata": false }, { - "$id": "487", + "$id": "489", "kind": "property", "name": "dictionaryListFoo", "serializedName": "dictionaryListFoo", "type": { - "$id": "488", + "$id": "490", "kind": "dict", "keyType": { - "$id": "489", + "$id": "491", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, "valueType": { - "$ref": "427" + "$ref": "429" }, "decorators": [] }, @@ -5971,16 +5987,16 @@ "isHttpMetadata": false }, { - "$id": "490", + "$id": "492", "kind": "property", "name": "listOfDictionaryFoo", "serializedName": "listOfDictionaryFoo", "type": { - "$id": "491", + "$id": "493", "kind": "array", "name": "ArrayRecord1", "valueType": { - "$ref": "482" + "$ref": "484" }, "crossLanguageDefinitionId": "TypeSpec.Array", "decorators": [] @@ -6004,16 +6020,82 @@ ] }, { - "$ref": "428" + "$ref": "430" + }, + { + "$ref": "440" }, { - "$ref": "438" + "$ref": "477" }, { - "$ref": "475" + "$id": "494", + "kind": "model", + "name": "GetNotebookResponse", + "namespace": "SampleTypeSpec", + "crossLanguageDefinitionId": "SampleTypeSpec.getNotebook.Response.anonymous", + "usage": "Output,Json", + "decorators": [], + "serializationOptions": { + "json": { + "name": "" + } + }, + "properties": [ + { + "$id": "495", + "kind": "property", + "name": "name", + "serializedName": "name", + "type": { + "$id": "496", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "SampleTypeSpec.getNotebook.Response.anonymous.name", + "serializationOptions": { + "json": { + "name": "name" + } + }, + "isHttpMetadata": false + }, + { + "$id": "497", + "kind": "property", + "name": "content", + "serializedName": "content", + "type": { + "$id": "498", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "SampleTypeSpec.getNotebook.Response.anonymous.content", + "serializationOptions": { + "json": { + "name": "content" + } + }, + "isHttpMetadata": false + } + ] }, { - "$id": "492", + "$id": "499", "kind": "model", "name": "Animal", "namespace": "SampleTypeSpec", @@ -6027,13 +6109,13 @@ } }, "discriminatorProperty": { - "$id": "493", + "$id": "500", "kind": "property", "name": "kind", "serializedName": "kind", "doc": "The kind of animal", "type": { - "$id": "494", + "$id": "501", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6054,16 +6136,16 @@ }, "properties": [ { - "$ref": "493" + "$ref": "500" }, { - "$id": "495", + "$id": "502", "kind": "property", "name": "name", "serializedName": "name", "doc": "Name of the animal", "type": { - "$id": "496", + "$id": "503", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6085,7 +6167,7 @@ ], "discriminatedSubtypes": { "pet": { - "$id": "497", + "$id": "504", "kind": "model", "name": "Pet", "namespace": "SampleTypeSpec", @@ -6100,7 +6182,7 @@ } }, "discriminatorProperty": { - "$id": "498", + "$id": "505", "kind": "property", "name": "kind", "serializedName": "kind", @@ -6121,20 +6203,20 @@ "isHttpMetadata": false }, "baseModel": { - "$ref": "492" + "$ref": "499" }, "properties": [ { - "$ref": "498" + "$ref": "505" }, { - "$id": "499", + "$id": "506", "kind": "property", "name": "trained", "serializedName": "trained", "doc": "Whether the pet is trained", "type": { - "$id": "500", + "$id": "507", "kind": "boolean", "name": "boolean", "crossLanguageDefinitionId": "TypeSpec.boolean", @@ -6156,7 +6238,7 @@ ], "discriminatedSubtypes": { "dog": { - "$id": "501", + "$id": "508", "kind": "model", "name": "Dog", "namespace": "SampleTypeSpec", @@ -6171,11 +6253,11 @@ } }, "baseModel": { - "$ref": "497" + "$ref": "504" }, "properties": [ { - "$id": "502", + "$id": "509", "kind": "property", "name": "kind", "serializedName": "kind", @@ -6196,13 +6278,13 @@ "isHttpMetadata": false }, { - "$id": "503", + "$id": "510", "kind": "property", "name": "breed", "serializedName": "breed", "doc": "The breed of the dog", "type": { - "$id": "504", + "$id": "511", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6226,18 +6308,18 @@ } }, "dog": { - "$ref": "501" + "$ref": "508" } } }, { - "$ref": "497" + "$ref": "504" }, { - "$ref": "501" + "$ref": "508" }, { - "$id": "505", + "$id": "512", "kind": "model", "name": "Tree", "namespace": "SampleTypeSpec", @@ -6257,7 +6339,7 @@ } }, "baseModel": { - "$id": "506", + "$id": "513", "kind": "model", "name": "Plant", "namespace": "SampleTypeSpec", @@ -6276,13 +6358,13 @@ } }, "discriminatorProperty": { - "$id": "507", + "$id": "514", "kind": "property", "name": "species", "serializedName": "species", "doc": "The species of plant", "type": { - "$id": "508", + "$id": "515", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6308,16 +6390,16 @@ }, "properties": [ { - "$ref": "507" + "$ref": "514" }, { - "$id": "509", + "$id": "516", "kind": "property", "name": "id", "serializedName": "id", "doc": "The unique identifier of the plant", "type": { - "$id": "510", + "$id": "517", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6342,13 +6424,13 @@ "isHttpMetadata": false }, { - "$id": "511", + "$id": "518", "kind": "property", "name": "height", "serializedName": "height", "doc": "The height of the plant in centimeters", "type": { - "$id": "512", + "$id": "519", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -6375,13 +6457,13 @@ ], "discriminatedSubtypes": { "tree": { - "$ref": "505" + "$ref": "512" } } }, "properties": [ { - "$id": "513", + "$id": "520", "kind": "property", "name": "species", "serializedName": "species", @@ -6407,13 +6489,13 @@ "isHttpMetadata": false }, { - "$id": "514", + "$id": "521", "kind": "property", "name": "age", "serializedName": "age", "doc": "The age of the tree in years", "type": { - "$id": "515", + "$id": "522", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -6440,10 +6522,10 @@ ] }, { - "$ref": "506" + "$ref": "513" }, { - "$id": "516", + "$id": "523", "kind": "model", "name": "GetWidgetMetricsResponse", "namespace": "SampleTypeSpec", @@ -6457,12 +6539,12 @@ }, "properties": [ { - "$id": "517", + "$id": "524", "kind": "property", "name": "numSold", "serializedName": "numSold", "type": { - "$id": "518", + "$id": "525", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -6482,12 +6564,12 @@ "isHttpMetadata": false }, { - "$id": "519", + "$id": "526", "kind": "property", "name": "averagePrice", "serializedName": "averagePrice", "type": { - "$id": "520", + "$id": "527", "kind": "float32", "name": "float32", "crossLanguageDefinitionId": "TypeSpec.float32", @@ -6511,14 +6593,14 @@ ], "clients": [ { - "$id": "521", + "$id": "528", "kind": "client", "name": "SampleTypeSpecClient", "namespace": "SampleTypeSpec", "doc": "This is a sample typespec project.", "methods": [ { - "$id": "522", + "$id": "529", "kind": "basic", "name": "sayHi", "accessibility": "public", @@ -6528,19 +6610,19 @@ ], "doc": "Return hi", "operation": { - "$id": "523", + "$id": "530", "name": "sayHi", "resourceName": "SampleTypeSpec", "doc": "Return hi", "accessibility": "public", "parameters": [ { - "$id": "524", + "$id": "531", "kind": "header", "name": "headParameter", "serializedName": "head-parameter", "type": { - "$id": "525", + "$id": "532", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6555,12 +6637,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.sayHi.headParameter", "methodParameterSegments": [ { - "$id": "526", + "$id": "533", "kind": "method", "name": "headParameter", "serializedName": "head-parameter", "type": { - "$id": "527", + "$id": "534", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6578,12 +6660,12 @@ ] }, { - "$id": "528", + "$id": "535", "kind": "query", "name": "queryParameter", "serializedName": "queryParameter", "type": { - "$id": "529", + "$id": "536", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6598,12 +6680,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "530", + "$id": "537", "kind": "method", "name": "queryParameter", "serializedName": "queryParameter", "type": { - "$id": "531", + "$id": "538", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6621,12 +6703,12 @@ ] }, { - "$id": "532", + "$id": "539", "kind": "query", "name": "optionalQuery", "serializedName": "optionalQuery", "type": { - "$id": "533", + "$id": "540", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6641,12 +6723,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "534", + "$id": "541", "kind": "method", "name": "optionalQuery", "serializedName": "optionalQuery", "type": { - "$id": "535", + "$id": "542", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6664,7 +6746,7 @@ ] }, { - "$id": "536", + "$id": "543", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -6680,7 +6762,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.sayHi.accept", "methodParameterSegments": [ { - "$id": "537", + "$id": "544", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -6705,7 +6787,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -6726,21 +6808,21 @@ }, "parameters": [ { - "$ref": "526" + "$ref": "533" }, { - "$ref": "530" + "$ref": "537" }, { - "$ref": "534" + "$ref": "541" }, { - "$ref": "537" + "$ref": "544" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -6749,7 +6831,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.sayHi" }, { - "$id": "538", + "$id": "545", "kind": "basic", "name": "helloAgain", "accessibility": "public", @@ -6759,19 +6841,19 @@ ], "doc": "Return hi again", "operation": { - "$id": "539", + "$id": "546", "name": "helloAgain", "resourceName": "SampleTypeSpec", "doc": "Return hi again", "accessibility": "public", "parameters": [ { - "$id": "540", + "$id": "547", "kind": "header", "name": "p1", "serializedName": "p1", "type": { - "$id": "541", + "$id": "548", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6786,12 +6868,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloAgain.p1", "methodParameterSegments": [ { - "$id": "542", + "$id": "549", "kind": "method", "name": "p1", "serializedName": "p1", "type": { - "$id": "543", + "$id": "550", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6809,7 +6891,7 @@ ] }, { - "$id": "544", + "$id": "551", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -6825,7 +6907,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloAgain.contentType", "methodParameterSegments": [ { - "$id": "545", + "$id": "552", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -6844,12 +6926,12 @@ ] }, { - "$id": "546", + "$id": "553", "kind": "path", "name": "p2", "serializedName": "p2", "type": { - "$id": "547", + "$id": "554", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6867,12 +6949,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloAgain.p2", "methodParameterSegments": [ { - "$id": "548", + "$id": "555", "kind": "method", "name": "p2", "serializedName": "p2", "type": { - "$id": "549", + "$id": "556", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -6890,7 +6972,7 @@ ] }, { - "$id": "550", + "$id": "557", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -6906,7 +6988,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloAgain.accept", "methodParameterSegments": [ { - "$id": "551", + "$id": "558", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -6925,12 +7007,12 @@ ] }, { - "$id": "552", + "$id": "559", "kind": "body", "name": "action", "serializedName": "action", "type": { - "$ref": "269" + "$ref": "271" }, "isApiVersion": false, "contentTypes": [ @@ -6944,12 +7026,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloAgain.action", "methodParameterSegments": [ { - "$id": "553", + "$id": "560", "kind": "method", "name": "action", "serializedName": "action", "type": { - "$ref": "269" + "$ref": "271" }, "location": "Body", "isApiVersion": false, @@ -6969,7 +7051,7 @@ 200 ], "bodyType": { - "$ref": "269" + "$ref": "271" }, "headers": [], "isErrorResponse": false, @@ -6993,24 +7075,24 @@ }, "parameters": [ { - "$ref": "542" + "$ref": "549" }, { - "$ref": "553" + "$ref": "560" }, { - "$ref": "545" + "$ref": "552" }, { - "$ref": "548" + "$ref": "555" }, { - "$ref": "551" + "$ref": "558" } ], "response": { "type": { - "$ref": "269" + "$ref": "271" } }, "isOverride": false, @@ -7019,7 +7101,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloAgain" }, { - "$id": "554", + "$id": "561", "kind": "basic", "name": "noContentType", "accessibility": "public", @@ -7029,19 +7111,19 @@ ], "doc": "Return hi again", "operation": { - "$id": "555", + "$id": "562", "name": "noContentType", "resourceName": "SampleTypeSpec", "doc": "Return hi again", "accessibility": "public", "parameters": [ { - "$id": "556", + "$id": "563", "kind": "header", "name": "p1", "serializedName": "p1", "type": { - "$id": "557", + "$id": "564", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -7056,12 +7138,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.noContentType.p1", "methodParameterSegments": [ { - "$id": "558", + "$id": "565", "kind": "method", "name": "info", "serializedName": "info", "type": { - "$ref": "317" + "$ref": "319" }, "location": "", "isApiVersion": false, @@ -7073,13 +7155,13 @@ "decorators": [] }, { - "$id": "559", + "$id": "566", "kind": "method", "name": "p1", "serializedName": "p1", "doc": "header parameter", "type": { - "$ref": "319" + "$ref": "321" }, "location": "", "isApiVersion": false, @@ -7093,12 +7175,12 @@ ] }, { - "$id": "560", + "$id": "567", "kind": "path", "name": "p2", "serializedName": "p2", "type": { - "$id": "561", + "$id": "568", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -7116,16 +7198,16 @@ "crossLanguageDefinitionId": "SampleTypeSpec.noContentType.p2", "methodParameterSegments": [ { - "$ref": "558" + "$ref": "565" }, { - "$id": "562", + "$id": "569", "kind": "method", "name": "p2", "serializedName": "p2", "doc": "path parameter", "type": { - "$ref": "322" + "$ref": "324" }, "location": "", "isApiVersion": false, @@ -7139,7 +7221,7 @@ ] }, { - "$id": "563", + "$id": "570", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -7156,7 +7238,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.noContentType.contentType", "methodParameterSegments": [ { - "$id": "564", + "$id": "571", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -7176,7 +7258,7 @@ ] }, { - "$id": "565", + "$id": "572", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -7192,7 +7274,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.noContentType.accept", "methodParameterSegments": [ { - "$id": "566", + "$id": "573", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -7211,12 +7293,12 @@ ] }, { - "$id": "567", + "$id": "574", "kind": "body", "name": "action", "serializedName": "action", "type": { - "$ref": "269" + "$ref": "271" }, "isApiVersion": false, "contentTypes": [ @@ -7230,16 +7312,16 @@ "crossLanguageDefinitionId": "SampleTypeSpec.noContentType.action", "methodParameterSegments": [ { - "$ref": "558" + "$ref": "565" }, { - "$id": "568", + "$id": "575", "kind": "method", "name": "action", "serializedName": "action", "doc": "body parameter", "type": { - "$ref": "269" + "$ref": "271" }, "location": "", "isApiVersion": false, @@ -7259,7 +7341,7 @@ 200 ], "bodyType": { - "$ref": "269" + "$ref": "271" }, "headers": [], "isErrorResponse": false, @@ -7283,18 +7365,18 @@ }, "parameters": [ { - "$ref": "558" + "$ref": "565" }, { - "$ref": "564" + "$ref": "571" }, { - "$ref": "566" + "$ref": "573" } ], "response": { "type": { - "$ref": "269" + "$ref": "271" } }, "isOverride": true, @@ -7303,7 +7385,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.noContentType" }, { - "$id": "569", + "$id": "576", "kind": "basic", "name": "helloDemo2", "accessibility": "public", @@ -7313,14 +7395,14 @@ ], "doc": "Return hi in demo2", "operation": { - "$id": "570", + "$id": "577", "name": "helloDemo2", "resourceName": "SampleTypeSpec", "doc": "Return hi in demo2", "accessibility": "public", "parameters": [ { - "$id": "571", + "$id": "578", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -7336,7 +7418,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloDemo2.accept", "methodParameterSegments": [ { - "$id": "572", + "$id": "579", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -7361,7 +7443,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -7382,12 +7464,12 @@ }, "parameters": [ { - "$ref": "572" + "$ref": "579" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -7396,7 +7478,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloDemo2" }, { - "$id": "573", + "$id": "580", "kind": "basic", "name": "createLiteral", "accessibility": "public", @@ -7406,14 +7488,14 @@ ], "doc": "Create with literal value", "operation": { - "$id": "574", + "$id": "581", "name": "createLiteral", "resourceName": "SampleTypeSpec", "doc": "Create with literal value", "accessibility": "public", "parameters": [ { - "$id": "575", + "$id": "582", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -7430,7 +7512,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.createLiteral.contentType", "methodParameterSegments": [ { - "$id": "576", + "$id": "583", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -7450,7 +7532,7 @@ ] }, { - "$id": "577", + "$id": "584", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -7466,7 +7548,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.createLiteral.accept", "methodParameterSegments": [ { - "$id": "578", + "$id": "585", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -7485,12 +7567,12 @@ ] }, { - "$id": "579", + "$id": "586", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "234" + "$ref": "236" }, "isApiVersion": false, "contentTypes": [ @@ -7504,12 +7586,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.createLiteral.body", "methodParameterSegments": [ { - "$id": "580", + "$id": "587", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "234" + "$ref": "236" }, "location": "Body", "isApiVersion": false, @@ -7529,7 +7611,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -7553,18 +7635,18 @@ }, "parameters": [ { - "$ref": "580" + "$ref": "587" }, { - "$ref": "576" + "$ref": "583" }, { - "$ref": "578" + "$ref": "585" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -7573,7 +7655,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.createLiteral" }, { - "$id": "581", + "$id": "588", "kind": "basic", "name": "helloLiteral", "accessibility": "public", @@ -7583,14 +7665,14 @@ ], "doc": "Send literal parameters", "operation": { - "$id": "582", + "$id": "589", "name": "helloLiteral", "resourceName": "SampleTypeSpec", "doc": "Send literal parameters", "accessibility": "public", "parameters": [ { - "$id": "583", + "$id": "590", "kind": "header", "name": "p1", "serializedName": "p1", @@ -7606,7 +7688,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloLiteral.p1", "methodParameterSegments": [ { - "$id": "584", + "$id": "591", "kind": "method", "name": "p1", "serializedName": "p1", @@ -7625,7 +7707,7 @@ ] }, { - "$id": "585", + "$id": "592", "kind": "path", "name": "p2", "serializedName": "p2", @@ -7644,7 +7726,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloLiteral.p2", "methodParameterSegments": [ { - "$id": "586", + "$id": "593", "kind": "method", "name": "p2", "serializedName": "p2", @@ -7663,7 +7745,7 @@ ] }, { - "$id": "587", + "$id": "594", "kind": "query", "name": "p3", "serializedName": "p3", @@ -7679,7 +7761,7 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "588", + "$id": "595", "kind": "method", "name": "p3", "serializedName": "p3", @@ -7698,7 +7780,7 @@ ] }, { - "$id": "589", + "$id": "596", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -7714,7 +7796,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloLiteral.accept", "methodParameterSegments": [ { - "$id": "590", + "$id": "597", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -7739,7 +7821,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -7760,21 +7842,21 @@ }, "parameters": [ { - "$ref": "584" + "$ref": "591" }, { - "$ref": "586" + "$ref": "593" }, { - "$ref": "588" + "$ref": "595" }, { - "$ref": "590" + "$ref": "597" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -7783,7 +7865,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.helloLiteral" }, { - "$id": "591", + "$id": "598", "kind": "basic", "name": "topAction", "accessibility": "public", @@ -7793,24 +7875,24 @@ ], "doc": "top level method", "operation": { - "$id": "592", + "$id": "599", "name": "topAction", "resourceName": "SampleTypeSpec", "doc": "top level method", "accessibility": "public", "parameters": [ { - "$id": "593", + "$id": "600", "kind": "path", "name": "action", "serializedName": "action", "type": { - "$id": "594", + "$id": "601", "kind": "utcDateTime", "name": "utcDateTime", "encode": "rfc3339", "wireType": { - "$id": "595", + "$id": "602", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -7831,17 +7913,17 @@ "crossLanguageDefinitionId": "SampleTypeSpec.topAction.action", "methodParameterSegments": [ { - "$id": "596", + "$id": "603", "kind": "method", "name": "action", "serializedName": "action", "type": { - "$id": "597", + "$id": "604", "kind": "utcDateTime", "name": "utcDateTime", "encode": "rfc3339", "wireType": { - "$id": "598", + "$id": "605", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -7862,7 +7944,7 @@ ] }, { - "$id": "599", + "$id": "606", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -7878,7 +7960,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.topAction.accept", "methodParameterSegments": [ { - "$id": "600", + "$id": "607", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -7903,7 +7985,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -7924,15 +8006,15 @@ }, "parameters": [ { - "$ref": "596" + "$ref": "603" }, { - "$ref": "600" + "$ref": "607" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -7941,7 +8023,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.topAction" }, { - "$id": "601", + "$id": "608", "kind": "basic", "name": "topAction2", "accessibility": "public", @@ -7951,14 +8033,14 @@ ], "doc": "top level method2", "operation": { - "$id": "602", + "$id": "609", "name": "topAction2", "resourceName": "SampleTypeSpec", "doc": "top level method2", "accessibility": "public", "parameters": [ { - "$id": "603", + "$id": "610", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -7974,7 +8056,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.topAction2.accept", "methodParameterSegments": [ { - "$id": "604", + "$id": "611", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -7999,7 +8081,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -8020,12 +8102,12 @@ }, "parameters": [ { - "$ref": "604" + "$ref": "611" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -8034,7 +8116,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.topAction2" }, { - "$id": "605", + "$id": "612", "kind": "basic", "name": "patchAction", "accessibility": "public", @@ -8044,14 +8126,14 @@ ], "doc": "top level patch", "operation": { - "$id": "606", + "$id": "613", "name": "patchAction", "resourceName": "SampleTypeSpec", "doc": "top level patch", "accessibility": "public", "parameters": [ { - "$id": "607", + "$id": "614", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -8068,7 +8150,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.patchAction.contentType", "methodParameterSegments": [ { - "$id": "608", + "$id": "615", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -8088,7 +8170,7 @@ ] }, { - "$id": "609", + "$id": "616", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -8104,7 +8186,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.patchAction.accept", "methodParameterSegments": [ { - "$id": "610", + "$id": "617", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -8123,12 +8205,12 @@ ] }, { - "$id": "611", + "$id": "618", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "234" + "$ref": "236" }, "isApiVersion": false, "contentTypes": [ @@ -8142,12 +8224,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.patchAction.body", "methodParameterSegments": [ { - "$id": "612", + "$id": "619", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "234" + "$ref": "236" }, "location": "Body", "isApiVersion": false, @@ -8167,7 +8249,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -8191,18 +8273,18 @@ }, "parameters": [ { - "$ref": "612" + "$ref": "619" }, { - "$ref": "608" + "$ref": "615" }, { - "$ref": "610" + "$ref": "617" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -8211,7 +8293,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.patchAction" }, { - "$id": "613", + "$id": "620", "kind": "basic", "name": "anonymousBody", "accessibility": "public", @@ -8221,14 +8303,14 @@ ], "doc": "body parameter without body decorator", "operation": { - "$id": "614", + "$id": "621", "name": "anonymousBody", "resourceName": "SampleTypeSpec", "doc": "body parameter without body decorator", "accessibility": "public", "parameters": [ { - "$id": "615", + "$id": "622", "kind": "query", "name": "requiredQueryParam", "serializedName": "requiredQueryParam", @@ -8244,7 +8326,7 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "616", + "$id": "623", "kind": "method", "name": "requiredQueryParam", "serializedName": "requiredQueryParam", @@ -8263,7 +8345,7 @@ ] }, { - "$id": "617", + "$id": "624", "kind": "header", "name": "requiredHeader", "serializedName": "required-header", @@ -8279,7 +8361,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.anonymousBody.requiredHeader", "methodParameterSegments": [ { - "$id": "618", + "$id": "625", "kind": "method", "name": "requiredHeader", "serializedName": "required-header", @@ -8298,7 +8380,7 @@ ] }, { - "$id": "619", + "$id": "626", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -8315,7 +8397,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.anonymousBody.contentType", "methodParameterSegments": [ { - "$id": "620", + "$id": "627", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -8335,7 +8417,7 @@ ] }, { - "$id": "621", + "$id": "628", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -8351,7 +8433,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.anonymousBody.accept", "methodParameterSegments": [ { - "$id": "622", + "$id": "629", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -8370,12 +8452,12 @@ ] }, { - "$id": "623", + "$id": "630", "kind": "body", "name": "thing", "serializedName": "thing", "type": { - "$ref": "234" + "$ref": "236" }, "isApiVersion": false, "contentTypes": [ @@ -8389,13 +8471,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.anonymousBody.body", "methodParameterSegments": [ { - "$id": "624", + "$id": "631", "kind": "method", "name": "name", "serializedName": "name", "doc": "name of the Thing", "type": { - "$id": "625", + "$id": "632", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8419,7 +8501,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -8443,16 +8525,16 @@ }, "parameters": [ { - "$ref": "624" + "$ref": "631" }, { - "$id": "626", + "$id": "633", "kind": "method", "name": "requiredUnion", "serializedName": "requiredUnion", "doc": "required Union", "type": { - "$ref": "238" + "$ref": "240" }, "location": "Body", "isApiVersion": false, @@ -8464,7 +8546,7 @@ "decorators": [] }, { - "$id": "627", + "$id": "634", "kind": "method", "name": "requiredLiteralString", "serializedName": "requiredLiteralString", @@ -8482,13 +8564,13 @@ "decorators": [] }, { - "$id": "628", + "$id": "635", "kind": "method", "name": "requiredNullableString", "serializedName": "requiredNullableString", "doc": "required nullable string", "type": { - "$ref": "245" + "$ref": "247" }, "location": "Body", "isApiVersion": false, @@ -8500,13 +8582,13 @@ "decorators": [] }, { - "$id": "629", + "$id": "636", "kind": "method", "name": "optionalNullableString", "serializedName": "optionalNullableString", "doc": "required optional string", "type": { - "$ref": "248" + "$ref": "250" }, "location": "Body", "isApiVersion": false, @@ -8518,7 +8600,7 @@ "decorators": [] }, { - "$id": "630", + "$id": "637", "kind": "method", "name": "requiredLiteralInt", "serializedName": "requiredLiteralInt", @@ -8536,7 +8618,7 @@ "decorators": [] }, { - "$id": "631", + "$id": "638", "kind": "method", "name": "requiredLiteralFloat", "serializedName": "requiredLiteralFloat", @@ -8554,7 +8636,7 @@ "decorators": [] }, { - "$id": "632", + "$id": "639", "kind": "method", "name": "requiredLiteralBool", "serializedName": "requiredLiteralBool", @@ -8572,18 +8654,18 @@ "decorators": [] }, { - "$id": "633", + "$id": "640", "kind": "method", "name": "optionalLiteralString", "serializedName": "optionalLiteralString", "doc": "optional literal string", "type": { - "$id": "634", + "$id": "641", "kind": "enum", "name": "ThingOptionalLiteralString", "crossLanguageDefinitionId": "", "valueType": { - "$id": "635", + "$id": "642", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8591,12 +8673,12 @@ }, "values": [ { - "$id": "636", + "$id": "643", "kind": "enumvalue", "name": "reject", "value": "reject", "valueType": { - "$id": "637", + "$id": "644", "kind": "string", "decorators": [], "doc": "A sequence of textual characters.", @@ -8604,7 +8686,7 @@ "crossLanguageDefinitionId": "TypeSpec.string" }, "enumType": { - "$ref": "634" + "$ref": "641" }, "decorators": [] } @@ -8625,13 +8707,13 @@ "decorators": [] }, { - "$id": "638", + "$id": "645", "kind": "method", "name": "requiredNullableLiteralString", "serializedName": "requiredNullableLiteralString", "doc": "required nullable literal string", "type": { - "$ref": "255" + "$ref": "257" }, "location": "Body", "isApiVersion": false, @@ -8643,18 +8725,18 @@ "decorators": [] }, { - "$id": "639", + "$id": "646", "kind": "method", "name": "optionalLiteralInt", "serializedName": "optionalLiteralInt", "doc": "optional literal int", "type": { - "$id": "640", + "$id": "647", "kind": "enum", "name": "ThingOptionalLiteralInt", "crossLanguageDefinitionId": "", "valueType": { - "$id": "641", + "$id": "648", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -8662,12 +8744,12 @@ }, "values": [ { - "$id": "642", + "$id": "649", "kind": "enumvalue", "name": "456", "value": 456, "valueType": { - "$id": "643", + "$id": "650", "kind": "int32", "decorators": [], "doc": "A 32-bit integer. (`-2,147,483,648` to `2,147,483,647`)", @@ -8675,7 +8757,7 @@ "crossLanguageDefinitionId": "TypeSpec.int32" }, "enumType": { - "$ref": "640" + "$ref": "647" }, "decorators": [] } @@ -8696,18 +8778,18 @@ "decorators": [] }, { - "$id": "644", + "$id": "651", "kind": "method", "name": "optionalLiteralFloat", "serializedName": "optionalLiteralFloat", "doc": "optional literal float", "type": { - "$id": "645", + "$id": "652", "kind": "enum", "name": "ThingOptionalLiteralFloat", "crossLanguageDefinitionId": "", "valueType": { - "$id": "646", + "$id": "653", "kind": "float32", "name": "float32", "crossLanguageDefinitionId": "TypeSpec.float32", @@ -8715,12 +8797,12 @@ }, "values": [ { - "$id": "647", + "$id": "654", "kind": "enumvalue", "name": "4.56", "value": 4.56, "valueType": { - "$id": "648", + "$id": "655", "kind": "float32", "decorators": [], "doc": "A 32 bit floating point number. (`±1.5 x 10^−45` to `±3.4 x 10^38`)", @@ -8728,7 +8810,7 @@ "crossLanguageDefinitionId": "TypeSpec.float32" }, "enumType": { - "$ref": "645" + "$ref": "652" }, "decorators": [] } @@ -8749,7 +8831,7 @@ "decorators": [] }, { - "$id": "649", + "$id": "656", "kind": "method", "name": "optionalLiteralBool", "serializedName": "optionalLiteralBool", @@ -8767,13 +8849,13 @@ "decorators": [] }, { - "$id": "650", + "$id": "657", "kind": "method", "name": "requiredBadDescription", "serializedName": "requiredBadDescription", "doc": "description with xml <|endoftext|>", "type": { - "$id": "651", + "$id": "658", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8789,13 +8871,13 @@ "decorators": [] }, { - "$id": "652", + "$id": "659", "kind": "method", "name": "optionalNullableList", "serializedName": "optionalNullableList", "doc": "optional nullable collection", "type": { - "$ref": "262" + "$ref": "264" }, "location": "Body", "isApiVersion": false, @@ -8807,13 +8889,13 @@ "decorators": [] }, { - "$id": "653", + "$id": "660", "kind": "method", "name": "requiredNullableList", "serializedName": "requiredNullableList", "doc": "required nullable collection", "type": { - "$ref": "266" + "$ref": "268" }, "location": "Body", "isApiVersion": false, @@ -8825,13 +8907,13 @@ "decorators": [] }, { - "$id": "654", + "$id": "661", "kind": "method", "name": "propertyWithSpecialDocs", "serializedName": "propertyWithSpecialDocs", "doc": "This tests:\n- Simple bullet point. This bullet point is going to be very long to test how text wrapping is handled in bullet points within documentation comments. It should properly indent the wrapped lines.\n- Another bullet point with **bold text**. This bullet point is also intentionally long to see how the formatting is preserved when the text wraps onto multiple lines in the generated documentation.\n- Third bullet point with *italic text*. Similar to the previous points, this one is extended to ensure that the wrapping and formatting are correctly applied in the output.\n- Complex bullet point with **bold** and *italic* combined. This bullet point combines both bold and italic formatting and is long enough to test the wrapping behavior in such cases.\n- **Bold bullet point**: A bullet point that is entirely bolded. This point is also made lengthy to observe how the bold formatting is maintained across wrapped lines.\n- *Italic bullet point*: A bullet point that is entirely italicized. This final point is extended to verify that italic formatting is correctly applied even when the text spans multiple lines.", "type": { - "$id": "655", + "$id": "662", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8847,21 +8929,21 @@ "decorators": [] }, { - "$ref": "616" + "$ref": "623" }, { - "$ref": "618" + "$ref": "625" }, { - "$ref": "620" + "$ref": "627" }, { - "$ref": "622" + "$ref": "629" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -8870,7 +8952,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.anonymousBody" }, { - "$id": "656", + "$id": "663", "kind": "basic", "name": "friendlyModel", "accessibility": "public", @@ -8880,14 +8962,14 @@ ], "doc": "Model can have its friendly name", "operation": { - "$id": "657", + "$id": "664", "name": "friendlyModel", "resourceName": "SampleTypeSpec", "doc": "Model can have its friendly name", "accessibility": "public", "parameters": [ { - "$id": "658", + "$id": "665", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -8904,7 +8986,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.friendlyModel.contentType", "methodParameterSegments": [ { - "$id": "659", + "$id": "666", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -8924,7 +9006,7 @@ ] }, { - "$id": "660", + "$id": "667", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -8940,7 +9022,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.friendlyModel.accept", "methodParameterSegments": [ { - "$id": "661", + "$id": "668", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -8959,12 +9041,12 @@ ] }, { - "$id": "662", + "$id": "669", "kind": "body", "name": "friend", "serializedName": "friend", "type": { - "$ref": "323" + "$ref": "325" }, "isApiVersion": false, "contentTypes": [ @@ -8978,13 +9060,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.friendlyModel.body", "methodParameterSegments": [ { - "$id": "663", + "$id": "670", "kind": "method", "name": "name", "serializedName": "name", "doc": "name of the NotFriend", "type": { - "$id": "664", + "$id": "671", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9008,7 +9090,7 @@ 200 ], "bodyType": { - "$ref": "323" + "$ref": "325" }, "headers": [], "isErrorResponse": false, @@ -9032,18 +9114,18 @@ }, "parameters": [ { - "$ref": "663" + "$ref": "670" }, { - "$ref": "659" + "$ref": "666" }, { - "$ref": "661" + "$ref": "668" } ], "response": { "type": { - "$ref": "323" + "$ref": "325" } }, "isOverride": false, @@ -9052,7 +9134,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.friendlyModel" }, { - "$id": "665", + "$id": "672", "kind": "basic", "name": "addTimeHeader", "accessibility": "public", @@ -9061,23 +9143,23 @@ "2024-08-16-preview" ], "operation": { - "$id": "666", + "$id": "673", "name": "addTimeHeader", "resourceName": "SampleTypeSpec", "accessibility": "public", "parameters": [ { - "$id": "667", + "$id": "674", "kind": "header", "name": "repeatabilityFirstSent", "serializedName": "Repeatability-First-Sent", "type": { - "$id": "668", + "$id": "675", "kind": "utcDateTime", "name": "utcDateTime", "encode": "rfc7231", "wireType": { - "$id": "669", + "$id": "676", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9095,17 +9177,17 @@ "crossLanguageDefinitionId": "SampleTypeSpec.addTimeHeader.repeatabilityFirstSent", "methodParameterSegments": [ { - "$id": "670", + "$id": "677", "kind": "method", "name": "repeatabilityFirstSent", "serializedName": "Repeatability-First-Sent", "type": { - "$id": "671", + "$id": "678", "kind": "utcDateTime", "name": "utcDateTime", "encode": "rfc7231", "wireType": { - "$id": "672", + "$id": "679", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9147,7 +9229,7 @@ }, "parameters": [ { - "$ref": "670" + "$ref": "677" } ], "response": {}, @@ -9157,7 +9239,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.addTimeHeader" }, { - "$id": "673", + "$id": "680", "kind": "basic", "name": "projectedNameModel", "accessibility": "public", @@ -9167,14 +9249,14 @@ ], "doc": "Model can have its projected name", "operation": { - "$id": "674", + "$id": "681", "name": "projectedNameModel", "resourceName": "SampleTypeSpec", "doc": "Model can have its projected name", "accessibility": "public", "parameters": [ { - "$id": "675", + "$id": "682", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -9191,7 +9273,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.projectedNameModel.contentType", "methodParameterSegments": [ { - "$id": "676", + "$id": "683", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -9211,7 +9293,7 @@ ] }, { - "$id": "677", + "$id": "684", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -9227,7 +9309,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.projectedNameModel.accept", "methodParameterSegments": [ { - "$id": "678", + "$id": "685", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -9246,12 +9328,12 @@ ] }, { - "$id": "679", + "$id": "686", "kind": "body", "name": "renamedModel", "serializedName": "renamedModel", "type": { - "$ref": "326" + "$ref": "328" }, "isApiVersion": false, "contentTypes": [ @@ -9265,13 +9347,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.projectedNameModel.body", "methodParameterSegments": [ { - "$id": "680", + "$id": "687", "kind": "method", "name": "otherName", "serializedName": "otherName", "doc": "name of the ModelWithClientName", "type": { - "$id": "681", + "$id": "688", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9295,7 +9377,7 @@ 200 ], "bodyType": { - "$ref": "326" + "$ref": "328" }, "headers": [], "isErrorResponse": false, @@ -9319,18 +9401,18 @@ }, "parameters": [ { - "$ref": "680" + "$ref": "687" }, { - "$ref": "676" + "$ref": "683" }, { - "$ref": "678" + "$ref": "685" } ], "response": { "type": { - "$ref": "326" + "$ref": "328" } }, "isOverride": false, @@ -9339,7 +9421,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.projectedNameModel" }, { - "$id": "682", + "$id": "689", "kind": "basic", "name": "returnsAnonymousModel", "accessibility": "public", @@ -9349,14 +9431,14 @@ ], "doc": "return anonymous model", "operation": { - "$id": "683", + "$id": "690", "name": "returnsAnonymousModel", "resourceName": "SampleTypeSpec", "doc": "return anonymous model", "accessibility": "public", "parameters": [ { - "$id": "684", + "$id": "691", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -9372,7 +9454,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.returnsAnonymousModel.accept", "methodParameterSegments": [ { - "$id": "685", + "$id": "692", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -9397,7 +9479,7 @@ 200 ], "bodyType": { - "$ref": "329" + "$ref": "331" }, "headers": [], "isErrorResponse": false, @@ -9418,12 +9500,12 @@ }, "parameters": [ { - "$ref": "685" + "$ref": "692" } ], "response": { "type": { - "$ref": "329" + "$ref": "331" } }, "isOverride": false, @@ -9432,7 +9514,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.returnsAnonymousModel" }, { - "$id": "686", + "$id": "693", "kind": "basic", "name": "getUnknownValue", "accessibility": "public", @@ -9442,19 +9524,19 @@ ], "doc": "get extensible enum", "operation": { - "$id": "687", + "$id": "694", "name": "getUnknownValue", "resourceName": "SampleTypeSpec", "doc": "get extensible enum", "accessibility": "public", "parameters": [ { - "$id": "688", + "$id": "695", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$id": "689", + "$id": "696", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9469,12 +9551,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.getUnknownValue.accept", "methodParameterSegments": [ { - "$id": "690", + "$id": "697", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "689" + "$ref": "696" }, "location": "Header", "isApiVersion": false, @@ -9494,7 +9576,7 @@ 200 ], "bodyType": { - "$id": "691", + "$id": "698", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9526,12 +9608,12 @@ }, "parameters": [ { - "$ref": "690" + "$ref": "697" } ], "response": { "type": { - "$ref": "691" + "$ref": "698" } }, "isOverride": false, @@ -9540,7 +9622,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.getUnknownValue" }, { - "$id": "692", + "$id": "699", "kind": "basic", "name": "internalProtocol", "accessibility": "public", @@ -9550,14 +9632,14 @@ ], "doc": "When set protocol false and convenient true, then the protocol method should be internal", "operation": { - "$id": "693", + "$id": "700", "name": "internalProtocol", "resourceName": "SampleTypeSpec", "doc": "When set protocol false and convenient true, then the protocol method should be internal", "accessibility": "public", "parameters": [ { - "$id": "694", + "$id": "701", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -9574,7 +9656,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.internalProtocol.contentType", "methodParameterSegments": [ { - "$id": "695", + "$id": "702", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -9594,7 +9676,7 @@ ] }, { - "$id": "696", + "$id": "703", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -9610,7 +9692,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.internalProtocol.accept", "methodParameterSegments": [ { - "$id": "697", + "$id": "704", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -9629,12 +9711,12 @@ ] }, { - "$id": "698", + "$id": "705", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "234" + "$ref": "236" }, "isApiVersion": false, "contentTypes": [ @@ -9648,12 +9730,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.internalProtocol.body", "methodParameterSegments": [ { - "$id": "699", + "$id": "706", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "234" + "$ref": "236" }, "location": "Body", "isApiVersion": false, @@ -9673,7 +9755,7 @@ 200 ], "bodyType": { - "$ref": "234" + "$ref": "236" }, "headers": [], "isErrorResponse": false, @@ -9697,18 +9779,18 @@ }, "parameters": [ { - "$ref": "699" + "$ref": "706" }, { - "$ref": "695" + "$ref": "702" }, { - "$ref": "697" + "$ref": "704" } ], "response": { "type": { - "$ref": "234" + "$ref": "236" } }, "isOverride": false, @@ -9717,7 +9799,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.internalProtocol" }, { - "$id": "700", + "$id": "707", "kind": "basic", "name": "stillConvenient", "accessibility": "public", @@ -9727,7 +9809,7 @@ ], "doc": "When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one", "operation": { - "$id": "701", + "$id": "708", "name": "stillConvenient", "resourceName": "SampleTypeSpec", "doc": "When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one", @@ -9760,7 +9842,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.stillConvenient" }, { - "$id": "702", + "$id": "709", "kind": "basic", "name": "headAsBoolean", "accessibility": "public", @@ -9770,19 +9852,19 @@ ], "doc": "head as boolean.", "operation": { - "$id": "703", + "$id": "710", "name": "headAsBoolean", "resourceName": "SampleTypeSpec", "doc": "head as boolean.", "accessibility": "public", "parameters": [ { - "$id": "704", + "$id": "711", "kind": "path", "name": "id", "serializedName": "id", "type": { - "$id": "705", + "$id": "712", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9800,12 +9882,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.headAsBoolean.id", "methodParameterSegments": [ { - "$id": "706", + "$id": "713", "kind": "method", "name": "id", "serializedName": "id", "type": { - "$id": "707", + "$id": "714", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9844,7 +9926,7 @@ }, "parameters": [ { - "$ref": "706" + "$ref": "713" } ], "response": {}, @@ -9854,7 +9936,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.headAsBoolean" }, { - "$id": "708", + "$id": "715", "kind": "basic", "name": "WithApiVersion", "accessibility": "public", @@ -9864,19 +9946,19 @@ ], "doc": "Return hi again", "operation": { - "$id": "709", + "$id": "716", "name": "WithApiVersion", "resourceName": "SampleTypeSpec", "doc": "Return hi again", "accessibility": "public", "parameters": [ { - "$id": "710", + "$id": "717", "kind": "header", "name": "p1", "serializedName": "p1", "type": { - "$id": "711", + "$id": "718", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9891,12 +9973,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.WithApiVersion.p1", "methodParameterSegments": [ { - "$id": "712", + "$id": "719", "kind": "method", "name": "p1", "serializedName": "p1", "type": { - "$id": "713", + "$id": "720", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9914,12 +9996,12 @@ ] }, { - "$id": "714", + "$id": "721", "kind": "query", "name": "apiVersion", "serializedName": "apiVersion", "type": { - "$id": "715", + "$id": "722", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9929,7 +10011,7 @@ "explode": false, "defaultValue": { "type": { - "$id": "716", + "$id": "723", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -9943,12 +10025,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "717", + "$id": "724", "kind": "method", "name": "apiVersion", "serializedName": "apiVersion", "type": { - "$id": "718", + "$id": "725", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9958,7 +10040,7 @@ "isApiVersion": true, "defaultValue": { "type": { - "$id": "719", + "$id": "726", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -9996,7 +10078,7 @@ }, "parameters": [ { - "$ref": "712" + "$ref": "719" } ], "response": {}, @@ -10006,7 +10088,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.WithApiVersion" }, { - "$id": "720", + "$id": "727", "kind": "paging", "name": "ListWithNextLink", "accessibility": "public", @@ -10016,14 +10098,14 @@ ], "doc": "List things with nextlink", "operation": { - "$id": "721", + "$id": "728", "name": "ListWithNextLink", "resourceName": "SampleTypeSpec", "doc": "List things with nextlink", "accessibility": "public", "parameters": [ { - "$id": "722", + "$id": "729", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -10039,7 +10121,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.ListWithNextLink.accept", "methodParameterSegments": [ { - "$id": "723", + "$id": "730", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -10064,7 +10146,7 @@ 200 ], "bodyType": { - "$ref": "330" + "$ref": "332" }, "headers": [], "isErrorResponse": false, @@ -10085,12 +10167,12 @@ }, "parameters": [ { - "$ref": "723" + "$ref": "730" } ], "response": { "type": { - "$ref": "332" + "$ref": "334" }, "resultSegments": [ "things" @@ -10114,7 +10196,7 @@ } }, { - "$id": "724", + "$id": "731", "kind": "paging", "name": "ListWithStringNextLink", "accessibility": "public", @@ -10124,14 +10206,14 @@ ], "doc": "List things with nextlink", "operation": { - "$id": "725", + "$id": "732", "name": "ListWithStringNextLink", "resourceName": "SampleTypeSpec", "doc": "List things with nextlink", "accessibility": "public", "parameters": [ { - "$id": "726", + "$id": "733", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -10147,7 +10229,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.ListWithStringNextLink.accept", "methodParameterSegments": [ { - "$id": "727", + "$id": "734", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -10172,7 +10254,7 @@ 200 ], "bodyType": { - "$ref": "335" + "$ref": "337" }, "headers": [], "isErrorResponse": false, @@ -10193,12 +10275,12 @@ }, "parameters": [ { - "$ref": "727" + "$ref": "734" } ], "response": { "type": { - "$ref": "332" + "$ref": "334" }, "resultSegments": [ "things" @@ -10222,7 +10304,7 @@ } }, { - "$id": "728", + "$id": "735", "kind": "paging", "name": "ListWithContinuationToken", "accessibility": "public", @@ -10232,19 +10314,19 @@ ], "doc": "List things with continuation token", "operation": { - "$id": "729", + "$id": "736", "name": "ListWithContinuationToken", "resourceName": "SampleTypeSpec", "doc": "List things with continuation token", "accessibility": "public", "parameters": [ { - "$id": "730", + "$id": "737", "kind": "query", "name": "token", "serializedName": "token", "type": { - "$id": "731", + "$id": "738", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10259,12 +10341,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "732", + "$id": "739", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "733", + "$id": "740", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10282,7 +10364,7 @@ ] }, { - "$id": "734", + "$id": "741", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -10298,7 +10380,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.ListWithContinuationToken.accept", "methodParameterSegments": [ { - "$id": "735", + "$id": "742", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -10323,7 +10405,7 @@ 200 ], "bodyType": { - "$ref": "339" + "$ref": "341" }, "headers": [], "isErrorResponse": false, @@ -10344,15 +10426,15 @@ }, "parameters": [ { - "$ref": "732" + "$ref": "739" }, { - "$ref": "735" + "$ref": "742" } ], "response": { "type": { - "$ref": "332" + "$ref": "334" }, "resultSegments": [ "things" @@ -10368,7 +10450,7 @@ ], "continuationToken": { "parameter": { - "$ref": "730" + "$ref": "737" }, "responseSegments": [ "nextToken" @@ -10379,7 +10461,7 @@ } }, { - "$id": "736", + "$id": "743", "kind": "paging", "name": "ListWithContinuationTokenHeaderResponse", "accessibility": "public", @@ -10389,19 +10471,19 @@ ], "doc": "List things with continuation token header response", "operation": { - "$id": "737", + "$id": "744", "name": "ListWithContinuationTokenHeaderResponse", "resourceName": "SampleTypeSpec", "doc": "List things with continuation token header response", "accessibility": "public", "parameters": [ { - "$id": "738", + "$id": "745", "kind": "query", "name": "token", "serializedName": "token", "type": { - "$id": "739", + "$id": "746", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10416,12 +10498,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "740", + "$id": "747", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "741", + "$id": "748", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10439,7 +10521,7 @@ ] }, { - "$id": "742", + "$id": "749", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -10455,7 +10537,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.ListWithContinuationTokenHeaderResponse.accept", "methodParameterSegments": [ { - "$id": "743", + "$id": "750", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -10480,14 +10562,14 @@ 200 ], "bodyType": { - "$ref": "343" + "$ref": "345" }, "headers": [ { "name": "nextToken", "nameInResponse": "next-token", "type": { - "$id": "744", + "$id": "751", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10513,15 +10595,15 @@ }, "parameters": [ { - "$ref": "740" + "$ref": "747" }, { - "$ref": "743" + "$ref": "750" } ], "response": { "type": { - "$ref": "332" + "$ref": "334" }, "resultSegments": [ "things" @@ -10537,7 +10619,7 @@ ], "continuationToken": { "parameter": { - "$ref": "738" + "$ref": "745" }, "responseSegments": [ "next-token" @@ -10548,7 +10630,7 @@ } }, { - "$id": "745", + "$id": "752", "kind": "paging", "name": "ListWithPaging", "accessibility": "public", @@ -10558,14 +10640,14 @@ ], "doc": "List things with paging", "operation": { - "$id": "746", + "$id": "753", "name": "ListWithPaging", "resourceName": "SampleTypeSpec", "doc": "List things with paging", "accessibility": "public", "parameters": [ { - "$id": "747", + "$id": "754", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -10581,7 +10663,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.ListWithPaging.accept", "methodParameterSegments": [ { - "$id": "748", + "$id": "755", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -10606,7 +10688,7 @@ 200 ], "bodyType": { - "$ref": "345" + "$ref": "347" }, "headers": [], "isErrorResponse": false, @@ -10627,12 +10709,12 @@ }, "parameters": [ { - "$ref": "748" + "$ref": "755" } ], "response": { "type": { - "$ref": "332" + "$ref": "334" }, "resultSegments": [ "items" @@ -10650,7 +10732,7 @@ } }, { - "$id": "749", + "$id": "756", "kind": "basic", "name": "EmbeddedParameters", "accessibility": "public", @@ -10660,20 +10742,20 @@ ], "doc": "An operation with embedded parameters within the body", "operation": { - "$id": "750", + "$id": "757", "name": "EmbeddedParameters", "resourceName": "SampleTypeSpec", "doc": "An operation with embedded parameters within the body", "accessibility": "public", "parameters": [ { - "$id": "751", + "$id": "758", "kind": "header", "name": "requiredHeader", "serializedName": "required-header", "doc": "required header parameter", "type": { - "$id": "752", + "$id": "759", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10688,12 +10770,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.ModelWithEmbeddedNonBodyParameters.requiredHeader", "methodParameterSegments": [ { - "$id": "753", + "$id": "760", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "347" + "$ref": "349" }, "location": "Body", "isApiVersion": false, @@ -10705,13 +10787,13 @@ "decorators": [] }, { - "$id": "754", + "$id": "761", "kind": "method", "name": "requiredHeader", "serializedName": "requiredHeader", "doc": "required header parameter", "type": { - "$ref": "351" + "$ref": "353" }, "location": "", "isApiVersion": false, @@ -10725,13 +10807,13 @@ ] }, { - "$id": "755", + "$id": "762", "kind": "header", "name": "optionalHeader", "serializedName": "optional-header", "doc": "optional header parameter", "type": { - "$id": "756", + "$id": "763", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10746,16 +10828,16 @@ "crossLanguageDefinitionId": "SampleTypeSpec.ModelWithEmbeddedNonBodyParameters.optionalHeader", "methodParameterSegments": [ { - "$ref": "753" + "$ref": "760" }, { - "$id": "757", + "$id": "764", "kind": "method", "name": "optionalHeader", "serializedName": "optionalHeader", "doc": "optional header parameter", "type": { - "$ref": "353" + "$ref": "355" }, "location": "", "isApiVersion": false, @@ -10769,13 +10851,13 @@ ] }, { - "$id": "758", + "$id": "765", "kind": "query", "name": "requiredQuery", "serializedName": "requiredQuery", "doc": "required query parameter", "type": { - "$id": "759", + "$id": "766", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10790,16 +10872,16 @@ "readOnly": false, "methodParameterSegments": [ { - "$ref": "753" + "$ref": "760" }, { - "$id": "760", + "$id": "767", "kind": "method", "name": "requiredQuery", "serializedName": "requiredQuery", "doc": "required query parameter", "type": { - "$ref": "355" + "$ref": "357" }, "location": "", "isApiVersion": false, @@ -10813,13 +10895,13 @@ ] }, { - "$id": "761", + "$id": "768", "kind": "query", "name": "optionalQuery", "serializedName": "optionalQuery", "doc": "optional query parameter", "type": { - "$id": "762", + "$id": "769", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10834,16 +10916,16 @@ "readOnly": false, "methodParameterSegments": [ { - "$ref": "753" + "$ref": "760" }, { - "$id": "763", + "$id": "770", "kind": "method", "name": "optionalQuery", "serializedName": "optionalQuery", "doc": "optional query parameter", "type": { - "$ref": "357" + "$ref": "359" }, "location": "", "isApiVersion": false, @@ -10857,7 +10939,7 @@ ] }, { - "$id": "764", + "$id": "771", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -10874,7 +10956,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.EmbeddedParameters.contentType", "methodParameterSegments": [ { - "$id": "765", + "$id": "772", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -10894,12 +10976,12 @@ ] }, { - "$id": "766", + "$id": "773", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "347" + "$ref": "349" }, "isApiVersion": false, "contentTypes": [ @@ -10913,7 +10995,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.EmbeddedParameters.body", "methodParameterSegments": [ { - "$ref": "753" + "$ref": "760" } ] } @@ -10942,10 +11024,10 @@ }, "parameters": [ { - "$ref": "753" + "$ref": "760" }, { - "$ref": "765" + "$ref": "772" } ], "response": {}, @@ -10955,7 +11037,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.EmbeddedParameters" }, { - "$id": "767", + "$id": "774", "kind": "basic", "name": "DynamicModelOperation", "accessibility": "public", @@ -10965,14 +11047,14 @@ ], "doc": "An operation with a dynamic model", "operation": { - "$id": "768", + "$id": "775", "name": "DynamicModelOperation", "resourceName": "SampleTypeSpec", "doc": "An operation with a dynamic model", "accessibility": "public", "parameters": [ { - "$id": "769", + "$id": "776", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -10989,7 +11071,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.DynamicModelOperation.contentType", "methodParameterSegments": [ { - "$id": "770", + "$id": "777", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -11009,12 +11091,12 @@ ] }, { - "$id": "771", + "$id": "778", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "358" + "$ref": "360" }, "isApiVersion": false, "contentTypes": [ @@ -11028,12 +11110,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.DynamicModelOperation.body", "methodParameterSegments": [ { - "$id": "772", + "$id": "779", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "358" + "$ref": "360" }, "location": "Body", "isApiVersion": false, @@ -11071,10 +11153,10 @@ }, "parameters": [ { - "$ref": "772" + "$ref": "779" }, { - "$ref": "770" + "$ref": "777" } ], "response": {}, @@ -11084,7 +11166,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.DynamicModelOperation" }, { - "$id": "773", + "$id": "780", "kind": "basic", "name": "GetXmlAdvancedModel", "accessibility": "public", @@ -11094,14 +11176,14 @@ ], "doc": "Get an advanced XML model with various property types", "operation": { - "$id": "774", + "$id": "781", "name": "GetXmlAdvancedModel", "resourceName": "SampleTypeSpec", "doc": "Get an advanced XML model with various property types", "accessibility": "public", "parameters": [ { - "$id": "775", + "$id": "782", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -11117,7 +11199,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.GetXmlAdvancedModel.accept", "methodParameterSegments": [ { - "$id": "776", + "$id": "783", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -11142,7 +11224,7 @@ 200 ], "bodyType": { - "$ref": "396" + "$ref": "398" }, "headers": [ { @@ -11171,12 +11253,12 @@ }, "parameters": [ { - "$ref": "776" + "$ref": "783" } ], "response": { "type": { - "$ref": "396" + "$ref": "398" } }, "isOverride": false, @@ -11185,7 +11267,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.GetXmlAdvancedModel" }, { - "$id": "777", + "$id": "784", "kind": "basic", "name": "UpdateXmlAdvancedModel", "accessibility": "public", @@ -11195,14 +11277,14 @@ ], "doc": "Update an advanced XML model with various property types", "operation": { - "$id": "778", + "$id": "785", "name": "UpdateXmlAdvancedModel", "resourceName": "SampleTypeSpec", "doc": "Update an advanced XML model with various property types", "accessibility": "public", "parameters": [ { - "$id": "779", + "$id": "786", "kind": "header", "name": "contentType", "serializedName": "Content-Type", @@ -11218,7 +11300,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.UpdateXmlAdvancedModel.contentType", "methodParameterSegments": [ { - "$id": "780", + "$id": "787", "kind": "method", "name": "contentType", "serializedName": "Content-Type", @@ -11237,7 +11319,7 @@ ] }, { - "$id": "781", + "$id": "788", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -11253,7 +11335,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.UpdateXmlAdvancedModel.accept", "methodParameterSegments": [ { - "$id": "782", + "$id": "789", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -11272,12 +11354,12 @@ ] }, { - "$id": "783", + "$id": "790", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "396" + "$ref": "398" }, "isApiVersion": false, "contentTypes": [ @@ -11291,12 +11373,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.UpdateXmlAdvancedModel.body", "methodParameterSegments": [ { - "$id": "784", + "$id": "791", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "396" + "$ref": "398" }, "location": "Body", "isApiVersion": false, @@ -11316,7 +11398,7 @@ 200 ], "bodyType": { - "$ref": "396" + "$ref": "398" }, "headers": [ { @@ -11348,18 +11430,18 @@ }, "parameters": [ { - "$ref": "784" + "$ref": "791" }, { - "$ref": "780" + "$ref": "787" }, { - "$ref": "782" + "$ref": "789" } ], "response": { "type": { - "$ref": "396" + "$ref": "398" } }, "isOverride": false, @@ -11370,12 +11452,12 @@ ], "parameters": [ { - "$id": "785", + "$id": "792", "kind": "endpoint", "name": "sampleTypeSpecUrl", "serializedName": "sampleTypeSpecUrl", "type": { - "$id": "786", + "$id": "793", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -11390,7 +11472,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.sampleTypeSpecUrl" }, { - "$ref": "717" + "$ref": "724" } ], "initializedBy": 1, @@ -11402,13 +11484,197 @@ ], "children": [ { - "$id": "787", + "$id": "794", + "kind": "client", + "name": "Notebooks", + "namespace": "SampleTypeSpec", + "methods": [ + { + "$id": "795", + "kind": "basic", + "name": "getNotebook", + "accessibility": "public", + "apiVersions": [ + "2024-07-16-preview", + "2024-08-16-preview" + ], + "doc": "Get a notebook by name", + "operation": { + "$id": "796", + "name": "getNotebook", + "resourceName": "Notebooks", + "doc": "Get a notebook by name", + "accessibility": "public", + "parameters": [ + { + "$id": "797", + "kind": "path", + "name": "notebookName", + "serializedName": "notebookName", + "type": { + "$id": "798", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "isApiVersion": false, + "explode": false, + "style": "simple", + "allowReserved": false, + "skipUrlEncoding": false, + "optional": false, + "scope": "Client", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "SampleTypeSpec.Notebooks.getNotebook.notebookName", + "methodParameterSegments": [ + { + "$id": "799", + "kind": "method", + "name": "notebook", + "serializedName": "notebook", + "type": { + "$id": "800", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "location": "", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "SampleTypeSpec.NotebookClientParams.notebook", + "readOnly": false, + "access": "public", + "decorators": [], + "paramAlias": "notebookName" + } + ] + }, + { + "$id": "801", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "188" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "SampleTypeSpec.Notebooks.getNotebook.accept", + "methodParameterSegments": [ + { + "$id": "802", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "188" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "SampleTypeSpec.Notebooks.getNotebook.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "494" + }, + "headers": [], + "isErrorResponse": false, + "contentTypes": [ + "application/json" + ] + } + ], + "httpMethod": "GET", + "uri": "{sampleTypeSpecUrl}", + "path": "/notebooks/{notebookName}", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "SampleTypeSpec.Notebooks.getNotebook", + "decorators": [], + "namespace": "SampleTypeSpec" + }, + "parameters": [ + { + "$ref": "802" + } + ], + "response": { + "type": { + "$ref": "494" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "SampleTypeSpec.Notebooks.getNotebook" + } + ], + "parameters": [ + { + "$id": "803", + "kind": "endpoint", + "name": "sampleTypeSpecUrl", + "serializedName": "sampleTypeSpecUrl", + "type": { + "$id": "804", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "serverUrlTemplate": "{sampleTypeSpecUrl}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "SampleTypeSpec.Notebooks.sampleTypeSpecUrl" + }, + { + "$ref": "799" + } + ], + "initializedBy": 3, + "decorators": [], + "crossLanguageDefinitionId": "SampleTypeSpec.Notebooks", + "apiVersions": [ + "2024-07-16-preview", + "2024-08-16-preview" + ], + "parent": { + "$ref": "528" + }, + "isMultiServiceClient": false + }, + { + "$id": "805", "kind": "client", "name": "AnimalOperations", "namespace": "SampleTypeSpec", "methods": [ { - "$id": "788", + "$id": "806", "kind": "basic", "name": "updatePetAsAnimal", "accessibility": "public", @@ -11418,20 +11684,20 @@ ], "doc": "Update a pet as an animal", "operation": { - "$id": "789", + "$id": "807", "name": "updatePetAsAnimal", "resourceName": "AnimalOperations", "doc": "Update a pet as an animal", "accessibility": "public", "parameters": [ { - "$id": "790", + "$id": "808", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "188" + "$ref": "190" }, "isApiVersion": false, "optional": false, @@ -11442,13 +11708,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.AnimalOperations.updatePetAsAnimal.contentType", "methodParameterSegments": [ { - "$id": "791", + "$id": "809", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "188" + "$ref": "190" }, "location": "Header", "isApiVersion": false, @@ -11462,12 +11728,12 @@ ] }, { - "$id": "792", + "$id": "810", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "190" + "$ref": "192" }, "isApiVersion": false, "optional": false, @@ -11478,12 +11744,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.AnimalOperations.updatePetAsAnimal.accept", "methodParameterSegments": [ { - "$id": "793", + "$id": "811", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "190" + "$ref": "192" }, "location": "Header", "isApiVersion": false, @@ -11497,12 +11763,12 @@ ] }, { - "$id": "794", + "$id": "812", "kind": "body", "name": "animal", "serializedName": "animal", "type": { - "$ref": "492" + "$ref": "499" }, "isApiVersion": false, "contentTypes": [ @@ -11516,12 +11782,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.AnimalOperations.updatePetAsAnimal.animal", "methodParameterSegments": [ { - "$id": "795", + "$id": "813", "kind": "method", "name": "animal", "serializedName": "animal", "type": { - "$ref": "492" + "$ref": "499" }, "location": "Body", "isApiVersion": false, @@ -11541,7 +11807,7 @@ 200 ], "bodyType": { - "$ref": "492" + "$ref": "499" }, "headers": [], "isErrorResponse": false, @@ -11565,18 +11831,18 @@ }, "parameters": [ { - "$ref": "795" + "$ref": "813" }, { - "$ref": "791" + "$ref": "809" }, { - "$ref": "793" + "$ref": "811" } ], "response": { "type": { - "$ref": "492" + "$ref": "499" } }, "isOverride": false, @@ -11585,7 +11851,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.AnimalOperations.updatePetAsAnimal" }, { - "$id": "796", + "$id": "814", "kind": "basic", "name": "updateDogAsAnimal", "accessibility": "public", @@ -11595,20 +11861,20 @@ ], "doc": "Update a dog as an animal", "operation": { - "$id": "797", + "$id": "815", "name": "updateDogAsAnimal", "resourceName": "AnimalOperations", "doc": "Update a dog as an animal", "accessibility": "public", "parameters": [ { - "$id": "798", + "$id": "816", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "192" + "$ref": "194" }, "isApiVersion": false, "optional": false, @@ -11619,13 +11885,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.AnimalOperations.updateDogAsAnimal.contentType", "methodParameterSegments": [ { - "$id": "799", + "$id": "817", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "192" + "$ref": "194" }, "location": "Header", "isApiVersion": false, @@ -11639,12 +11905,12 @@ ] }, { - "$id": "800", + "$id": "818", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "194" + "$ref": "196" }, "isApiVersion": false, "optional": false, @@ -11655,12 +11921,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.AnimalOperations.updateDogAsAnimal.accept", "methodParameterSegments": [ { - "$id": "801", + "$id": "819", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "194" + "$ref": "196" }, "location": "Header", "isApiVersion": false, @@ -11674,12 +11940,12 @@ ] }, { - "$id": "802", + "$id": "820", "kind": "body", "name": "animal", "serializedName": "animal", "type": { - "$ref": "492" + "$ref": "499" }, "isApiVersion": false, "contentTypes": [ @@ -11693,12 +11959,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.AnimalOperations.updateDogAsAnimal.animal", "methodParameterSegments": [ { - "$id": "803", + "$id": "821", "kind": "method", "name": "animal", "serializedName": "animal", "type": { - "$ref": "492" + "$ref": "499" }, "location": "Body", "isApiVersion": false, @@ -11718,7 +11984,7 @@ 200 ], "bodyType": { - "$ref": "492" + "$ref": "499" }, "headers": [], "isErrorResponse": false, @@ -11742,18 +12008,18 @@ }, "parameters": [ { - "$ref": "803" + "$ref": "821" }, { - "$ref": "799" + "$ref": "817" }, { - "$ref": "801" + "$ref": "819" } ], "response": { "type": { - "$ref": "492" + "$ref": "499" } }, "isOverride": false, @@ -11764,12 +12030,12 @@ ], "parameters": [ { - "$id": "804", + "$id": "822", "kind": "endpoint", "name": "sampleTypeSpecUrl", "serializedName": "sampleTypeSpecUrl", "type": { - "$id": "805", + "$id": "823", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -11792,18 +12058,18 @@ "2024-08-16-preview" ], "parent": { - "$ref": "521" + "$ref": "528" }, "isMultiServiceClient": false }, { - "$id": "806", + "$id": "824", "kind": "client", "name": "PetOperations", "namespace": "SampleTypeSpec", "methods": [ { - "$id": "807", + "$id": "825", "kind": "basic", "name": "updatePetAsPet", "accessibility": "public", @@ -11813,20 +12079,20 @@ ], "doc": "Update a pet as a pet", "operation": { - "$id": "808", + "$id": "826", "name": "updatePetAsPet", "resourceName": "PetOperations", "doc": "Update a pet as a pet", "accessibility": "public", "parameters": [ { - "$id": "809", + "$id": "827", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "196" + "$ref": "198" }, "isApiVersion": false, "optional": false, @@ -11837,13 +12103,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PetOperations.updatePetAsPet.contentType", "methodParameterSegments": [ { - "$id": "810", + "$id": "828", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "196" + "$ref": "198" }, "location": "Header", "isApiVersion": false, @@ -11857,12 +12123,12 @@ ] }, { - "$id": "811", + "$id": "829", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "198" + "$ref": "200" }, "isApiVersion": false, "optional": false, @@ -11873,12 +12139,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PetOperations.updatePetAsPet.accept", "methodParameterSegments": [ { - "$id": "812", + "$id": "830", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "198" + "$ref": "200" }, "location": "Header", "isApiVersion": false, @@ -11892,12 +12158,12 @@ ] }, { - "$id": "813", + "$id": "831", "kind": "body", "name": "pet", "serializedName": "pet", "type": { - "$ref": "497" + "$ref": "504" }, "isApiVersion": false, "contentTypes": [ @@ -11911,12 +12177,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PetOperations.updatePetAsPet.pet", "methodParameterSegments": [ { - "$id": "814", + "$id": "832", "kind": "method", "name": "pet", "serializedName": "pet", "type": { - "$ref": "497" + "$ref": "504" }, "location": "Body", "isApiVersion": false, @@ -11936,7 +12202,7 @@ 200 ], "bodyType": { - "$ref": "497" + "$ref": "504" }, "headers": [], "isErrorResponse": false, @@ -11960,18 +12226,18 @@ }, "parameters": [ { - "$ref": "814" + "$ref": "832" }, { - "$ref": "810" + "$ref": "828" }, { - "$ref": "812" + "$ref": "830" } ], "response": { "type": { - "$ref": "497" + "$ref": "504" } }, "isOverride": false, @@ -11980,7 +12246,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PetOperations.updatePetAsPet" }, { - "$id": "815", + "$id": "833", "kind": "basic", "name": "updateDogAsPet", "accessibility": "public", @@ -11990,20 +12256,20 @@ ], "doc": "Update a dog as a pet", "operation": { - "$id": "816", + "$id": "834", "name": "updateDogAsPet", "resourceName": "PetOperations", "doc": "Update a dog as a pet", "accessibility": "public", "parameters": [ { - "$id": "817", + "$id": "835", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "200" + "$ref": "202" }, "isApiVersion": false, "optional": false, @@ -12014,13 +12280,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PetOperations.updateDogAsPet.contentType", "methodParameterSegments": [ { - "$id": "818", + "$id": "836", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "200" + "$ref": "202" }, "location": "Header", "isApiVersion": false, @@ -12034,12 +12300,12 @@ ] }, { - "$id": "819", + "$id": "837", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "202" + "$ref": "204" }, "isApiVersion": false, "optional": false, @@ -12050,12 +12316,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PetOperations.updateDogAsPet.accept", "methodParameterSegments": [ { - "$id": "820", + "$id": "838", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "202" + "$ref": "204" }, "location": "Header", "isApiVersion": false, @@ -12069,12 +12335,12 @@ ] }, { - "$id": "821", + "$id": "839", "kind": "body", "name": "pet", "serializedName": "pet", "type": { - "$ref": "497" + "$ref": "504" }, "isApiVersion": false, "contentTypes": [ @@ -12088,12 +12354,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PetOperations.updateDogAsPet.pet", "methodParameterSegments": [ { - "$id": "822", + "$id": "840", "kind": "method", "name": "pet", "serializedName": "pet", "type": { - "$ref": "497" + "$ref": "504" }, "location": "Body", "isApiVersion": false, @@ -12113,7 +12379,7 @@ 200 ], "bodyType": { - "$ref": "497" + "$ref": "504" }, "headers": [], "isErrorResponse": false, @@ -12137,18 +12403,18 @@ }, "parameters": [ { - "$ref": "822" + "$ref": "840" }, { - "$ref": "818" + "$ref": "836" }, { - "$ref": "820" + "$ref": "838" } ], "response": { "type": { - "$ref": "497" + "$ref": "504" } }, "isOverride": false, @@ -12159,12 +12425,12 @@ ], "parameters": [ { - "$id": "823", + "$id": "841", "kind": "endpoint", "name": "sampleTypeSpecUrl", "serializedName": "sampleTypeSpecUrl", "type": { - "$id": "824", + "$id": "842", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -12187,18 +12453,18 @@ "2024-08-16-preview" ], "parent": { - "$ref": "521" + "$ref": "528" }, "isMultiServiceClient": false }, { - "$id": "825", + "$id": "843", "kind": "client", "name": "DogOperations", "namespace": "SampleTypeSpec", "methods": [ { - "$id": "826", + "$id": "844", "kind": "basic", "name": "updateDogAsDog", "accessibility": "public", @@ -12208,20 +12474,20 @@ ], "doc": "Update a dog as a dog", "operation": { - "$id": "827", + "$id": "845", "name": "updateDogAsDog", "resourceName": "DogOperations", "doc": "Update a dog as a dog", "accessibility": "public", "parameters": [ { - "$id": "828", + "$id": "846", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "204" + "$ref": "206" }, "isApiVersion": false, "optional": false, @@ -12232,13 +12498,13 @@ "crossLanguageDefinitionId": "SampleTypeSpec.DogOperations.updateDogAsDog.contentType", "methodParameterSegments": [ { - "$id": "829", + "$id": "847", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "204" + "$ref": "206" }, "location": "Header", "isApiVersion": false, @@ -12252,12 +12518,12 @@ ] }, { - "$id": "830", + "$id": "848", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "206" + "$ref": "208" }, "isApiVersion": false, "optional": false, @@ -12268,12 +12534,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.DogOperations.updateDogAsDog.accept", "methodParameterSegments": [ { - "$id": "831", + "$id": "849", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "206" + "$ref": "208" }, "location": "Header", "isApiVersion": false, @@ -12287,12 +12553,12 @@ ] }, { - "$id": "832", + "$id": "850", "kind": "body", "name": "dog", "serializedName": "dog", "type": { - "$ref": "501" + "$ref": "508" }, "isApiVersion": false, "contentTypes": [ @@ -12306,12 +12572,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.DogOperations.updateDogAsDog.dog", "methodParameterSegments": [ { - "$id": "833", + "$id": "851", "kind": "method", "name": "dog", "serializedName": "dog", "type": { - "$ref": "501" + "$ref": "508" }, "location": "Body", "isApiVersion": false, @@ -12331,7 +12597,7 @@ 200 ], "bodyType": { - "$ref": "501" + "$ref": "508" }, "headers": [], "isErrorResponse": false, @@ -12355,18 +12621,18 @@ }, "parameters": [ { - "$ref": "833" + "$ref": "851" }, { - "$ref": "829" + "$ref": "847" }, { - "$ref": "831" + "$ref": "849" } ], "response": { "type": { - "$ref": "501" + "$ref": "508" } }, "isOverride": false, @@ -12377,12 +12643,12 @@ ], "parameters": [ { - "$id": "834", + "$id": "852", "kind": "endpoint", "name": "sampleTypeSpecUrl", "serializedName": "sampleTypeSpecUrl", "type": { - "$id": "835", + "$id": "853", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -12405,18 +12671,18 @@ "2024-08-16-preview" ], "parent": { - "$ref": "521" + "$ref": "528" }, "isMultiServiceClient": false }, { - "$id": "836", + "$id": "854", "kind": "client", "name": "PlantOperations", "namespace": "SampleTypeSpec", "methods": [ { - "$id": "837", + "$id": "855", "kind": "basic", "name": "getTree", "accessibility": "public", @@ -12426,19 +12692,19 @@ ], "doc": "Get a tree as a plant", "operation": { - "$id": "838", + "$id": "856", "name": "getTree", "resourceName": "PlantOperations", "doc": "Get a tree as a plant", "accessibility": "public", "parameters": [ { - "$id": "839", + "$id": "857", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "208" + "$ref": "210" }, "isApiVersion": false, "optional": false, @@ -12449,12 +12715,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.getTree.accept", "methodParameterSegments": [ { - "$id": "840", + "$id": "858", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "208" + "$ref": "210" }, "location": "Header", "isApiVersion": false, @@ -12474,14 +12740,14 @@ 200 ], "bodyType": { - "$ref": "505" + "$ref": "512" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "210" + "$ref": "212" } } ], @@ -12503,12 +12769,12 @@ }, "parameters": [ { - "$ref": "840" + "$ref": "858" } ], "response": { "type": { - "$ref": "505" + "$ref": "512" } }, "isOverride": false, @@ -12517,7 +12783,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.getTree" }, { - "$id": "841", + "$id": "859", "kind": "basic", "name": "getTreeAsJson", "accessibility": "public", @@ -12527,19 +12793,19 @@ ], "doc": "Get a tree as a plant", "operation": { - "$id": "842", + "$id": "860", "name": "getTreeAsJson", "resourceName": "PlantOperations", "doc": "Get a tree as a plant", "accessibility": "public", "parameters": [ { - "$id": "843", + "$id": "861", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "212" + "$ref": "214" }, "isApiVersion": false, "optional": false, @@ -12550,12 +12816,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.getTreeAsJson.accept", "methodParameterSegments": [ { - "$id": "844", + "$id": "862", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "212" + "$ref": "214" }, "location": "Header", "isApiVersion": false, @@ -12575,14 +12841,14 @@ 200 ], "bodyType": { - "$ref": "505" + "$ref": "512" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "214" + "$ref": "216" } } ], @@ -12604,12 +12870,12 @@ }, "parameters": [ { - "$ref": "844" + "$ref": "862" } ], "response": { "type": { - "$ref": "505" + "$ref": "512" } }, "isOverride": false, @@ -12618,7 +12884,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.getTreeAsJson" }, { - "$id": "845", + "$id": "863", "kind": "basic", "name": "updateTree", "accessibility": "public", @@ -12628,19 +12894,19 @@ ], "doc": "Update a tree as a plant", "operation": { - "$id": "846", + "$id": "864", "name": "updateTree", "resourceName": "PlantOperations", "doc": "Update a tree as a plant", "accessibility": "public", "parameters": [ { - "$id": "847", + "$id": "865", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "216" + "$ref": "218" }, "isApiVersion": false, "optional": false, @@ -12651,12 +12917,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.updateTree.contentType", "methodParameterSegments": [ { - "$id": "848", + "$id": "866", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "216" + "$ref": "218" }, "location": "Header", "isApiVersion": false, @@ -12670,12 +12936,12 @@ ] }, { - "$id": "849", + "$id": "867", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "220" + "$ref": "222" }, "isApiVersion": false, "optional": false, @@ -12686,12 +12952,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.updateTree.accept", "methodParameterSegments": [ { - "$id": "850", + "$id": "868", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "220" + "$ref": "222" }, "location": "Header", "isApiVersion": false, @@ -12705,12 +12971,12 @@ ] }, { - "$id": "851", + "$id": "869", "kind": "body", "name": "tree", "serializedName": "tree", "type": { - "$ref": "505" + "$ref": "512" }, "isApiVersion": false, "contentTypes": [ @@ -12724,12 +12990,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.updateTree.tree", "methodParameterSegments": [ { - "$id": "852", + "$id": "870", "kind": "method", "name": "tree", "serializedName": "tree", "type": { - "$ref": "505" + "$ref": "512" }, "location": "Body", "isApiVersion": false, @@ -12749,14 +13015,14 @@ 200 ], "bodyType": { - "$ref": "505" + "$ref": "512" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "222" + "$ref": "224" } } ], @@ -12781,18 +13047,18 @@ }, "parameters": [ { - "$ref": "852" + "$ref": "870" }, { - "$ref": "848" + "$ref": "866" }, { - "$ref": "850" + "$ref": "868" } ], "response": { "type": { - "$ref": "505" + "$ref": "512" } }, "isOverride": false, @@ -12801,7 +13067,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.updateTree" }, { - "$id": "853", + "$id": "871", "kind": "basic", "name": "updateTreeAsJson", "accessibility": "public", @@ -12811,19 +13077,19 @@ ], "doc": "Update a tree as a plant", "operation": { - "$id": "854", + "$id": "872", "name": "updateTreeAsJson", "resourceName": "PlantOperations", "doc": "Update a tree as a plant", "accessibility": "public", "parameters": [ { - "$id": "855", + "$id": "873", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "224" + "$ref": "226" }, "isApiVersion": false, "optional": false, @@ -12834,12 +13100,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.updateTreeAsJson.contentType", "methodParameterSegments": [ { - "$id": "856", + "$id": "874", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "224" + "$ref": "226" }, "location": "Header", "isApiVersion": false, @@ -12853,12 +13119,12 @@ ] }, { - "$id": "857", + "$id": "875", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "228" + "$ref": "230" }, "isApiVersion": false, "optional": false, @@ -12869,12 +13135,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.updateTreeAsJson.accept", "methodParameterSegments": [ { - "$id": "858", + "$id": "876", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "228" + "$ref": "230" }, "location": "Header", "isApiVersion": false, @@ -12888,12 +13154,12 @@ ] }, { - "$id": "859", + "$id": "877", "kind": "body", "name": "tree", "serializedName": "tree", "type": { - "$ref": "505" + "$ref": "512" }, "isApiVersion": false, "contentTypes": [ @@ -12907,12 +13173,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.PlantOperations.updateTreeAsJson.tree", "methodParameterSegments": [ { - "$id": "860", + "$id": "878", "kind": "method", "name": "tree", "serializedName": "tree", "type": { - "$ref": "505" + "$ref": "512" }, "location": "Body", "isApiVersion": false, @@ -12932,14 +13198,14 @@ 200 ], "bodyType": { - "$ref": "505" + "$ref": "512" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "230" + "$ref": "232" } } ], @@ -12964,18 +13230,18 @@ }, "parameters": [ { - "$ref": "860" + "$ref": "878" }, { - "$ref": "856" + "$ref": "874" }, { - "$ref": "858" + "$ref": "876" } ], "response": { "type": { - "$ref": "505" + "$ref": "512" } }, "isOverride": false, @@ -12986,12 +13252,12 @@ ], "parameters": [ { - "$id": "861", + "$id": "879", "kind": "endpoint", "name": "sampleTypeSpecUrl", "serializedName": "sampleTypeSpecUrl", "type": { - "$id": "862", + "$id": "880", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -13014,18 +13280,18 @@ "2024-08-16-preview" ], "parent": { - "$ref": "521" + "$ref": "528" }, "isMultiServiceClient": false }, { - "$id": "863", + "$id": "881", "kind": "client", "name": "Metrics", "namespace": "SampleTypeSpec", "methods": [ { - "$id": "864", + "$id": "882", "kind": "basic", "name": "getWidgetMetrics", "accessibility": "public", @@ -13035,19 +13301,19 @@ ], "doc": "Get Widget metrics for given day of week", "operation": { - "$id": "865", + "$id": "883", "name": "getWidgetMetrics", "resourceName": "Metrics", "doc": "Get Widget metrics for given day of week", "accessibility": "public", "parameters": [ { - "$id": "866", + "$id": "884", "kind": "path", "name": "metricsNamespace", "serializedName": "metricsNamespace", "type": { - "$id": "867", + "$id": "885", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -13065,12 +13331,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.Metrics.getWidgetMetrics.metricsNamespace", "methodParameterSegments": [ { - "$id": "868", + "$id": "886", "kind": "method", "name": "metricsNamespace", "serializedName": "metricsNamespace", "type": { - "$id": "869", + "$id": "887", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -13088,7 +13354,7 @@ ] }, { - "$id": "870", + "$id": "888", "kind": "path", "name": "day", "serializedName": "day", @@ -13107,7 +13373,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.Metrics.getWidgetMetrics.day", "methodParameterSegments": [ { - "$id": "871", + "$id": "889", "kind": "method", "name": "day", "serializedName": "day", @@ -13126,12 +13392,12 @@ ] }, { - "$id": "872", + "$id": "890", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "232" + "$ref": "234" }, "isApiVersion": false, "optional": false, @@ -13142,12 +13408,12 @@ "crossLanguageDefinitionId": "SampleTypeSpec.Metrics.getWidgetMetrics.accept", "methodParameterSegments": [ { - "$id": "873", + "$id": "891", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "232" + "$ref": "234" }, "location": "Header", "isApiVersion": false, @@ -13167,7 +13433,7 @@ 200 ], "bodyType": { - "$ref": "516" + "$ref": "523" }, "headers": [], "isErrorResponse": false, @@ -13188,15 +13454,15 @@ }, "parameters": [ { - "$ref": "871" + "$ref": "889" }, { - "$ref": "873" + "$ref": "891" } ], "response": { "type": { - "$ref": "516" + "$ref": "523" } }, "isOverride": false, @@ -13207,12 +13473,12 @@ ], "parameters": [ { - "$id": "874", + "$id": "892", "kind": "endpoint", "name": "sampleTypeSpecUrl", "serializedName": "sampleTypeSpecUrl", "type": { - "$id": "875", + "$id": "893", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -13227,7 +13493,7 @@ "crossLanguageDefinitionId": "SampleTypeSpec.Metrics.sampleTypeSpecUrl" }, { - "$ref": "868" + "$ref": "886" } ], "initializedBy": 3, @@ -13238,7 +13504,7 @@ "2024-08-16-preview" ], "parent": { - "$ref": "521" + "$ref": "528" }, "isMultiServiceClient": false } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/OAuth2/OAuth2Tests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/OAuth2/OAuth2Tests.cs index dc6e99bee90..f40e866724e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/OAuth2/OAuth2Tests.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/OAuth2/OAuth2Tests.cs @@ -22,12 +22,12 @@ public Task Valid() => Test(async (host) => // create a test client to access the private field "_flows". This will be used to pass to the test token provider. var tokenProvider = new ClientCredentialTokenProvider("myClientId", "myClientSecret"); var testClient = new OAuth2Client(tokenProvider); - var flowsField = testClient.GetType().GetField("_flows", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + var flowsField = testClient.GetType().GetField("_flows", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static); Assert.IsNotNull(flowsField, "Flows field should not be null"); - Assert.IsInstanceOf[]>(flowsField!.GetValue(testClient), "Flows field should be of type Dictionary[]"); + Assert.IsInstanceOf[]>(flowsField!.GetValue(null), "Flows field should be of type Dictionary[]"); // Retrieve the value of the field and cast it to the expected type. - var flows = flowsField!.GetValue(testClient) as Dictionary[]; + var flows = flowsField!.GetValue(null) as Dictionary[]; Assert.IsNotNull(flows, "Flows field should be of type Dictionary[]"); // Parse the generated scope to use in the test. @@ -62,12 +62,12 @@ public Task Invalid() => Test((host) => // create a test client to access the private field "_flows". This will be used to pass to the test token provider. var tokenProvider = new ClientCredentialTokenProvider("myClientId", "myClientSecret"); var testClient = new OAuth2Client(tokenProvider); - var flowsField = testClient.GetType().GetField("_flows", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + var flowsField = testClient.GetType().GetField("_flows", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static); Assert.IsNotNull(flowsField, "Flows field should not be null"); - Assert.IsInstanceOf[]>(flowsField!.GetValue(testClient), "Flows field should be of type Dictionary[]"); + Assert.IsInstanceOf[]>(flowsField!.GetValue(null), "Flows field should be of type Dictionary[]"); // Retrieve the value of the field and cast it to the expected type. - var flows = flowsField!.GetValue(testClient) as Dictionary[]; + var flows = flowsField!.GetValue(null) as Dictionary[]; Assert.IsNotNull(flows, "Flows field should be of type Dictionary[]"); // Parse the generated scope to use in the test. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/Union/UnionAuthTests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/Union/UnionAuthTests.cs index e95d981e829..00084d6ed77 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/Union/UnionAuthTests.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Authentication/Union/UnionAuthTests.cs @@ -29,12 +29,12 @@ public Task AuthenticationUnionValidToken() => Test(async (host) => // create a test client to access the private field "_flows". This will be used to pass to the test token provider. var tokenProvider = new ClientCredentialTokenProvider("myClientId", "myClientSecret"); var testClient = new UnionClient(tokenProvider); - var flowsField = testClient.GetType().GetField("_flows", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + var flowsField = testClient.GetType().GetField("_flows", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static); Assert.IsNotNull(flowsField, "Flows field should not be null"); - Assert.IsInstanceOf[]>(flowsField!.GetValue(testClient), "Flows field should be of type Dictionary[]"); + Assert.IsInstanceOf[]>(flowsField!.GetValue(null), "Flows field should be of type Dictionary[]"); // Retrieve the value of the field and cast it to the expected type. - var flows = flowsField!.GetValue(testClient) as Dictionary[]; + var flows = flowsField!.GetValue(null) as Dictionary[]; Assert.IsNotNull(flows, "Flows field should be of type Dictionary[]"); // Parse the generated scope to use in the test. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Payload/Xml/XmlTests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Payload/Xml/XmlTests.cs index 681e3122024..bf045267f4a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Payload/Xml/XmlTests.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/Payload/Xml/XmlTests.cs @@ -1,6 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using System; +using System.ClientModel; using System.Collections.Generic; using System.Threading.Tasks; using NUnit.Framework; @@ -352,5 +354,266 @@ public Task PutModelWithEncodedNames() => Test(async (host) => Assert.AreEqual(204, response.GetRawResponse().Status); }); + + [SpectorTest] + public Task GetModelWithEnum() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithEnumValueClient().GetAsync(); + + Assert.AreEqual(200, response.GetRawResponse().Status); + + var model = response.Value; + Assert.NotNull(model); + Assert.AreEqual(Status.Success, model.Status); + }); + + [SpectorTest] + public Task PutModelWithEnum() => Test(async (host) => + { + var model = new ModelWithEnum(Status.Success); + var response = await new XmlClient(host, null).GetModelWithEnumValueClient() + .PutAsync(model); + + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithDatetime() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithDatetimeValueClient().GetAsync(); + + Assert.AreEqual(200, response.GetRawResponse().Status); + + var model = response.Value; + Assert.NotNull(model); + Assert.AreEqual(DateTimeOffset.Parse("2022-08-26T18:38:00Z"), model.Rfc3339); + Assert.AreEqual(DateTimeOffset.Parse("Fri, 26 Aug 2022 14:38:00 GMT"), model.Rfc7231); + }); + + [SpectorTest] + public Task GetXmlErrorValue() => Test((host) => + { + var exception = Assert.ThrowsAsync( + async () => await new XmlClient(host, null).GetXmlErrorValueClient().GetAsync()); + Assert.AreEqual(400, exception!.Status); + return Task.CompletedTask; + }); + + [SpectorTest] + public Task GetModelWithRenamedProperty() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithRenamedPropertyValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual("foo", response.Value.Title); + Assert.AreEqual("bar", response.Value.Author); + }); + + [SpectorTest] + public Task PutModelWithRenamedProperty() => Test(async (host) => + { + var model = new ModelWithRenamedProperty("foo", "bar"); + var response = await new XmlClient(host, null).GetModelWithRenamedPropertyValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithNestedModel() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithNestedModelValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.NotNull(response.Value.Nested); + Assert.AreEqual("foo", response.Value.Nested.Name); + Assert.AreEqual(123, response.Value.Nested.Age); + }); + + [SpectorTest] + public Task PutModelWithNestedModel() => Test(async (host) => + { + var model = new ModelWithNestedModel(new SimpleModel("foo", 123)); + var response = await new XmlClient(host, null).GetModelWithNestedModelValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithRenamedNestedModel() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithRenamedNestedModelValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.NotNull(response.Value.Author); + Assert.AreEqual("foo", response.Value.Author.Name); + }); + + [SpectorTest] + public Task PutModelWithRenamedNestedModel() => Test(async (host) => + { + var model = new ModelWithRenamedNestedModel(new Author("foo")); + var response = await new XmlClient(host, null).GetModelWithRenamedNestedModelValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithWrappedPrimitiveCustomItemNames() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithWrappedPrimitiveCustomItemNamesValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(2, response.Value.Tags.Count); + Assert.AreEqual("fiction", response.Value.Tags[0]); + Assert.AreEqual("classic", response.Value.Tags[1]); + }); + + [SpectorTest] + public Task PutModelWithWrappedPrimitiveCustomItemNames() => Test(async (host) => + { + var model = new ModelWithWrappedPrimitiveCustomItemNames(new[] { "fiction", "classic" }); + var response = await new XmlClient(host, null).GetModelWithWrappedPrimitiveCustomItemNamesValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithUnwrappedModelArray() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithUnwrappedModelArrayValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(2, response.Value.Items.Count); + Assert.AreEqual("foo", response.Value.Items[0].Name); + Assert.AreEqual(123, response.Value.Items[0].Age); + Assert.AreEqual("bar", response.Value.Items[1].Name); + Assert.AreEqual(456, response.Value.Items[1].Age); + }); + + [SpectorTest] + public Task PutModelWithUnwrappedModelArray() => Test(async (host) => + { + var model = new ModelWithUnwrappedModelArray(new[] + { + new SimpleModel("foo", 123), + new SimpleModel("bar", 456) + }); + var response = await new XmlClient(host, null).GetModelWithUnwrappedModelArrayValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithRenamedWrappedModelArray() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithRenamedWrappedModelArrayValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(2, response.Value.Items.Count); + Assert.AreEqual("foo", response.Value.Items[0].Name); + Assert.AreEqual(123, response.Value.Items[0].Age); + Assert.AreEqual("bar", response.Value.Items[1].Name); + Assert.AreEqual(456, response.Value.Items[1].Age); + }); + + [SpectorTest] + public Task PutModelWithRenamedWrappedModelArray() => Test(async (host) => + { + var model = new ModelWithRenamedWrappedModelArray(new[] + { + new SimpleModel("foo", 123), + new SimpleModel("bar", 456) + }); + var response = await new XmlClient(host, null).GetModelWithRenamedWrappedModelArrayValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithRenamedUnwrappedModelArray() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithRenamedUnwrappedModelArrayValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(2, response.Value.Items.Count); + Assert.AreEqual("foo", response.Value.Items[0].Name); + Assert.AreEqual(123, response.Value.Items[0].Age); + Assert.AreEqual("bar", response.Value.Items[1].Name); + Assert.AreEqual(456, response.Value.Items[1].Age); + }); + + [SpectorTest] + public Task PutModelWithRenamedUnwrappedModelArray() => Test(async (host) => + { + var model = new ModelWithRenamedUnwrappedModelArray(new[] + { + new SimpleModel("foo", 123), + new SimpleModel("bar", 456) + }); + var response = await new XmlClient(host, null).GetModelWithRenamedUnwrappedModelArrayValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithRenamedWrappedAndItemModelArray() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithRenamedWrappedAndItemModelArrayValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(2, response.Value.Books.Count); + Assert.AreEqual("The Great Gatsby", response.Value.Books[0].Title); + Assert.AreEqual("Les Miserables", response.Value.Books[1].Title); + }); + + [SpectorTest] + public Task PutModelWithRenamedWrappedAndItemModelArray() => Test(async (host) => + { + var model = new ModelWithRenamedWrappedAndItemModelArray(new[] + { + new Book("The Great Gatsby"), + new Book("Les Miserables") + }); + var response = await new XmlClient(host, null).GetModelWithRenamedWrappedAndItemModelArrayValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithRenamedAttribute() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithRenamedAttributeValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(123, response.Value.Id); + Assert.AreEqual("The Great Gatsby", response.Value.Title); + Assert.AreEqual("F. Scott Fitzgerald", response.Value.Author); + }); + + [SpectorTest] + public Task PutModelWithRenamedAttribute() => Test(async (host) => + { + var model = new ModelWithRenamedAttribute(123, "The Great Gatsby", "F. Scott Fitzgerald"); + var response = await new XmlClient(host, null).GetModelWithRenamedAttributeValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithNamespace() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithNamespaceValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(123, response.Value.Id); + Assert.AreEqual("The Great Gatsby", response.Value.Title); + }); + + [SpectorTest] + public Task PutModelWithNamespace() => Test(async (host) => + { + var model = new ModelWithNamespace(123, "The Great Gatsby"); + var response = await new XmlClient(host, null).GetModelWithNamespaceValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task GetModelWithNamespaceOnProperties() => Test(async (host) => + { + var response = await new XmlClient(host, null).GetModelWithNamespaceOnPropertiesValueClient().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual(123, response.Value.Id); + Assert.AreEqual("The Great Gatsby", response.Value.Title); + Assert.AreEqual("F. Scott Fitzgerald", response.Value.Author); + }); + + [SpectorTest] + public Task PutModelWithNamespaceOnProperties() => Test(async (host) => + { + var model = new ModelWithNamespaceOnProperties(123, "The Great Gatsby", "F. Scott Fitzgerald"); + var response = await new XmlClient(host, null).GetModelWithNamespaceOnPropertiesValueClient().PutAsync(model); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/SpecialWords/SpecialWordsTests.Models.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/SpecialWords/SpecialWordsTests.Models.cs index f6623d5bfc7..9c7cf20b7fa 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/SpecialWords/SpecialWordsTests.Models.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/SpecialWords/SpecialWordsTests.Models.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using SpecialWords; +using SpecialWords._ExtensibleStrings; using SpecialWords._ModelProperties; using SpecialWords._Models; using SpecialWordsAssert = SpecialWords._Models.Assert; @@ -285,5 +286,31 @@ public Task ModelProperties_SameAsModelAsync() => Test(async (host) => var response = await client.SameAsModelAsync(body); NUnit.Framework.Assert.AreEqual(204, response.GetRawResponse().Status); }); + + [SpectorTest] + public Task ModelProperties_DictMethodsAsync() => Test(async (host) => + { + DictMethods body = new DictMethods("ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok", "ok"); + var client = new SpecialWordsClient(host, null).GetModelPropertiesClient(); + var response = await client.DictMethodsAsync(body); + NUnit.Framework.Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task ModelProperties_WithListAsync() => Test(async (host) => + { + ModelWithList body = new ModelWithList("ok"); + var client = new SpecialWordsClient(host, null).GetModelPropertiesClient(); + var response = await client.WithListAsync(body); + NUnit.Framework.Assert.AreEqual(204, response.GetRawResponse().Status); + }); + + [SpectorTest] + public Task ExtensibleStrings_PutExtensibleStringValueAsync() => Test(async (host) => + { + var client = new SpecialWordsClient(host, null).GetExtensibleStringsClient(); + var response = await client.PutExtensibleStringValueAsync(ExtensibleString.Class); + NUnit.Framework.Assert.AreEqual(ExtensibleString.Class, response.Value); + }); } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs index 0550b638447..926d1cd492f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector.Tests/Http/_Type/Property/AdditionalProperties/AdditionalPropertiesTests.cs @@ -841,6 +841,45 @@ public Task SpreadRecordNonDiscriminatedUnion2Put() => Test(async host => Assert.AreEqual(204, response.GetRawResponse().Status); }); + [SpectorTest] + public Task SpreadRecordNonDiscriminatedUnion3Get() => Test(async host => + { + var response = await new AdditionalPropertiesClient(host, null).GetSpreadRecordNonDiscriminatedUnion3Client().GetAsync(); + Assert.AreEqual(200, response.GetRawResponse().Status); + Assert.AreEqual("abc", response.Value.Name); + Assert.AreEqual(2, response.Value.AdditionalProperties.Count); + using var jsonDoc = System.Text.Json.JsonDocument.Parse(response.Value.AdditionalProperties["prop1"].ToMemory()); + var prop1Items = jsonDoc.RootElement.EnumerateArray() + .Select(e => ModelReaderWriter.Read(BinaryData.FromString(e.GetRawText()))) + .ToList(); + Assert.AreEqual(2, prop1Items.Count); + Assert.AreEqual("2021-01-01T00:00:00Z", prop1Items[0]!.Start); + Assert.AreEqual("2021-01-01T00:00:00Z", prop1Items[1]!.Start); + var prop2 = ModelReaderWriter.Read(response.Value.AdditionalProperties["prop2"]); + Assert.AreEqual(new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero), prop2!.Start); + Assert.AreEqual(new DateTimeOffset(2021, 1, 2, 0, 0, 0, TimeSpan.Zero), prop2.End); + }); + + [SpectorTest] + public Task SpreadRecordNonDiscriminatedUnion3Put() => Test(async host => + { + var prop1BinaryData = BinaryData.FromString( + "[{\"kind\":\"kind1\",\"start\":\"2021-01-01T00:00:00Z\"},{\"kind\":\"kind1\",\"start\":\"2021-01-01T00:00:00Z\"}]"); + var value = new SpreadRecordForNonDiscriminatedUnion3("abc") + { + AdditionalProperties = + { + ["prop1"] = prop1BinaryData, + ["prop2"] = ModelReaderWriter.Write(new WidgetData1(new DateTimeOffset(2021, 1, 1, 0, 0, 0, TimeSpan.Zero)) + { + End = new DateTimeOffset(2021, 1, 2, 0, 0, 0, TimeSpan.Zero) + }) + } + }; + var response = await new AdditionalPropertiesClient(host, null).GetSpreadRecordNonDiscriminatedUnion3Client().PutAsync(value); + Assert.AreEqual(204, response.GetRawResponse().Status); + }); + [SpectorTest] public Task SpreadRecordUnionGet() => Test(async host => { diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.sln deleted file mode 100644 index d25f24e5988..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication.ApiKey", "src\Authentication.ApiKey.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.slnx new file mode 100644 index 00000000000..d2d865b8793 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Authentication.ApiKey.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..1978b2f0446 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ApiKeyClient": { + "type": "object", + "description": "Configuration for ApiKeyClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/apiKeyClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "apiKeyClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj index b2f00a0960b..9bc0d55655e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Authentication.ApiKey.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClient.cs index 4cc79b324ba..bb90d193964 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -12,13 +13,20 @@ namespace Authentication.ApiKey { public partial class ApiKeyClient { + private const string AuthorizationHeader = "x-ms-api-key"; + protected ApiKeyClient() => throw null; public ApiKeyClient(ApiKeyCredential credential) : this(new Uri("http://localhost:3000"), credential, new ApiKeyClientOptions()) => throw null; public ApiKeyClient(ApiKeyCredential credential, ApiKeyClientOptions options) : this(new Uri("http://localhost:3000"), credential, options) => throw null; - public ApiKeyClient(Uri endpoint, ApiKeyCredential credential, ApiKeyClientOptions options) => throw null; + internal ApiKeyClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ApiKeyClientOptions options) => throw null; + + public ApiKeyClient(Uri endpoint, ApiKeyCredential credential, ApiKeyClientOptions options) : this(ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader), endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ApiKeyClient(ApiKeyClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClientOptions.cs index 898f3926f96..7f1d0ec3a4c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Authentication.ApiKey { public partial class ApiKeyClientOptions : ClientPipelineOptions { + public ApiKeyClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ApiKeyClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClientSettings.cs new file mode 100644 index 00000000000..54fd6f05531 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/api-key/src/Generated/ApiKeyClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Authentication.ApiKey +{ + [Experimental("SCME0002")] + public partial class ApiKeyClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ApiKeyClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.sln deleted file mode 100644 index 9ff83d08928..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication.Http.Custom", "src\Authentication.Http.Custom.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.slnx new file mode 100644 index 00000000000..171982f4ee0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Authentication.Http.Custom.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..b206c55fc71 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "CustomClient": { + "type": "object", + "description": "Configuration for CustomClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/customClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "customClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj index 36f4cbbe8ba..9adda454f93 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Authentication.Http.Custom.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClient.cs index 1bae28cfe95..25ff19d43b1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -12,13 +13,21 @@ namespace Authentication.Http.Custom { public partial class CustomClient { + private const string AuthorizationHeader = "Authorization"; + private const string AuthorizationApiKeyPrefix = "SharedAccessKey"; + protected CustomClient() => throw null; public CustomClient(ApiKeyCredential credential) : this(new Uri("http://localhost:3000"), credential, new CustomClientOptions()) => throw null; public CustomClient(ApiKeyCredential credential, CustomClientOptions options) : this(new Uri("http://localhost:3000"), credential, options) => throw null; - public CustomClient(Uri endpoint, ApiKeyCredential credential, CustomClientOptions options) => throw null; + internal CustomClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, CustomClientOptions options) => throw null; + + public CustomClient(Uri endpoint, ApiKeyCredential credential, CustomClientOptions options) : this(ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader, AuthorizationApiKeyPrefix), endpoint, options) => throw null; + + [Experimental("SCME0002")] + public CustomClient(CustomClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClientOptions.cs index bd234ac920d..ae206c5cecf 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Authentication.Http.Custom { public partial class CustomClientOptions : ClientPipelineOptions { + public CustomClientOptions() => throw null; + + [Experimental("SCME0002")] + internal CustomClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClientSettings.cs new file mode 100644 index 00000000000..2a96fe4f0e7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/http/custom/src/Generated/CustomClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Authentication.Http.Custom +{ + [Experimental("SCME0002")] + public partial class CustomClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public CustomClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.sln deleted file mode 100644 index bbd935073c3..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication.OAuth2", "src\Authentication.OAuth2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.slnx new file mode 100644 index 00000000000..d2937751ca3 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Authentication.OAuth2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..d5d64542f56 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "OAuth2Client": { + "type": "object", + "description": "Configuration for OAuth2Client.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/oAuth2ClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "oAuth2ClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj index 42430909fa0..cc511afb644 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Authentication.OAuth2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2Client.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2Client.cs index be4fc518c9f..0b34d500610 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2Client.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2Client.cs @@ -5,6 +5,8 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -12,13 +14,28 @@ namespace Authentication.OAuth2 { public partial class OAuth2Client { + /// The OAuth2 flows supported by the service. + private static readonly Dictionary[] _flows = new Dictionary[] + { + new Dictionary + { + { GetTokenOptions.ScopesPropertyName, new string[] { "https://security.microsoft.com/.default" } }, + { GetTokenOptions.AuthorizationUrlPropertyName, "https://login.microsoftonline.com/common/oauth2/authorize" } + } + }; + protected OAuth2Client() => throw null; public OAuth2Client(AuthenticationTokenProvider tokenProvider) : this(new Uri("http://localhost:3000"), tokenProvider, new OAuth2ClientOptions()) => throw null; public OAuth2Client(AuthenticationTokenProvider tokenProvider, OAuth2ClientOptions options) : this(new Uri("http://localhost:3000"), tokenProvider, options) => throw null; - public OAuth2Client(Uri endpoint, AuthenticationTokenProvider tokenProvider, OAuth2ClientOptions options) => throw null; + internal OAuth2Client(AuthenticationPolicy authenticationPolicy, Uri endpoint, OAuth2ClientOptions options) => throw null; + + public OAuth2Client(Uri endpoint, AuthenticationTokenProvider tokenProvider, OAuth2ClientOptions options) : this(new BearerTokenPolicy(tokenProvider, _flows), endpoint, options) => throw null; + + [Experimental("SCME0002")] + public OAuth2Client(OAuth2ClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2ClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2ClientOptions.cs index 1c41f844e44..8fc4380d187 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2ClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2ClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Authentication.OAuth2 { public partial class OAuth2ClientOptions : ClientPipelineOptions { + public OAuth2ClientOptions() => throw null; + + [Experimental("SCME0002")] + internal OAuth2ClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2ClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2ClientSettings.cs new file mode 100644 index 00000000000..1051c7cf048 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/oauth2/src/Generated/OAuth2ClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Authentication.OAuth2 +{ + [Experimental("SCME0002")] + public partial class OAuth2ClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public OAuth2ClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.sln deleted file mode 100644 index 60f4e7c55e2..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Authentication.Union", "src\Authentication.Union.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.slnx new file mode 100644 index 00000000000..4a14a65cb52 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Authentication.Union.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..370dae5b9f1 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "UnionClient": { + "type": "object", + "description": "Configuration for UnionClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/unionClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "unionClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj index 60336a11ddc..a0db46d4c37 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Authentication.Union.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClient.cs index f7f4255c91e..cf14844ba08 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClient.cs @@ -5,6 +5,8 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -12,6 +14,17 @@ namespace Authentication.Union { public partial class UnionClient { + private const string AuthorizationHeader = "x-ms-api-key"; + /// The OAuth2 flows supported by the service. + private static readonly Dictionary[] _flows = new Dictionary[] + { + new Dictionary + { + { GetTokenOptions.ScopesPropertyName, new string[] { "https://security.microsoft.com/.default" } }, + { GetTokenOptions.AuthorizationUrlPropertyName, "https://login.microsoftonline.com/common/oauth2/authorize" } + } + }; + protected UnionClient() => throw null; public UnionClient(ApiKeyCredential credential) : this(new Uri("http://localhost:3000"), credential, new UnionClientOptions()) => throw null; @@ -22,9 +35,14 @@ public partial class UnionClient public UnionClient(AuthenticationTokenProvider tokenProvider, UnionClientOptions options) : this(new Uri("http://localhost:3000"), tokenProvider, options) => throw null; - public UnionClient(Uri endpoint, ApiKeyCredential credential, UnionClientOptions options) => throw null; + internal UnionClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, UnionClientOptions options) => throw null; + + public UnionClient(Uri endpoint, ApiKeyCredential credential, UnionClientOptions options) : this(ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(credential, AuthorizationHeader), endpoint, options) => throw null; + + public UnionClient(Uri endpoint, AuthenticationTokenProvider tokenProvider, UnionClientOptions options) : this(new BearerTokenPolicy(tokenProvider, _flows), endpoint, options) => throw null; - public UnionClient(Uri endpoint, AuthenticationTokenProvider tokenProvider, UnionClientOptions options) => throw null; + [Experimental("SCME0002")] + public UnionClient(UnionClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClientOptions.cs index 3a0a17570ae..c75e08f6cee 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Authentication.Union { public partial class UnionClientOptions : ClientPipelineOptions { + public UnionClientOptions() => throw null; + + [Experimental("SCME0002")] + internal UnionClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClientSettings.cs new file mode 100644 index 00000000000..f14eadcbcd3 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/authentication/union/src/Generated/UnionClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Authentication.Union +{ + [Experimental("SCME0002")] + public partial class UnionClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public UnionClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.sln deleted file mode 100644 index 2742e23c2ef..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Structure.Service", "src\Client.Structure.Service.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.slnx new file mode 100644 index 00000000000..8ff630a4366 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Client.Structure.Service.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..f15b3ce0d20 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,79 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "FirstClient": { + "type": "object", + "description": "Configuration for FirstClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Client": { + "$ref": "#/definitions/clientType" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/firstClientOptions" + } + } + }, + "SubNamespaceSecondClient": { + "type": "object", + "description": "Configuration for SubNamespaceSecondClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Client": { + "$ref": "#/definitions/clientType" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/subNamespaceSecondClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "clientType": { + "enum": [ + "default", + "multi-client", + "renamed-operation", + "two-operation-group", + "client-operation-group" + ] + }, + "firstClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + }, + "subNamespaceSecondClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj index efce57fd9a0..a16ed7db93b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Client.Structure.Service.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClient.cs index 09efa090360..0ae16d068ff 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Client.Structure.Service; @@ -17,7 +18,12 @@ public partial class FirstClient public FirstClient(Uri endpoint, ClientType client) : this(endpoint, client, new FirstClientOptions()) => throw null; - public FirstClient(Uri endpoint, ClientType client, FirstClientOptions options) => throw null; + internal FirstClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ClientType client, FirstClientOptions options) => throw null; + + public FirstClient(Uri endpoint, ClientType client, FirstClientOptions options) : this(null, endpoint, client, options) => throw null; + + [Experimental("SCME0002")] + public FirstClient(FirstClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Client ?? default, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClientOptions.cs index 881ed44ef7e..6a8bb3b3dab 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Client.Structure.ClientOperationGroup { public partial class FirstClientOptions : ClientPipelineOptions { + public FirstClientOptions() => throw null; + + [Experimental("SCME0002")] + internal FirstClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClientSettings.cs new file mode 100644 index 00000000000..47fe311045d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/FirstClientSettings.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Client.Structure.Service; +using Microsoft.Extensions.Configuration; + +namespace Client.Structure.ClientOperationGroup +{ + [Experimental("SCME0002")] + public partial class FirstClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ClientType? Client + { + get => throw null; + set => throw null; + } + + public FirstClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group3.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group3.cs index 36f592b901d..424b1f729bd 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group3.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group3.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.ClientOperationGroup { @@ -13,6 +15,8 @@ public partial class Group3 { protected Group3() => throw null; + internal Group3(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Two(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group4.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group4.cs index 5470b3bbc52..6f372e14c53 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group4.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group4.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.ClientOperationGroup { @@ -13,6 +15,8 @@ public partial class Group4 { protected Group4() => throw null; + internal Group4(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Four(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group5.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group5.cs index eb10cff56a7..16a035048f3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group5.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/Group5.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.AnotherClientOperationGroup { @@ -13,6 +15,8 @@ public partial class Group5 { protected Group5() => throw null; + internal Group5(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Six(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClient.cs index 9fe43ebbd7c..693eca9df30 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Client.Structure.Service; @@ -17,7 +18,12 @@ public partial class SubNamespaceSecondClient public SubNamespaceSecondClient(Uri endpoint, ClientType client) : this(endpoint, client, new SubNamespaceSecondClientOptions()) => throw null; - public SubNamespaceSecondClient(Uri endpoint, ClientType client, SubNamespaceSecondClientOptions options) => throw null; + internal SubNamespaceSecondClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ClientType client, SubNamespaceSecondClientOptions options) => throw null; + + public SubNamespaceSecondClient(Uri endpoint, ClientType client, SubNamespaceSecondClientOptions options) : this(null, endpoint, client, options) => throw null; + + [Experimental("SCME0002")] + public SubNamespaceSecondClient(SubNamespaceSecondClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Client ?? default, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClientOptions.cs index d853790bd79..9bdb3865466 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Client.Structure.AnotherClientOperationGroup { public partial class SubNamespaceSecondClientOptions : ClientPipelineOptions { + public SubNamespaceSecondClientOptions() => throw null; + + [Experimental("SCME0002")] + internal SubNamespaceSecondClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClientSettings.cs new file mode 100644 index 00000000000..1f632d30799 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/client-operation-group/src/Generated/SubNamespaceSecondClientSettings.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Client.Structure.Service; +using Microsoft.Extensions.Configuration; + +namespace Client.Structure.AnotherClientOperationGroup +{ + [Experimental("SCME0002")] + public partial class SubNamespaceSecondClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ClientType? Client + { + get => throw null; + set => throw null; + } + + public SubNamespaceSecondClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.sln deleted file mode 100644 index 42f1b36c659..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Structure.Service.Default", "src\Client.Structure.Service.Default.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.slnx new file mode 100644 index 00000000000..479ba798c11 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Client.Structure.Service.Default.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..56265421f49 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,52 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ServiceClient": { + "type": "object", + "description": "Configuration for ServiceClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Client": { + "$ref": "#/definitions/clientType" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/serviceClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "clientType": { + "enum": [ + "default", + "multi-client", + "renamed-operation", + "two-operation-group", + "client-operation-group" + ] + }, + "serviceClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj index fe6e72f7cb7..0b080a1f5ed 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Client.Structure.Service.Default.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Bar.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Bar.cs index b477c997e2f..ecb520de880 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Bar.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Bar.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Bar { protected Bar() => throw null; + internal Bar(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Five(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Baz.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Baz.cs index c13fd297ec5..9846828d6a2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Baz.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Baz.cs @@ -2,7 +2,9 @@ #nullable disable +using System; using System.ClientModel.Primitives; +using Client.Structure.Service; namespace Client.Structure.Service._Baz { @@ -10,6 +12,8 @@ public partial class Baz { protected Baz() => throw null; + internal Baz(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual BazFoo GetBazFooClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/BazFoo.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/BazFoo.cs index 6ed62d51d4e..4b8d81d5939 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/BazFoo.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/BazFoo.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.Service._Baz { @@ -13,6 +15,8 @@ public partial class BazFoo { protected BazFoo() => throw null; + internal BazFoo(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Seven(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Foo.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Foo.cs index 4989e29298c..40c3caa537f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Foo.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Foo.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Foo { protected Foo() => throw null; + internal Foo(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Three(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Qux.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Qux.cs index e94b919e17f..886bf284df7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Qux.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/Qux.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.Service._Qux { @@ -13,6 +15,8 @@ public partial class Qux { protected Qux() => throw null; + internal Qux(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Eight(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/QuxBar.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/QuxBar.cs index 1cf32f91487..5b7bc794ae7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/QuxBar.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/QuxBar.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.Service._Qux { @@ -13,6 +15,8 @@ public partial class QuxBar { protected QuxBar() => throw null; + internal QuxBar(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Nine(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClient.cs index c6745dfd7c9..7dd25ed35c3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Client.Structure.Service._Baz; @@ -18,7 +19,12 @@ public partial class ServiceClient public ServiceClient(Uri endpoint, ClientType client) : this(endpoint, client, new ServiceClientOptions()) => throw null; - public ServiceClient(Uri endpoint, ClientType client, ServiceClientOptions options) => throw null; + internal ServiceClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ClientType client, ServiceClientOptions options) => throw null; + + public ServiceClient(Uri endpoint, ClientType client, ServiceClientOptions options) : this(null, endpoint, client, options) => throw null; + + [Experimental("SCME0002")] + public ServiceClient(ServiceClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Client ?? default, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClientOptions.cs index 721c8b6c398..629dbd99553 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Client.Structure.Service { public partial class ServiceClientOptions : ClientPipelineOptions { + public ServiceClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ServiceClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClientSettings.cs new file mode 100644 index 00000000000..3f55cc86a90 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/default/src/Generated/ServiceClientSettings.cs @@ -0,0 +1,35 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Client.Structure.Service +{ + [Experimental("SCME0002")] + public partial class ServiceClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ClientType? Client + { + get => throw null; + set => throw null; + } + + public ServiceClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.sln deleted file mode 100644 index e23454261c2..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Structure.Service.Multi.Client", "src\Client.Structure.Service.Multi.Client.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.slnx new file mode 100644 index 00000000000..fe4ab2a2f43 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Client.Structure.Service.Multi.Client.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..52b7facca37 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,79 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ClientAClient": { + "type": "object", + "description": "Configuration for ClientAClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Client": { + "$ref": "#/definitions/clientType" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/clientAClientOptions" + } + } + }, + "ClientBClient": { + "type": "object", + "description": "Configuration for ClientBClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Client": { + "$ref": "#/definitions/clientType" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/clientBClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "clientAClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + }, + "clientBClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + }, + "clientType": { + "enum": [ + "default", + "multi-client", + "renamed-operation", + "two-operation-group", + "client-operation-group" + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj index e6b5dbce271..ee07fbfa38f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Client.Structure.Service.Multi.Client.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClient.cs index 8474e633848..8c586cc178c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Client.Structure.Service; @@ -17,7 +18,12 @@ public partial class ClientAClient public ClientAClient(Uri endpoint, ClientType client) : this(endpoint, client, new ClientAClientOptions()) => throw null; - public ClientAClient(Uri endpoint, ClientType client, ClientAClientOptions options) => throw null; + internal ClientAClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ClientType client, ClientAClientOptions options) => throw null; + + public ClientAClient(Uri endpoint, ClientType client, ClientAClientOptions options) : this(null, endpoint, client, options) => throw null; + + [Experimental("SCME0002")] + public ClientAClient(ClientAClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Client ?? default, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClientOptions.cs index d52bc376d61..3eb91cb70a2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Client.Structure.MultiClient { public partial class ClientAClientOptions : ClientPipelineOptions { + public ClientAClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ClientAClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClientSettings.cs new file mode 100644 index 00000000000..6f0bbb16861 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientAClientSettings.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Client.Structure.Service; +using Microsoft.Extensions.Configuration; + +namespace Client.Structure.MultiClient +{ + [Experimental("SCME0002")] + public partial class ClientAClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ClientType? Client + { + get => throw null; + set => throw null; + } + + public ClientAClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClient.cs index 63271b0bf6f..603a41b38b0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Client.Structure.Service; @@ -17,7 +18,12 @@ public partial class ClientBClient public ClientBClient(Uri endpoint, ClientType client) : this(endpoint, client, new ClientBClientOptions()) => throw null; - public ClientBClient(Uri endpoint, ClientType client, ClientBClientOptions options) => throw null; + internal ClientBClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ClientType client, ClientBClientOptions options) => throw null; + + public ClientBClient(Uri endpoint, ClientType client, ClientBClientOptions options) : this(null, endpoint, client, options) => throw null; + + [Experimental("SCME0002")] + public ClientBClient(ClientBClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Client ?? default, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClientOptions.cs index 79f628d59e3..5a0fed08e44 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Client.Structure.MultiClient { public partial class ClientBClientOptions : ClientPipelineOptions { + public ClientBClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ClientBClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClientSettings.cs new file mode 100644 index 00000000000..e7fc25b871d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/multi-client/src/Generated/ClientBClientSettings.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Client.Structure.Service; +using Microsoft.Extensions.Configuration; + +namespace Client.Structure.MultiClient +{ + [Experimental("SCME0002")] + public partial class ClientBClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ClientType? Client + { + get => throw null; + set => throw null; + } + + public ClientBClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.sln deleted file mode 100644 index 2b43c22454c..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Structure.Service.Renamed.Operation", "src\Client.Structure.Service.Renamed.Operation.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.slnx new file mode 100644 index 00000000000..0f8a4db91ca --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Client.Structure.Service.Renamed.Operation.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..486c6fe3689 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,52 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RenamedOperationClient": { + "type": "object", + "description": "Configuration for RenamedOperationClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Client": { + "$ref": "#/definitions/clientType" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/renamedOperationClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "clientType": { + "enum": [ + "default", + "multi-client", + "renamed-operation", + "two-operation-group", + "client-operation-group" + ] + }, + "renamedOperationClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj index e7f97fb99b8..37d7827ffde 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Client.Structure.Service.Renamed.Operation.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/Group.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/Group.cs index 43d04d3edb0..f9ce619bfe6 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/Group.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/Group.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.RenamedOperation { @@ -13,6 +15,8 @@ public partial class Group { protected Group() => throw null; + internal Group(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult RenamedTwo(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClient.cs index acb300be1b5..a3aa6ae6103 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Client.Structure.Service; @@ -17,7 +18,12 @@ public partial class RenamedOperationClient public RenamedOperationClient(Uri endpoint, ClientType client) : this(endpoint, client, new RenamedOperationClientOptions()) => throw null; - public RenamedOperationClient(Uri endpoint, ClientType client, RenamedOperationClientOptions options) => throw null; + internal RenamedOperationClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ClientType client, RenamedOperationClientOptions options) => throw null; + + public RenamedOperationClient(Uri endpoint, ClientType client, RenamedOperationClientOptions options) : this(null, endpoint, client, options) => throw null; + + [Experimental("SCME0002")] + public RenamedOperationClient(RenamedOperationClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Client ?? default, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClientOptions.cs index 981265b249d..d0992ccf0df 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Client.Structure.RenamedOperation { public partial class RenamedOperationClientOptions : ClientPipelineOptions { + public RenamedOperationClientOptions() => throw null; + + [Experimental("SCME0002")] + internal RenamedOperationClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClientSettings.cs new file mode 100644 index 00000000000..ad180f069ef --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/renamed-operation/src/Generated/RenamedOperationClientSettings.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Client.Structure.Service; +using Microsoft.Extensions.Configuration; + +namespace Client.Structure.RenamedOperation +{ + [Experimental("SCME0002")] + public partial class RenamedOperationClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ClientType? Client + { + get => throw null; + set => throw null; + } + + public RenamedOperationClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.sln deleted file mode 100644 index 1b674d73e3a..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Structure.Service.TwoOperationGroup", "src\Client.Structure.Service.TwoOperationGroup.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.slnx new file mode 100644 index 00000000000..d8f2541ae0b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Client.Structure.Service.TwoOperationGroup.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..e45184ac881 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,52 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "TwoOperationGroupClient": { + "type": "object", + "description": "Configuration for TwoOperationGroupClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Client": { + "$ref": "#/definitions/clientType" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/twoOperationGroupClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "clientType": { + "enum": [ + "default", + "multi-client", + "renamed-operation", + "two-operation-group", + "client-operation-group" + ] + }, + "twoOperationGroupClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj index 1bb7799a71e..e5830fd996a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Client.Structure.Service.TwoOperationGroup.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group1.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group1.cs index 4657d169616..292fd14c3c6 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group1.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group1.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.TwoOperationGroup { @@ -13,6 +15,8 @@ public partial class Group1 { protected Group1() => throw null; + internal Group1(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult One(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group2.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group2.cs index 783310627ed..9b04ac2eba9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group2.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/Group2.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using System.Threading.Tasks; +using Client.Structure.Service; namespace Client.Structure.TwoOperationGroup { @@ -13,6 +15,8 @@ public partial class Group2 { protected Group2() => throw null; + internal Group2(ClientPipeline pipeline, Uri endpoint, ClientType client) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Two(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClient.cs index 42cdaf6080a..a5ae0dae401 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Client.Structure.Service; namespace Client.Structure.TwoOperationGroup @@ -14,7 +15,12 @@ public partial class TwoOperationGroupClient public TwoOperationGroupClient(Uri endpoint, ClientType client) : this(endpoint, client, new TwoOperationGroupClientOptions()) => throw null; - public TwoOperationGroupClient(Uri endpoint, ClientType client, TwoOperationGroupClientOptions options) => throw null; + internal TwoOperationGroupClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ClientType client, TwoOperationGroupClientOptions options) => throw null; + + public TwoOperationGroupClient(Uri endpoint, ClientType client, TwoOperationGroupClientOptions options) : this(null, endpoint, client, options) => throw null; + + [Experimental("SCME0002")] + public TwoOperationGroupClient(TwoOperationGroupClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Client ?? default, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClientOptions.cs index 95058870aa8..f2f71a70cb9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Client.Structure.TwoOperationGroup { public partial class TwoOperationGroupClientOptions : ClientPipelineOptions { + public TwoOperationGroupClientOptions() => throw null; + + [Experimental("SCME0002")] + internal TwoOperationGroupClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClientSettings.cs new file mode 100644 index 00000000000..95a3a7d145b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/client/structure/two-operation-group/src/Generated/TwoOperationGroupClientSettings.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Client.Structure.Service; +using Microsoft.Extensions.Configuration; + +namespace Client.Structure.TwoOperationGroup +{ + [Experimental("SCME0002")] + public partial class TwoOperationGroupClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ClientType? Client + { + get => throw null; + set => throw null; + } + + public TwoOperationGroupClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.sln deleted file mode 100644 index a0b3f32bbb2..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Documentation", "src\Documentation.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.slnx new file mode 100644 index 00000000000..ee2c44330f9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Documentation.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..e9879042aa4 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "DocumentationClient": { + "type": "object", + "description": "Configuration for DocumentationClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/documentationClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "documentationClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj index 0b3fe015fb3..9018fac9650 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Documentation.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClient.cs index 8f961dff791..a666718a60c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Documentation._Lists; using Documentation._TextFormatting; @@ -13,7 +14,12 @@ public partial class DocumentationClient { public DocumentationClient() : this(new Uri("http://localhost:3000"), new DocumentationClientOptions()) => throw null; - public DocumentationClient(Uri endpoint, DocumentationClientOptions options) => throw null; + internal DocumentationClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, DocumentationClientOptions options) => throw null; + + public DocumentationClient(Uri endpoint, DocumentationClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public DocumentationClient(DocumentationClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClientOptions.cs index d14497f2a3d..71abccf911b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Documentation { public partial class DocumentationClientOptions : ClientPipelineOptions { + public DocumentationClientOptions() => throw null; + + [Experimental("SCME0002")] + internal DocumentationClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClientSettings.cs new file mode 100644 index 00000000000..3359778538d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/DocumentationClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Documentation +{ + [Experimental("SCME0002")] + public partial class DocumentationClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public DocumentationClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/Lists.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/Lists.cs index 34bf1c4e427..448bdd8c7c6 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/Lists.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/Lists.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Lists { protected Lists() => throw null; + internal Lists(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult BulletPointsOp(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/TextFormatting.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/TextFormatting.cs index 6fb8a1e8646..d2190f98461 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/TextFormatting.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/documentation/src/Generated/TextFormatting.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class TextFormatting { protected TextFormatting() => throw null; + internal TextFormatting(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult BoldText(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.sln deleted file mode 100644 index 112586204f8..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encode.Array", "src\Encode.Array.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.slnx new file mode 100644 index 00000000000..856ee748932 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Encode.Array.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..daafccb5cfb --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ArrayClient": { + "type": "object", + "description": "Configuration for ArrayClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/arrayClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "arrayClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj index d7ccd424c1e..2c5e8aa1116 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Encode.Array.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClient.cs index 55ae5b366f0..be13cf124dd 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Encode._Array._Property; namespace Encode._Array @@ -12,7 +13,12 @@ public partial class ArrayClient { public ArrayClient() : this(new Uri("http://localhost:3000"), new ArrayClientOptions()) => throw null; - public ArrayClient(Uri endpoint, ArrayClientOptions options) => throw null; + internal ArrayClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ArrayClientOptions options) => throw null; + + public ArrayClient(Uri endpoint, ArrayClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ArrayClient(ArrayClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClientOptions.cs index 392d2e67a55..53bc44de8ab 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Encode._Array { public partial class ArrayClientOptions : ClientPipelineOptions { + public ArrayClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ArrayClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClientSettings.cs new file mode 100644 index 00000000000..a63b499749e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/ArrayClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Encode._Array +{ + [Experimental("SCME0002")] + public partial class ArrayClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ArrayClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/Property.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/Property.cs index 11ac1e8bde6..cca72b3496d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/Property.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/array/src/Generated/Property.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -14,6 +15,8 @@ public partial class Property { protected Property() => throw null; + internal Property(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult CommaDelimited(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.sln deleted file mode 100644 index 1b47aa31652..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encode.Bytes", "src\Encode.Bytes.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.slnx new file mode 100644 index 00000000000..d5f5697f301 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Encode.Bytes.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..120cc0e01aa --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "BytesClient": { + "type": "object", + "description": "Configuration for BytesClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/bytesClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "bytesClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj index d923c122c85..6856e4ec83c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Encode.Bytes.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClient.cs index 9f869034eb7..66889ea19e6 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Encode.Bytes._Header; using Encode.Bytes._Property; using Encode.Bytes._Query; @@ -16,7 +17,12 @@ public partial class BytesClient { public BytesClient() : this(new Uri("http://localhost:3000"), new BytesClientOptions()) => throw null; - public BytesClient(Uri endpoint, BytesClientOptions options) => throw null; + internal BytesClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, BytesClientOptions options) => throw null; + + public BytesClient(Uri endpoint, BytesClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public BytesClient(BytesClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClientOptions.cs index cd5fed986b7..9e4ed241a12 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Encode.Bytes { public partial class BytesClientOptions : ClientPipelineOptions { + public BytesClientOptions() => throw null; + + [Experimental("SCME0002")] + internal BytesClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClientSettings.cs new file mode 100644 index 00000000000..a6033329a11 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/BytesClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Encode.Bytes +{ + [Experimental("SCME0002")] + public partial class BytesClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public BytesClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Header.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Header.cs index 04f54e9db06..fd23134b48c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Header.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Header.cs @@ -15,6 +15,8 @@ public partial class Header { protected Header() => throw null; + internal Header(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(BinaryData value, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Property.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Property.cs index cd447f162f2..98856cd5b6c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Property.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Property.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -14,6 +15,8 @@ public partial class Property { protected Property() => throw null; + internal Property(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Query.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Query.cs index e833cb0b334..a4bdf915ccf 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Query.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/Query.cs @@ -15,6 +15,8 @@ public partial class Query { protected Query() => throw null; + internal Query(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(BinaryData value, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/RequestBody.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/RequestBody.cs index 8f2b981bd11..11350490a12 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/RequestBody.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/RequestBody.cs @@ -14,6 +14,8 @@ public partial class RequestBody { protected RequestBody() => throw null; + internal RequestBody(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/ResponseBody.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/ResponseBody.cs index d61d52ae44f..2ccbb28aadf 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/ResponseBody.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/bytes/src/Generated/ResponseBody.cs @@ -14,6 +14,8 @@ public partial class ResponseBody { protected ResponseBody() => throw null; + internal ResponseBody(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.sln deleted file mode 100644 index 1cec2da2d45..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encode.Datetime", "src\Encode.Datetime.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.slnx new file mode 100644 index 00000000000..ad9c3743462 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Encode.Datetime.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..f13d4ed3b76 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "DatetimeClient": { + "type": "object", + "description": "Configuration for DatetimeClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/datetimeClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "datetimeClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj index 795c9fcc605..6b285b889b3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Encode.Datetime.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClient.cs index 99b7355986c..52989bc8104 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Encode.Datetime._Header; using Encode.Datetime._Property; using Encode.Datetime._Query; @@ -15,7 +16,12 @@ public partial class DatetimeClient { public DatetimeClient() : this(new Uri("http://localhost:3000"), new DatetimeClientOptions()) => throw null; - public DatetimeClient(Uri endpoint, DatetimeClientOptions options) => throw null; + internal DatetimeClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, DatetimeClientOptions options) => throw null; + + public DatetimeClient(Uri endpoint, DatetimeClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public DatetimeClient(DatetimeClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClientOptions.cs index 698cb7d64f1..39b0653f0a2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Encode.Datetime { public partial class DatetimeClientOptions : ClientPipelineOptions { + public DatetimeClientOptions() => throw null; + + [Experimental("SCME0002")] + internal DatetimeClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClientSettings.cs new file mode 100644 index 00000000000..9924fa8a904 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/DatetimeClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Encode.Datetime +{ + [Experimental("SCME0002")] + public partial class DatetimeClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public DatetimeClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Header.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Header.cs index 5fb8d90bc90..73e83a93a8d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Header.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Header.cs @@ -15,6 +15,8 @@ public partial class Header { protected Header() => throw null; + internal Header(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(DateTimeOffset value, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Property.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Property.cs index 2a05e4eb487..178a86cf0b2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Property.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Property.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -14,6 +15,8 @@ public partial class Property { protected Property() => throw null; + internal Property(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Query.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Query.cs index 797db67529f..2e39c63316f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Query.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/Query.cs @@ -15,6 +15,8 @@ public partial class Query { protected Query() => throw null; + internal Query(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(DateTimeOffset value, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/ResponseHeader.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/ResponseHeader.cs index 01d39032c85..0f6c15d6f9e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/ResponseHeader.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/datetime/src/Generated/ResponseHeader.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ResponseHeader { protected ResponseHeader() => throw null; + internal ResponseHeader(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.sln deleted file mode 100644 index b31430b6a51..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encode.Duration", "src\Encode.Duration.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.slnx new file mode 100644 index 00000000000..2f0fc5ba4fa --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Encode.Duration.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..f0eec9c5ae3 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "DurationClient": { + "type": "object", + "description": "Configuration for DurationClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/durationClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "durationClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj index 6d861d25c81..0b09a1fa0ba 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Encode.Duration.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClient.cs index 5f2a93cce5a..efdd9208ab4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Encode.Duration._Header; using Encode.Duration._Property; using Encode.Duration._Query; @@ -14,7 +15,12 @@ public partial class DurationClient { public DurationClient() : this(new Uri("http://localhost:3000"), new DurationClientOptions()) => throw null; - public DurationClient(Uri endpoint, DurationClientOptions options) => throw null; + internal DurationClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, DurationClientOptions options) => throw null; + + public DurationClient(Uri endpoint, DurationClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public DurationClient(DurationClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClientOptions.cs index a78e11b5410..a3259a567ec 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Encode.Duration { public partial class DurationClientOptions : ClientPipelineOptions { + public DurationClientOptions() => throw null; + + [Experimental("SCME0002")] + internal DurationClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClientSettings.cs new file mode 100644 index 00000000000..d5794c77d32 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/DurationClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Encode.Duration +{ + [Experimental("SCME0002")] + public partial class DurationClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public DurationClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Header.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Header.cs index f8b13ad6053..60aaa9d639d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Header.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Header.cs @@ -15,6 +15,8 @@ public partial class Header { protected Header() => throw null; + internal Header(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(TimeSpan duration, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Property.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Property.cs index 68a98785695..5932c8916b1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Property.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Property.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Property { protected Property() => throw null; + internal Property(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Query.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Query.cs index ab8d0db30f9..3389d4bc03c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Query.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/duration/src/Generated/Query.cs @@ -15,6 +15,8 @@ public partial class Query { protected Query() => throw null; + internal Query(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Default(TimeSpan input, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.sln deleted file mode 100644 index 755f896ca0c..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encode.Numeric", "src\Encode.Numeric.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.slnx new file mode 100644 index 00000000000..15058134d69 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Encode.Numeric.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..4917a18de1d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "NumericClient": { + "type": "object", + "description": "Configuration for NumericClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/numericClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "numericClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj index 63a8d810f00..2f7ab56954a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Encode.Numeric.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClient.cs index a43095cc1bc..62c37a7e84d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Encode.Numeric._Property; namespace Encode.Numeric @@ -12,7 +13,12 @@ public partial class NumericClient { public NumericClient() : this(new Uri("http://localhost:3000"), new NumericClientOptions()) => throw null; - public NumericClient(Uri endpoint, NumericClientOptions options) => throw null; + internal NumericClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, NumericClientOptions options) => throw null; + + public NumericClient(Uri endpoint, NumericClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public NumericClient(NumericClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClientOptions.cs index 94e681301bf..678f0fd0618 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Encode.Numeric { public partial class NumericClientOptions : ClientPipelineOptions { + public NumericClientOptions() => throw null; + + [Experimental("SCME0002")] + internal NumericClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClientSettings.cs new file mode 100644 index 00000000000..1eb21a455d6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/NumericClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Encode.Numeric +{ + [Experimental("SCME0002")] + public partial class NumericClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public NumericClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/Property.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/Property.cs index 49349a4add9..a24512ae6df 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/Property.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/encode/numeric/src/Generated/Property.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Property { protected Property() => throw null; + internal Property(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult SafeintAsString(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..4c45381dee2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "BasicClient": { + "type": "object", + "description": "Configuration for BasicClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/basicClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "basicClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.sln deleted file mode 100644 index 4cc7745bdf9..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Parameters.Basic", "src\Parameters.Basic.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.slnx new file mode 100644 index 00000000000..c01cf779cb5 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/Parameters.Basic.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClient.cs index dfb24ed2a43..14502febffd 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Parameters.Basic._ExplicitBody; using Parameters.Basic._ImplicitBody; @@ -13,7 +14,12 @@ public partial class BasicClient { public BasicClient() : this(new Uri("http://localhost:3000"), new BasicClientOptions()) => throw null; - public BasicClient(Uri endpoint, BasicClientOptions options) => throw null; + internal BasicClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, BasicClientOptions options) => throw null; + + public BasicClient(Uri endpoint, BasicClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public BasicClient(BasicClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClientOptions.cs index 8739650ee13..a537b38f60a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Parameters.Basic { public partial class BasicClientOptions : ClientPipelineOptions { + public BasicClientOptions() => throw null; + + [Experimental("SCME0002")] + internal BasicClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClientSettings.cs new file mode 100644 index 00000000000..51e2b9e6c0f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/BasicClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Parameters.Basic +{ + [Experimental("SCME0002")] + public partial class BasicClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public BasicClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ExplicitBody.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ExplicitBody.cs index 383030dc1bf..d9157b03926 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ExplicitBody.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ExplicitBody.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExplicitBody { protected ExplicitBody() => throw null; + internal ExplicitBody(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Simple(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ImplicitBody.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ImplicitBody.cs index 478ec3b4e2e..8d46cf80d63 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ImplicitBody.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Generated/ImplicitBody.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ImplicitBody { protected ImplicitBody() => throw null; + internal ImplicitBody(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Simple(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj index b2dc7977f26..200605ce4ee 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/basic/src/Parameters.Basic.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..d4e43983069 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "BodyOptionalityClient": { + "type": "object", + "description": "Configuration for BodyOptionalityClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/bodyOptionalityClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "bodyOptionalityClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.sln deleted file mode 100644 index 0f3a5dd3928..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Parameters.BodyOptionality", "src\Parameters.BodyOptionality.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.slnx new file mode 100644 index 00000000000..12d837815f9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/Parameters.BodyOptionality.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClient.cs index 3c77de1b7fe..457b49eac2f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Parameters.BodyOptionality._OptionalExplicit; @@ -15,7 +16,12 @@ public partial class BodyOptionalityClient { public BodyOptionalityClient() : this(new Uri("http://localhost:3000"), new BodyOptionalityClientOptions()) => throw null; - public BodyOptionalityClient(Uri endpoint, BodyOptionalityClientOptions options) => throw null; + internal BodyOptionalityClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, BodyOptionalityClientOptions options) => throw null; + + public BodyOptionalityClient(Uri endpoint, BodyOptionalityClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public BodyOptionalityClient(BodyOptionalityClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClientOptions.cs index 80f4405292a..33804b10acc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Parameters.BodyOptionality { public partial class BodyOptionalityClientOptions : ClientPipelineOptions { + public BodyOptionalityClientOptions() => throw null; + + [Experimental("SCME0002")] + internal BodyOptionalityClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClientSettings.cs new file mode 100644 index 00000000000..137094caec7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/BodyOptionalityClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Parameters.BodyOptionality +{ + [Experimental("SCME0002")] + public partial class BodyOptionalityClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public BodyOptionalityClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/OptionalExplicit.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/OptionalExplicit.cs index ffa4809571b..5d4de240634 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/OptionalExplicit.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Generated/OptionalExplicit.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -14,6 +15,8 @@ public partial class OptionalExplicit { protected OptionalExplicit() => throw null; + internal OptionalExplicit(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Set(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj index 03fd1bb4c50..09ffa6a1edd 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/body-optionality/src/Parameters.BodyOptionality.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..dca8a061f73 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "CollectionFormatClient": { + "type": "object", + "description": "Configuration for CollectionFormatClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/collectionFormatClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "collectionFormatClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.sln deleted file mode 100644 index 3180281a954..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Parameters.CollectionFormat", "src\Parameters.CollectionFormat.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.slnx new file mode 100644 index 00000000000..f3da276a50e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/Parameters.CollectionFormat.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClient.cs index c75beeba0ad..cfac396e5f9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Parameters.CollectionFormat._Header; using Parameters.CollectionFormat._Query; @@ -13,7 +14,12 @@ public partial class CollectionFormatClient { public CollectionFormatClient() : this(new Uri("http://localhost:3000"), new CollectionFormatClientOptions()) => throw null; - public CollectionFormatClient(Uri endpoint, CollectionFormatClientOptions options) => throw null; + internal CollectionFormatClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, CollectionFormatClientOptions options) => throw null; + + public CollectionFormatClient(Uri endpoint, CollectionFormatClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public CollectionFormatClient(CollectionFormatClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClientOptions.cs index 31d6176ffa4..227d9ffd344 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Parameters.CollectionFormat { public partial class CollectionFormatClientOptions : ClientPipelineOptions { + public CollectionFormatClientOptions() => throw null; + + [Experimental("SCME0002")] + internal CollectionFormatClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClientSettings.cs new file mode 100644 index 00000000000..ae7b80aa260 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/CollectionFormatClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Parameters.CollectionFormat +{ + [Experimental("SCME0002")] + public partial class CollectionFormatClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public CollectionFormatClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Header.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Header.cs index 6188a2785ea..e29a1876bcd 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Header.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Header.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Header { protected Header() => throw null; + internal Header(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Csv(IEnumerable colors, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Query.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Query.cs index c54d95436b6..f0d37525882 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Query.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Generated/Query.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Query { protected Query() => throw null; + internal Query(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Multi(IEnumerable colors, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj index 3e172169ca7..b953f0a3771 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/collection-format/src/Parameters.CollectionFormat.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..18b9a87440a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "PathClient": { + "type": "object", + "description": "Configuration for PathClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/pathClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "pathClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.sln deleted file mode 100644 index e4fcfa10861..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Parameters.Path", "src\Parameters.Path.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.slnx new file mode 100644 index 00000000000..1eff972c4f0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/Parameters.Path.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClient.cs index d4db42a991a..d0563f49bda 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class PathClient { public PathClient() : this(new Uri("http://localhost:3000"), new PathClientOptions()) => throw null; - public PathClient(Uri endpoint, PathClientOptions options) => throw null; + internal PathClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, PathClientOptions options) => throw null; + + public PathClient(Uri endpoint, PathClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public PathClient(PathClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClientOptions.cs index 9a352e9e917..b544589353f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Parameters.Path { public partial class PathClientOptions : ClientPipelineOptions { + public PathClientOptions() => throw null; + + [Experimental("SCME0002")] + internal PathClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClientSettings.cs new file mode 100644 index 00000000000..a5fa1a1373e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Generated/PathClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Parameters.Path +{ + [Experimental("SCME0002")] + public partial class PathClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public PathClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj index 761c08fd25c..0dc89295a57 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/path/src/Parameters.Path.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..91b3c185344 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "QueryClient": { + "type": "object", + "description": "Configuration for QueryClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/queryClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "queryClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.sln deleted file mode 100644 index ce1fb45f8d5..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Parameters.Query", "src\Parameters.Query.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.slnx new file mode 100644 index 00000000000..390dd1bd738 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/Parameters.Query.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/Constant.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/Constant.cs index b1be965f2d8..3545cccf023 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/Constant.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/Constant.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Constant { protected Constant() => throw null; + internal Constant(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Post(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClient.cs index c3ed5f02aab..6a4be8cbeed 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace Parameters.Query { @@ -11,7 +12,12 @@ public partial class QueryClient { public QueryClient() : this(new Uri("http://localhost:3000"), new QueryClientOptions()) => throw null; - public QueryClient(Uri endpoint, QueryClientOptions options) => throw null; + internal QueryClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, QueryClientOptions options) => throw null; + + public QueryClient(Uri endpoint, QueryClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public QueryClient(QueryClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientOptions.cs index a625c60f864..a785237dffc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Parameters.Query { public partial class QueryClientOptions : ClientPipelineOptions { + public QueryClientOptions() => throw null; + + [Experimental("SCME0002")] + internal QueryClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientSettings.cs new file mode 100644 index 00000000000..d41690bb4e7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Generated/QueryClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Parameters.Query +{ + [Experimental("SCME0002")] + public partial class QueryClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public QueryClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj index 36929bde8c7..f675c78b200 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/query/src/Parameters.Query.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..15ae497a4ca --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "SpreadClient": { + "type": "object", + "description": "Configuration for SpreadClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/spreadClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "spreadClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.sln deleted file mode 100644 index b922bd22011..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Parameters.Spread", "src\Parameters.Spread.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.slnx new file mode 100644 index 00000000000..3d3a52794a1 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/Parameters.Spread.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Alias.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Alias.cs index ec8be6a9570..201900b0bc1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Alias.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Alias.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Alias { protected Alias() => throw null; + internal Alias(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult SpreadAsRequestBody(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Model.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Model.cs index 31ca1bfeab4..792e9511624 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Model.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/Model.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Model { protected Model() => throw null; + internal Model(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult SpreadAsRequestBody(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClient.cs index 310ea3031c4..5367a1359ab 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Parameters.Spread._Alias; using Parameters.Spread._Model; @@ -13,7 +14,12 @@ public partial class SpreadClient { public SpreadClient() : this(new Uri("http://localhost:3000"), new SpreadClientOptions()) => throw null; - public SpreadClient(Uri endpoint, SpreadClientOptions options) => throw null; + internal SpreadClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, SpreadClientOptions options) => throw null; + + public SpreadClient(Uri endpoint, SpreadClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public SpreadClient(SpreadClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClientOptions.cs index c738d114fae..27baba6242d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Parameters.Spread { public partial class SpreadClientOptions : ClientPipelineOptions { + public SpreadClientOptions() => throw null; + + [Experimental("SCME0002")] + internal SpreadClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClientSettings.cs new file mode 100644 index 00000000000..1ca4f6c34d8 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Generated/SpreadClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Parameters.Spread +{ + [Experimental("SCME0002")] + public partial class SpreadClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public SpreadClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj index ae8693b5c1a..c799a563e0a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/parameters/spread/src/Parameters.Spread.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..429fa759986 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ContentNegotiationClient": { + "type": "object", + "description": "Configuration for ContentNegotiationClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/contentNegotiationClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "contentNegotiationClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.sln deleted file mode 100644 index afbaa59c842..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payload.ContentNegotiation", "src\Payload.ContentNegotiation.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.slnx new file mode 100644 index 00000000000..eb78588a16c --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/Payload.ContentNegotiation.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClient.cs index 3632bd3895d..919000580c5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Payload.ContentNegotiation._DifferentBody; using Payload.ContentNegotiation._SameBody; @@ -13,7 +14,12 @@ public partial class ContentNegotiationClient { public ContentNegotiationClient() : this(new Uri("http://localhost:3000"), new ContentNegotiationClientOptions()) => throw null; - public ContentNegotiationClient(Uri endpoint, ContentNegotiationClientOptions options) => throw null; + internal ContentNegotiationClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ContentNegotiationClientOptions options) => throw null; + + public ContentNegotiationClient(Uri endpoint, ContentNegotiationClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ContentNegotiationClient(ContentNegotiationClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClientOptions.cs index b35052fa447..c6e914d7f4c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Payload.ContentNegotiation { public partial class ContentNegotiationClientOptions : ClientPipelineOptions { + public ContentNegotiationClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ContentNegotiationClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClientSettings.cs new file mode 100644 index 00000000000..518fbf6fb65 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/ContentNegotiationClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Payload.ContentNegotiation +{ + [Experimental("SCME0002")] + public partial class ContentNegotiationClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ContentNegotiationClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/DifferentBody.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/DifferentBody.cs index 76ada7bada7..765ef0cc721 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/DifferentBody.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/DifferentBody.cs @@ -14,6 +14,8 @@ public partial class DifferentBody { protected DifferentBody() => throw null; + internal DifferentBody(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAvatarAsPng(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/SameBody.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/SameBody.cs index fd6ad96379d..57af2a77ab4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/SameBody.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Generated/SameBody.cs @@ -14,6 +14,8 @@ public partial class SameBody { protected SameBody() => throw null; + internal SameBody(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAvatarAsPng(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj index 7e4886ecf67..0237cec1351 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/src/Payload.ContentNegotiation.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/tspCodeModel.json index 449693b81d4..7fbd3aebb6f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/content-negotiation/tspCodeModel.json @@ -22,7 +22,7 @@ { "$id": "3", "kind": "constant", - "name": "PngImageContentType", + "name": "GetAvatarAsPngRequestAccept", "namespace": "", "usage": "None", "valueType": { @@ -38,7 +38,7 @@ { "$id": "5", "kind": "constant", - "name": "PngImageContentType1", + "name": "GetAvatarAsPngRequestAccept1", "namespace": "", "usage": "None", "valueType": { @@ -54,7 +54,7 @@ { "$id": "7", "kind": "constant", - "name": "PngImageContentType2", + "name": "GetAvatarAsPngRequestAccept2", "namespace": "", "usage": "None", "valueType": { @@ -70,7 +70,7 @@ { "$id": "9", "kind": "constant", - "name": "JpegImageContentType", + "name": "GetAvatarAsJpegRequestAccept", "namespace": "", "usage": "None", "valueType": { @@ -86,7 +86,7 @@ { "$id": "11", "kind": "constant", - "name": "JpegImageContentType1", + "name": "GetAvatarAsJpegRequestAccept1", "namespace": "", "usage": "None", "valueType": { @@ -102,7 +102,7 @@ { "$id": "13", "kind": "constant", - "name": "JpegImageContentType2", + "name": "GetAvatarAsJpegRequestAccept2", "namespace": "", "usage": "None", "valueType": { @@ -118,7 +118,7 @@ { "$id": "15", "kind": "constant", - "name": "PngImageContentType3", + "name": "GetAvatarAsPngRequestAccept3", "namespace": "", "usage": "None", "valueType": { @@ -134,7 +134,7 @@ { "$id": "17", "kind": "constant", - "name": "PngImageContentType4", + "name": "GetAvatarAsPngRequestAccept4", "namespace": "", "usage": "None", "valueType": { @@ -150,7 +150,7 @@ { "$id": "19", "kind": "constant", - "name": "PngImageContentType5", + "name": "GetAvatarAsPngRequestAccept5", "namespace": "", "usage": "None", "valueType": { @@ -166,7 +166,7 @@ { "$id": "21", "kind": "constant", - "name": "PngImageAsJsonContentType1", + "name": "GetAvatarAsJsonRequestAccept", "namespace": "", "usage": "None", "valueType": { @@ -182,7 +182,7 @@ { "$id": "23", "kind": "constant", - "name": "PngImageAsJsonContentType2", + "name": "GetAvatarAsJsonRequestAccept1", "namespace": "", "usage": "None", "valueType": { @@ -198,7 +198,7 @@ { "$id": "25", "kind": "constant", - "name": "PngImageAsJsonContentType3", + "name": "GetAvatarAsJsonRequestAccept2", "namespace": "", "usage": "None", "valueType": { diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..7f9ceee34ff --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "JsonMergePatchClient": { + "type": "object", + "description": "Configuration for JsonMergePatchClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/jsonMergePatchClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "jsonMergePatchClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.sln deleted file mode 100644 index c1e0b0ab64f..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payload.JsonMergePatch", "src\Payload.JsonMergePatch.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.slnx new file mode 100644 index 00000000000..d5bee9bbcfb --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/Payload.JsonMergePatch.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClient.cs index 06f7a37dced..878bd2ed9bd 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class JsonMergePatchClient { public JsonMergePatchClient() : this(new Uri("http://localhost:3000"), new JsonMergePatchClientOptions()) => throw null; - public JsonMergePatchClient(Uri endpoint, JsonMergePatchClientOptions options) => throw null; + internal JsonMergePatchClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, JsonMergePatchClientOptions options) => throw null; + + public JsonMergePatchClient(Uri endpoint, JsonMergePatchClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public JsonMergePatchClient(JsonMergePatchClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClientOptions.cs index 044a4f35fb3..c64a14e0ec1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Payload.JsonMergePatch { public partial class JsonMergePatchClientOptions : ClientPipelineOptions { + public JsonMergePatchClientOptions() => throw null; + + [Experimental("SCME0002")] + internal JsonMergePatchClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClientSettings.cs new file mode 100644 index 00000000000..53e5788c5d5 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Generated/JsonMergePatchClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Payload.JsonMergePatch +{ + [Experimental("SCME0002")] + public partial class JsonMergePatchClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public JsonMergePatchClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj index 6bbf49f66df..d3d1e4c2778 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/json-merge-patch/src/Payload.JsonMergePatch.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..4341d641115 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "MediaTypeClient": { + "type": "object", + "description": "Configuration for MediaTypeClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/mediaTypeClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "mediaTypeClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.sln deleted file mode 100644 index 358e7e915d9..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payload.MediaType", "src\Payload.MediaType.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.slnx new file mode 100644 index 00000000000..20ccb384fab --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/Payload.MediaType.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClient.cs index 6e34839a39c..dbfd6a68c4c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Payload.MediaType._StringBody; namespace Payload.MediaType @@ -12,7 +13,12 @@ public partial class MediaTypeClient { public MediaTypeClient() : this(new Uri("http://localhost:3000"), new MediaTypeClientOptions()) => throw null; - public MediaTypeClient(Uri endpoint, MediaTypeClientOptions options) => throw null; + internal MediaTypeClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, MediaTypeClientOptions options) => throw null; + + public MediaTypeClient(Uri endpoint, MediaTypeClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public MediaTypeClient(MediaTypeClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClientOptions.cs index 34c7b715a6f..eb36f49a44c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Payload.MediaType { public partial class MediaTypeClientOptions : ClientPipelineOptions { + public MediaTypeClientOptions() => throw null; + + [Experimental("SCME0002")] + internal MediaTypeClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClientSettings.cs new file mode 100644 index 00000000000..2d7404eca4e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/MediaTypeClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Payload.MediaType +{ + [Experimental("SCME0002")] + public partial class MediaTypeClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public MediaTypeClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/StringBody.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/StringBody.cs index f31c4875707..3efbadabb94 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/StringBody.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Generated/StringBody.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class StringBody { protected StringBody() => throw null; + internal StringBody(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult SendAsText(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj index 75ed27a3fcf..2fb2c3c4657 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/media-type/src/Payload.MediaType.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..1e8e4a7a060 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "MultiPartClient": { + "type": "object", + "description": "Configuration for MultiPartClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/multiPartClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "multiPartClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.sln deleted file mode 100644 index 0c86188ef15..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payload.MultiPart", "src\Payload.MultiPart.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.slnx new file mode 100644 index 00000000000..eff9f66d1b0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/Payload.MultiPart.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormData.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormData.cs index c6e02e93832..7af85b26e37 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormData.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormData.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading.Tasks; @@ -14,6 +15,8 @@ public partial class FormData { protected FormData() => throw null; + internal FormData(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Basic(BinaryContent content, string contentType, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataFile.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataFile.cs index 055f8f20cb7..af3b92422ad 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataFile.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataFile.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading.Tasks; @@ -12,6 +13,8 @@ public partial class FormDataFile { protected FormDataFile() => throw null; + internal FormDataFile(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult UploadFileSpecificContentType(BinaryContent content, string contentType, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpParts.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpParts.cs index 033e295e92d..53b236c7af8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpParts.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpParts.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading.Tasks; @@ -14,6 +15,8 @@ public partial class FormDataHttpParts { protected FormDataHttpParts() => throw null; + internal FormDataHttpParts(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult JsonArrayAndFileArray(BinaryContent content, string contentType, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsContentType.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsContentType.cs index 32cb80df3d0..971ee6ad114 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsContentType.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsContentType.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading.Tasks; @@ -12,6 +13,8 @@ public partial class FormDataHttpPartsContentType { protected FormDataHttpPartsContentType() => throw null; + internal FormDataHttpPartsContentType(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult ImageJpegContentType(BinaryContent content, string contentType, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsNonString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsNonString.cs index 47557d7876b..cfb735ba1c8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsNonString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/FormDataHttpPartsNonString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading.Tasks; @@ -12,6 +13,8 @@ public partial class FormDataHttpPartsNonString { protected FormDataHttpPartsNonString() => throw null; + internal FormDataHttpPartsNonString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Float(BinaryContent content, string contentType, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClient.cs index cd0cceb3f85..882e5cd3826 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Payload.MultiPart._FormData; namespace Payload.MultiPart @@ -12,7 +13,12 @@ public partial class MultiPartClient { public MultiPartClient() : this(new Uri("http://localhost:3000"), new MultiPartClientOptions()) => throw null; - public MultiPartClient(Uri endpoint, MultiPartClientOptions options) => throw null; + internal MultiPartClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, MultiPartClientOptions options) => throw null; + + public MultiPartClient(Uri endpoint, MultiPartClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public MultiPartClient(MultiPartClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClientOptions.cs index 637c71f86aa..8c4e0bdd9bc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Payload.MultiPart { public partial class MultiPartClientOptions : ClientPipelineOptions { + public MultiPartClientOptions() => throw null; + + [Experimental("SCME0002")] + internal MultiPartClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClientSettings.cs new file mode 100644 index 00000000000..4952a597b64 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Generated/MultiPartClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Payload.MultiPart +{ + [Experimental("SCME0002")] + public partial class MultiPartClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public MultiPartClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj index 3354b884925..0bd10b19ed0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/multipart/src/Payload.MultiPart.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..52a7a7fb073 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "PageableClient": { + "type": "object", + "description": "Configuration for PageableClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/pageableClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "pageableClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.sln deleted file mode 100644 index c8bee499191..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payload.Pageable", "src\Payload.Pageable.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.slnx new file mode 100644 index 00000000000..540a5263b84 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/Payload.Pageable.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/Filter.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/Filter.Serialization.cs new file mode 100644 index 00000000000..a9b312823ee --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/Filter.Serialization.cs @@ -0,0 +1,36 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Text.Json; + +namespace Payload.Pageable._ServerDrivenPagination.AlternateInitialVerb +{ + public partial class Filter : IJsonModel + { + internal Filter() => throw null; + + protected virtual Filter PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + Filter IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(Filter filter) => throw null; + + void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options) => throw null; + + Filter IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + + protected virtual Filter JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/Filter.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/Filter.cs new file mode 100644 index 00000000000..fdfc6047811 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/Filter.cs @@ -0,0 +1,13 @@ +// + +#nullable disable + +namespace Payload.Pageable._ServerDrivenPagination.AlternateInitialVerb +{ + public partial class Filter + { + public Filter(string filterProperty) => throw null; + + public string FilterProperty => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/PayloadPageableContext.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/PayloadPageableContext.cs index 14ee36f4556..347e4c01fa3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/PayloadPageableContext.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/Models/PayloadPageableContext.cs @@ -5,10 +5,12 @@ using System.ClientModel.Primitives; using Payload.Pageable._PageSize; using Payload.Pageable._ServerDrivenPagination; +using Payload.Pageable._ServerDrivenPagination.AlternateInitialVerb; using Payload.Pageable._ServerDrivenPagination.ContinuationToken; namespace Payload.Pageable { + [ModelReaderWriterBuildable(typeof(Filter))] [ModelReaderWriterBuildable(typeof(Pet))] [ModelReaderWriterBuildable(typeof(XmlPet))] public partial class PayloadPageableContext : ModelReaderWriterContext diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageSize.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageSize.cs index aa4b7b3ce6a..1ba387d0819 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageSize.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageSize.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class PageSize { protected PageSize() => throw null; + internal PageSize(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual CollectionResult GetWithoutContinuation(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClient.cs index 990fa78c378..3b78a1ed79c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Payload.Pageable._PageSize; using Payload.Pageable._ServerDrivenPagination; using Payload.Pageable._XmlPagination; @@ -14,7 +15,12 @@ public partial class PageableClient { public PageableClient() : this(new Uri("http://localhost:3000"), new PageableClientOptions()) => throw null; - public PageableClient(Uri endpoint, PageableClientOptions options) => throw null; + internal PageableClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, PageableClientOptions options) => throw null; + + public PageableClient(Uri endpoint, PageableClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public PageableClient(PageableClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClientOptions.cs index a852c495b1e..42a316d9908 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Payload.Pageable { public partial class PageableClientOptions : ClientPipelineOptions { + public PageableClientOptions() => throw null; + + [Experimental("SCME0002")] + internal PageableClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClientSettings.cs new file mode 100644 index 00000000000..f1e6a9393e2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PageableClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Payload.Pageable +{ + [Experimental("SCME0002")] + public partial class PageableClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public PageableClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PayloadPageableModelFactory.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PayloadPageableModelFactory.cs index 84bdf1a3305..0b66e798a05 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PayloadPageableModelFactory.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/PayloadPageableModelFactory.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using Payload.Pageable._PageSize; using Payload.Pageable._ServerDrivenPagination; +using Payload.Pageable._ServerDrivenPagination.AlternateInitialVerb; using Payload.Pageable._ServerDrivenPagination.ContinuationToken; namespace Payload.Pageable @@ -16,5 +17,7 @@ public static partial class PayloadPageableModelFactory public static Pet Pet(string id = default, string name = default) => throw null; public static XmlPet XmlPet(string id = default, string name = default) => throw null; + + public static Filter Filter(string filterProperty = default) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPagination.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPagination.cs index b611ba4910d..3d0c9d66977 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPagination.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPagination.cs @@ -2,10 +2,12 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; using Payload.Pageable; +using Payload.Pageable._ServerDrivenPagination.AlternateInitialVerb; using Payload.Pageable._ServerDrivenPagination.ContinuationToken; namespace Payload.Pageable._ServerDrivenPagination @@ -14,6 +16,8 @@ public partial class ServerDrivenPagination { protected ServerDrivenPagination() => throw null; + internal ServerDrivenPagination(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual CollectionResult Link(RequestOptions options) => throw null; @@ -40,6 +44,8 @@ public partial class ServerDrivenPagination public virtual AsyncCollectionResult NestedLinkAsync(CancellationToken cancellationToken = default) => throw null; + public virtual ServerDrivenPaginationAlternateInitialVerb GetServerDrivenPaginationAlternateInitialVerbClient() => throw null; + public virtual ServerDrivenPaginationContinuationToken GetServerDrivenPaginationContinuationTokenClient() => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPaginationAlternateInitialVerb.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPaginationAlternateInitialVerb.cs new file mode 100644 index 00000000000..29706308ee7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPaginationAlternateInitialVerb.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using Payload.Pageable; + +namespace Payload.Pageable._ServerDrivenPagination.AlternateInitialVerb +{ + public partial class ServerDrivenPaginationAlternateInitialVerb + { + protected ServerDrivenPaginationAlternateInitialVerb() => throw null; + + internal ServerDrivenPaginationAlternateInitialVerb(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual CollectionResult Post(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual AsyncCollectionResult PostAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual CollectionResult Post(Filter body, CancellationToken cancellationToken = default) => throw null; + + public virtual AsyncCollectionResult PostAsync(Filter body, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPaginationContinuationToken.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPaginationContinuationToken.cs index 5c48d40f9b3..928eaab911f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPaginationContinuationToken.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/ServerDrivenPaginationContinuationToken.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ServerDrivenPaginationContinuationToken { protected ServerDrivenPaginationContinuationToken() => throw null; + internal ServerDrivenPaginationContinuationToken(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual CollectionResult RequestQueryResponseBody(string token, string foo, string bar, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/XmlPagination.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/XmlPagination.cs index f5423d536cc..edbc61168f7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/XmlPagination.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Generated/XmlPagination.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class XmlPagination { protected XmlPagination() => throw null; + internal XmlPagination(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual CollectionResult GetWithContinuation(string marker, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj index 17be1ba87e5..86f22a60ab5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/src/Payload.Pageable.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/tspCodeModel.json index 12b360f531d..8295c355212 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/pageable/tspCodeModel.json @@ -54,7 +54,7 @@ { "$id": "7", "kind": "constant", - "name": "requestQueryResponseBodyContentType", + "name": "postContentType", "namespace": "", "usage": "None", "valueType": { @@ -70,7 +70,7 @@ { "$id": "9", "kind": "constant", - "name": "requestHeaderResponseBodyContentType", + "name": "postContentType1", "namespace": "", "usage": "None", "valueType": { @@ -86,7 +86,7 @@ { "$id": "11", "kind": "constant", - "name": "requestQueryResponseHeaderContentType", + "name": "requestQueryResponseBodyContentType", "namespace": "", "usage": "None", "valueType": { @@ -102,7 +102,7 @@ { "$id": "13", "kind": "constant", - "name": "requestHeaderResponseHeaderContentType", + "name": "requestHeaderResponseBodyContentType", "namespace": "", "usage": "None", "valueType": { @@ -118,7 +118,7 @@ { "$id": "15", "kind": "constant", - "name": "requestQueryNestedResponseBodyContentType", + "name": "requestQueryResponseHeaderContentType", "namespace": "", "usage": "None", "valueType": { @@ -134,7 +134,7 @@ { "$id": "17", "kind": "constant", - "name": "requestHeaderNestedResponseBodyContentType", + "name": "requestHeaderResponseHeaderContentType", "namespace": "", "usage": "None", "valueType": { @@ -150,7 +150,7 @@ { "$id": "19", "kind": "constant", - "name": "listWithoutContinuationContentType", + "name": "requestQueryNestedResponseBodyContentType", "namespace": "", "usage": "None", "valueType": { @@ -166,7 +166,7 @@ { "$id": "21", "kind": "constant", - "name": "listWithPageSizeContentType", + "name": "requestHeaderNestedResponseBodyContentType", "namespace": "", "usage": "None", "valueType": { @@ -182,7 +182,7 @@ { "$id": "23", "kind": "constant", - "name": "listWithContinuationContentType", + "name": "listWithoutContinuationContentType", "namespace": "", "usage": "None", "valueType": { @@ -192,13 +192,13 @@ "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, - "value": "application/xml", + "value": "application/json", "decorators": [] }, { "$id": "25", "kind": "constant", - "name": "ListWithContinuationResponseContentType", + "name": "listWithPageSizeContentType", "namespace": "", "usage": "None", "valueType": { @@ -208,13 +208,13 @@ "crossLanguageDefinitionId": "TypeSpec.string", "decorators": [] }, - "value": "application/xml", + "value": "application/json", "decorators": [] }, { "$id": "27", "kind": "constant", - "name": "listWithNextLinkContentType", + "name": "listWithContinuationContentType", "namespace": "", "usage": "None", "valueType": { @@ -230,7 +230,7 @@ { "$id": "29", "kind": "constant", - "name": "ListWithContinuationResponseContentType1", + "name": "ListWithContinuationResponseContentType", "namespace": "", "usage": "None", "valueType": { @@ -242,11 +242,43 @@ }, "value": "application/xml", "decorators": [] + }, + { + "$id": "31", + "kind": "constant", + "name": "listWithNextLinkContentType", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "32", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "33", + "kind": "constant", + "name": "ListWithContinuationResponseContentType1", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "34", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] } ], "models": [ { - "$id": "31", + "$id": "35", "kind": "model", "name": "LinkResponse", "namespace": "Payload.Pageable.ServerDrivenPagination", @@ -260,16 +292,16 @@ }, "properties": [ { - "$id": "32", + "$id": "36", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$id": "33", + "$id": "37", "kind": "array", "name": "ArrayPet", "valueType": { - "$id": "34", + "$id": "38", "kind": "model", "name": "Pet", "namespace": "Payload.Pageable", @@ -283,12 +315,12 @@ }, "properties": [ { - "$id": "35", + "$id": "39", "kind": "property", "name": "id", "serializedName": "id", "type": { - "$id": "36", + "$id": "40", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -308,12 +340,12 @@ "isHttpMetadata": false }, { - "$id": "37", + "$id": "41", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "38", + "$id": "42", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -351,12 +383,12 @@ "isHttpMetadata": false }, { - "$id": "39", + "$id": "43", "kind": "property", "name": "next", "serializedName": "next", "type": { - "$id": "40", + "$id": "44", "kind": "url", "name": "url", "crossLanguageDefinitionId": "TypeSpec.url", @@ -378,10 +410,10 @@ ] }, { - "$ref": "34" + "$ref": "38" }, { - "$id": "41", + "$id": "45", "kind": "model", "name": "LinkStringResponse", "namespace": "Payload.Pageable.ServerDrivenPagination", @@ -395,12 +427,12 @@ }, "properties": [ { - "$id": "42", + "$id": "46", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -416,12 +448,12 @@ "isHttpMetadata": false }, { - "$id": "43", + "$id": "47", "kind": "property", "name": "next", "serializedName": "next", "type": { - "$id": "44", + "$id": "48", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -443,7 +475,7 @@ ] }, { - "$id": "45", + "$id": "49", "kind": "model", "name": "NestedLinkResponse", "namespace": "Payload.Pageable.ServerDrivenPagination", @@ -457,12 +489,12 @@ }, "properties": [ { - "$id": "46", + "$id": "50", "kind": "property", "name": "nestedItems", "serializedName": "nestedItems", "type": { - "$id": "47", + "$id": "51", "kind": "model", "name": "NestedLinkResponseNestedItems", "namespace": "Payload.Pageable.ServerDrivenPagination", @@ -476,12 +508,12 @@ }, "properties": [ { - "$id": "48", + "$id": "52", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -512,12 +544,12 @@ "isHttpMetadata": false }, { - "$id": "49", + "$id": "53", "kind": "property", "name": "nestedNext", "serializedName": "nestedNext", "type": { - "$id": "50", + "$id": "54", "kind": "model", "name": "NestedLinkResponseNestedNext", "namespace": "Payload.Pageable.ServerDrivenPagination", @@ -531,12 +563,12 @@ }, "properties": [ { - "$id": "51", + "$id": "55", "kind": "property", "name": "next", "serializedName": "next", "type": { - "$id": "52", + "$id": "56", "kind": "url", "name": "url", "crossLanguageDefinitionId": "TypeSpec.url", @@ -573,13 +605,13 @@ ] }, { - "$ref": "47" + "$ref": "51" }, { - "$ref": "50" + "$ref": "54" }, { - "$id": "53", + "$id": "57", "kind": "model", "name": "ListWithoutContinuationResponse", "namespace": "Payload.Pageable.PageSize", @@ -593,12 +625,12 @@ }, "properties": [ { - "$id": "54", + "$id": "58", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -616,7 +648,7 @@ ] }, { - "$id": "55", + "$id": "59", "kind": "model", "name": "ListWithPageSizeResponse", "namespace": "Payload.Pageable.PageSize", @@ -630,12 +662,12 @@ }, "properties": [ { - "$id": "56", + "$id": "60", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -653,7 +685,7 @@ ] }, { - "$id": "57", + "$id": "61", "kind": "model", "name": "XmlPetListResult", "namespace": "Payload.Pageable", @@ -677,16 +709,16 @@ }, "properties": [ { - "$id": "58", + "$id": "62", "kind": "property", "name": "pets", "serializedName": "Pets", "type": { - "$id": "59", + "$id": "63", "kind": "array", "name": "ArrayXmlPet", "valueType": { - "$id": "60", + "$id": "64", "kind": "model", "name": "XmlPet", "namespace": "Payload.Pageable", @@ -710,12 +742,12 @@ }, "properties": [ { - "$id": "61", + "$id": "65", "kind": "property", "name": "id", "serializedName": "Id", "type": { - "$id": "62", + "$id": "66", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -744,12 +776,12 @@ "isHttpMetadata": false }, { - "$id": "63", + "$id": "67", "kind": "property", "name": "name", "serializedName": "Name", "type": { - "$id": "64", + "$id": "68", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -806,12 +838,12 @@ "isHttpMetadata": false }, { - "$id": "65", + "$id": "69", "kind": "property", "name": "nextMarker", "serializedName": "NextMarker", "type": { - "$id": "66", + "$id": "70", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -842,10 +874,10 @@ ] }, { - "$ref": "60" + "$ref": "64" }, { - "$id": "67", + "$id": "71", "kind": "model", "name": "XmlPetListResultWithNextLink", "namespace": "Payload.Pageable", @@ -869,12 +901,12 @@ }, "properties": [ { - "$id": "68", + "$id": "72", "kind": "property", "name": "pets", "serializedName": "Pets", "type": { - "$ref": "59" + "$ref": "63" }, "optional": false, "readOnly": false, @@ -900,12 +932,12 @@ "isHttpMetadata": false }, { - "$id": "69", + "$id": "73", "kind": "property", "name": "nextLink", "serializedName": "NextLink", "type": { - "$id": "70", + "$id": "74", "kind": "url", "name": "url", "crossLanguageDefinitionId": "TypeSpec.url", @@ -936,7 +968,110 @@ ] }, { - "$id": "71", + "$id": "75", + "kind": "model", + "name": "Filter", + "namespace": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb", + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.Filter", + "usage": "Input,Json", + "decorators": [], + "serializationOptions": { + "json": { + "name": "Filter" + } + }, + "properties": [ + { + "$id": "76", + "kind": "property", + "name": "filter", + "serializedName": "filter", + "type": { + "$id": "77", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.Filter.filter", + "serializationOptions": { + "json": { + "name": "filter" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "78", + "kind": "model", + "name": "PostResponse", + "namespace": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb", + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.Response.anonymous", + "usage": "Output,Json", + "decorators": [], + "serializationOptions": { + "json": { + "name": "" + } + }, + "properties": [ + { + "$id": "79", + "kind": "property", + "name": "pets", + "serializedName": "pets", + "type": { + "$ref": "37" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.Response.anonymous.pets", + "serializationOptions": { + "json": { + "name": "pets" + } + }, + "isHttpMetadata": false + }, + { + "$id": "80", + "kind": "property", + "name": "next", + "serializedName": "next", + "type": { + "$id": "81", + "kind": "url", + "name": "url", + "crossLanguageDefinitionId": "TypeSpec.url", + "decorators": [] + }, + "optional": true, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.Response.anonymous.next", + "serializationOptions": { + "json": { + "name": "next" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "82", "kind": "model", "name": "RequestQueryResponseBodyResponse", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -950,12 +1085,12 @@ }, "properties": [ { - "$id": "72", + "$id": "83", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -971,12 +1106,12 @@ "isHttpMetadata": false }, { - "$id": "73", + "$id": "84", "kind": "property", "name": "nextToken", "serializedName": "nextToken", "type": { - "$id": "74", + "$id": "85", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -998,7 +1133,7 @@ ] }, { - "$id": "75", + "$id": "86", "kind": "model", "name": "RequestHeaderResponseBodyResponse", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -1012,12 +1147,12 @@ }, "properties": [ { - "$id": "76", + "$id": "87", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -1033,12 +1168,12 @@ "isHttpMetadata": false }, { - "$id": "77", + "$id": "88", "kind": "property", "name": "nextToken", "serializedName": "nextToken", "type": { - "$id": "78", + "$id": "89", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1060,7 +1195,7 @@ ] }, { - "$id": "79", + "$id": "90", "kind": "model", "name": "RequestQueryResponseHeaderResponse", "namespace": "", @@ -1074,12 +1209,12 @@ }, "properties": [ { - "$id": "80", + "$id": "91", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -1097,7 +1232,7 @@ ] }, { - "$id": "81", + "$id": "92", "kind": "model", "name": "RequestHeaderResponseHeaderResponse", "namespace": "", @@ -1111,12 +1246,12 @@ }, "properties": [ { - "$id": "82", + "$id": "93", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -1134,7 +1269,7 @@ ] }, { - "$id": "83", + "$id": "94", "kind": "model", "name": "RequestQueryNestedResponseBodyResponse", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -1148,12 +1283,12 @@ }, "properties": [ { - "$id": "84", + "$id": "95", "kind": "property", "name": "nestedItems", "serializedName": "nestedItems", "type": { - "$id": "85", + "$id": "96", "kind": "model", "name": "RequestQueryNestedResponseBodyResponseNestedItems", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -1167,12 +1302,12 @@ }, "properties": [ { - "$id": "86", + "$id": "97", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -1203,12 +1338,12 @@ "isHttpMetadata": false }, { - "$id": "87", + "$id": "98", "kind": "property", "name": "nestedNext", "serializedName": "nestedNext", "type": { - "$id": "88", + "$id": "99", "kind": "model", "name": "RequestQueryNestedResponseBodyResponseNestedNext", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -1222,12 +1357,12 @@ }, "properties": [ { - "$id": "89", + "$id": "100", "kind": "property", "name": "nextToken", "serializedName": "nextToken", "type": { - "$id": "90", + "$id": "101", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1264,13 +1399,13 @@ ] }, { - "$ref": "85" + "$ref": "96" }, { - "$ref": "88" + "$ref": "99" }, { - "$id": "91", + "$id": "102", "kind": "model", "name": "RequestHeaderNestedResponseBodyResponse", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -1284,12 +1419,12 @@ }, "properties": [ { - "$id": "92", + "$id": "103", "kind": "property", "name": "nestedItems", "serializedName": "nestedItems", "type": { - "$id": "93", + "$id": "104", "kind": "model", "name": "RequestHeaderNestedResponseBodyResponseNestedItems", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -1303,12 +1438,12 @@ }, "properties": [ { - "$id": "94", + "$id": "105", "kind": "property", "name": "pets", "serializedName": "pets", "type": { - "$ref": "33" + "$ref": "37" }, "optional": false, "readOnly": false, @@ -1339,12 +1474,12 @@ "isHttpMetadata": false }, { - "$id": "95", + "$id": "106", "kind": "property", "name": "nestedNext", "serializedName": "nestedNext", "type": { - "$id": "96", + "$id": "107", "kind": "model", "name": "RequestHeaderNestedResponseBodyResponseNestedNext", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", @@ -1358,12 +1493,12 @@ }, "properties": [ { - "$id": "97", + "$id": "108", "kind": "property", "name": "nextToken", "serializedName": "nextToken", "type": { - "$id": "98", + "$id": "109", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1400,15 +1535,15 @@ ] }, { - "$ref": "93" + "$ref": "104" }, { - "$ref": "96" + "$ref": "107" } ], "clients": [ { - "$id": "99", + "$id": "110", "kind": "client", "name": "PageableClient", "namespace": "Payload.Pageable", @@ -1416,13 +1551,13 @@ "methods": [], "parameters": [ { - "$id": "100", + "$id": "111", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "101", + "$id": "112", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -1433,7 +1568,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "102", + "$id": "113", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -1452,25 +1587,25 @@ "apiVersions": [], "children": [ { - "$id": "103", + "$id": "114", "kind": "client", "name": "ServerDrivenPagination", "namespace": "Payload.Pageable.ServerDrivenPagination", "methods": [ { - "$id": "104", + "$id": "115", "kind": "paging", "name": "link", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "105", + "$id": "116", "name": "link", "resourceName": "ServerDrivenPagination", "accessibility": "public", "parameters": [ { - "$id": "106", + "$id": "117", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -1486,7 +1621,7 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.link.accept", "methodParameterSegments": [ { - "$id": "107", + "$id": "118", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -1511,7 +1646,7 @@ 200 ], "bodyType": { - "$ref": "31" + "$ref": "35" }, "headers": [], "isErrorResponse": false, @@ -1532,12 +1667,12 @@ }, "parameters": [ { - "$ref": "107" + "$ref": "118" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -1561,19 +1696,19 @@ } }, { - "$id": "108", + "$id": "119", "kind": "paging", "name": "linkString", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "109", + "$id": "120", "name": "linkString", "resourceName": "ServerDrivenPagination", "accessibility": "public", "parameters": [ { - "$id": "110", + "$id": "121", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -1589,7 +1724,7 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.linkString.accept", "methodParameterSegments": [ { - "$id": "111", + "$id": "122", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -1614,7 +1749,7 @@ 200 ], "bodyType": { - "$ref": "41" + "$ref": "45" }, "headers": [], "isErrorResponse": false, @@ -1635,12 +1770,12 @@ }, "parameters": [ { - "$ref": "111" + "$ref": "122" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -1664,19 +1799,19 @@ } }, { - "$id": "112", + "$id": "123", "kind": "paging", "name": "nestedLink", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "113", + "$id": "124", "name": "nestedLink", "resourceName": "ServerDrivenPagination", "accessibility": "public", "parameters": [ { - "$id": "114", + "$id": "125", "kind": "header", "name": "accept", "serializedName": "Accept", @@ -1692,7 +1827,7 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.nestedLink.accept", "methodParameterSegments": [ { - "$id": "115", + "$id": "126", "kind": "method", "name": "accept", "serializedName": "Accept", @@ -1717,7 +1852,7 @@ 200 ], "bodyType": { - "$ref": "45" + "$ref": "49" }, "headers": [], "isErrorResponse": false, @@ -1738,12 +1873,12 @@ }, "parameters": [ { - "$ref": "115" + "$ref": "126" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "nestedItems", @@ -1772,13 +1907,13 @@ ], "parameters": [ { - "$id": "116", + "$id": "127", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "117", + "$id": "128", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -1789,7 +1924,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "118", + "$id": "129", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -1807,34 +1942,270 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination", "apiVersions": [], "parent": { - "$ref": "99" + "$ref": "110" }, "children": [ { - "$id": "119", + "$id": "130", + "kind": "client", + "name": "AlternateInitialVerb", + "namespace": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb", + "doc": "Scenario where the initial request is not a GET request. However following the next link always result in a GET request.", + "methods": [ + { + "$id": "131", + "kind": "paging", + "name": "post", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "132", + "name": "post", + "resourceName": "AlternateInitialVerb", + "accessibility": "public", + "parameters": [ + { + "$id": "133", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "doc": "Body parameter's content type. Known values are application/json", + "type": { + "$ref": "7" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.contentType", + "methodParameterSegments": [ + { + "$id": "134", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "doc": "Body parameter's content type. Known values are application/json", + "type": { + "$ref": "7" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "135", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "9" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.accept", + "methodParameterSegments": [ + { + "$id": "136", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "9" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "137", + "kind": "body", + "name": "body", + "serializedName": "body", + "type": { + "$ref": "75" + }, + "isApiVersion": false, + "contentTypes": [ + "application/json" + ], + "defaultContentType": "application/json", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.body", + "methodParameterSegments": [ + { + "$id": "138", + "kind": "method", + "name": "body", + "serializedName": "body", + "type": { + "$ref": "75" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.body", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "78" + }, + "headers": [], + "isErrorResponse": false, + "contentTypes": [ + "application/json" + ] + } + ], + "httpMethod": "POST", + "uri": "{endpoint}", + "path": "/payload/pageable/server-driven-pagination/link/initial-post", + "requestMediaTypes": [ + "application/json" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post", + "decorators": [], + "namespace": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb" + }, + "parameters": [ + { + "$ref": "138" + }, + { + "$ref": "134" + }, + { + "$ref": "136" + } + ], + "response": { + "type": { + "$ref": "37" + }, + "resultSegments": [ + "pets" + ] + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post", + "pagingMetadata": { + "itemPropertySegments": [ + "pets" + ], + "nextLink": { + "responseSegments": [ + "next" + ], + "responseLocation": "Body" + }, + "pageSizeParameterSegments": [] + } + } + ], + "parameters": [ + { + "$id": "139", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "140", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "141", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb", + "apiVersions": [], + "parent": { + "$ref": "114" + }, + "isMultiServiceClient": false + }, + { + "$id": "142", "kind": "client", "name": "ContinuationToken", "namespace": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", "methods": [ { - "$id": "120", + "$id": "143", "kind": "paging", "name": "requestQueryResponseBody", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "121", + "$id": "144", "name": "requestQueryResponseBody", "resourceName": "ContinuationToken", "accessibility": "public", "parameters": [ { - "$id": "122", + "$id": "145", "kind": "query", "name": "token", "serializedName": "token", "type": { - "$id": "123", + "$id": "146", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1849,12 +2220,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "124", + "$id": "147", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "125", + "$id": "148", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1872,12 +2243,12 @@ ] }, { - "$id": "126", + "$id": "149", "kind": "header", "name": "foo", "serializedName": "foo", "type": { - "$id": "127", + "$id": "150", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1892,12 +2263,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseBody.foo", "methodParameterSegments": [ { - "$id": "128", + "$id": "151", "kind": "method", "name": "foo", "serializedName": "foo", "type": { - "$id": "129", + "$id": "152", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1915,12 +2286,12 @@ ] }, { - "$id": "130", + "$id": "153", "kind": "query", "name": "bar", "serializedName": "bar", "type": { - "$id": "131", + "$id": "154", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1935,12 +2306,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "132", + "$id": "155", "kind": "method", "name": "bar", "serializedName": "bar", "type": { - "$id": "133", + "$id": "156", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1958,12 +2329,12 @@ ] }, { - "$id": "134", + "$id": "157", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "7" + "$ref": "11" }, "isApiVersion": false, "optional": false, @@ -1974,12 +2345,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseBody.accept", "methodParameterSegments": [ { - "$id": "135", + "$id": "158", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "7" + "$ref": "11" }, "location": "Header", "isApiVersion": false, @@ -1999,7 +2370,7 @@ 200 ], "bodyType": { - "$ref": "71" + "$ref": "82" }, "headers": [], "isErrorResponse": false, @@ -2020,21 +2391,21 @@ }, "parameters": [ { - "$ref": "124" + "$ref": "147" }, { - "$ref": "128" + "$ref": "151" }, { - "$ref": "132" + "$ref": "155" }, { - "$ref": "135" + "$ref": "158" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -2050,7 +2421,7 @@ ], "continuationToken": { "parameter": { - "$ref": "122" + "$ref": "145" }, "responseSegments": [ "nextToken" @@ -2061,24 +2432,24 @@ } }, { - "$id": "136", + "$id": "159", "kind": "paging", "name": "requestHeaderResponseBody", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "137", + "$id": "160", "name": "requestHeaderResponseBody", "resourceName": "ContinuationToken", "accessibility": "public", "parameters": [ { - "$id": "138", + "$id": "161", "kind": "header", "name": "token", "serializedName": "token", "type": { - "$id": "139", + "$id": "162", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2093,12 +2464,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseBody.token", "methodParameterSegments": [ { - "$id": "140", + "$id": "163", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "141", + "$id": "164", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2116,12 +2487,12 @@ ] }, { - "$id": "142", + "$id": "165", "kind": "header", "name": "foo", "serializedName": "foo", "type": { - "$id": "143", + "$id": "166", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2136,12 +2507,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseBody.foo", "methodParameterSegments": [ { - "$id": "144", + "$id": "167", "kind": "method", "name": "foo", "serializedName": "foo", "type": { - "$id": "145", + "$id": "168", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2159,12 +2530,12 @@ ] }, { - "$id": "146", + "$id": "169", "kind": "query", "name": "bar", "serializedName": "bar", "type": { - "$id": "147", + "$id": "170", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2179,12 +2550,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "148", + "$id": "171", "kind": "method", "name": "bar", "serializedName": "bar", "type": { - "$id": "149", + "$id": "172", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2202,12 +2573,12 @@ ] }, { - "$id": "150", + "$id": "173", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "9" + "$ref": "13" }, "isApiVersion": false, "optional": false, @@ -2218,12 +2589,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseBody.accept", "methodParameterSegments": [ { - "$id": "151", + "$id": "174", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "9" + "$ref": "13" }, "location": "Header", "isApiVersion": false, @@ -2243,7 +2614,7 @@ 200 ], "bodyType": { - "$ref": "75" + "$ref": "86" }, "headers": [], "isErrorResponse": false, @@ -2264,21 +2635,21 @@ }, "parameters": [ { - "$ref": "140" + "$ref": "163" }, { - "$ref": "144" + "$ref": "167" }, { - "$ref": "148" + "$ref": "171" }, { - "$ref": "151" + "$ref": "174" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -2294,7 +2665,7 @@ ], "continuationToken": { "parameter": { - "$ref": "138" + "$ref": "161" }, "responseSegments": [ "nextToken" @@ -2305,24 +2676,24 @@ } }, { - "$id": "152", + "$id": "175", "kind": "paging", "name": "requestQueryResponseHeader", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "153", + "$id": "176", "name": "requestQueryResponseHeader", "resourceName": "ContinuationToken", "accessibility": "public", "parameters": [ { - "$id": "154", + "$id": "177", "kind": "query", "name": "token", "serializedName": "token", "type": { - "$id": "155", + "$id": "178", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2337,12 +2708,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "156", + "$id": "179", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "157", + "$id": "180", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2360,12 +2731,12 @@ ] }, { - "$id": "158", + "$id": "181", "kind": "header", "name": "foo", "serializedName": "foo", "type": { - "$id": "159", + "$id": "182", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2380,12 +2751,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseHeader.foo", "methodParameterSegments": [ { - "$id": "160", + "$id": "183", "kind": "method", "name": "foo", "serializedName": "foo", "type": { - "$id": "161", + "$id": "184", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2403,12 +2774,12 @@ ] }, { - "$id": "162", + "$id": "185", "kind": "query", "name": "bar", "serializedName": "bar", "type": { - "$id": "163", + "$id": "186", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2423,12 +2794,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "164", + "$id": "187", "kind": "method", "name": "bar", "serializedName": "bar", "type": { - "$id": "165", + "$id": "188", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2446,12 +2817,12 @@ ] }, { - "$id": "166", + "$id": "189", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "11" + "$ref": "15" }, "isApiVersion": false, "optional": false, @@ -2462,12 +2833,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseHeader.accept", "methodParameterSegments": [ { - "$id": "167", + "$id": "190", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "11" + "$ref": "15" }, "location": "Header", "isApiVersion": false, @@ -2487,14 +2858,14 @@ 200 ], "bodyType": { - "$ref": "79" + "$ref": "90" }, "headers": [ { "name": "nextToken", "nameInResponse": "next-token", "type": { - "$id": "168", + "$id": "191", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2520,21 +2891,21 @@ }, "parameters": [ { - "$ref": "156" + "$ref": "179" }, { - "$ref": "160" + "$ref": "183" }, { - "$ref": "164" + "$ref": "187" }, { - "$ref": "167" + "$ref": "190" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -2550,7 +2921,7 @@ ], "continuationToken": { "parameter": { - "$ref": "154" + "$ref": "177" }, "responseSegments": [ "next-token" @@ -2561,24 +2932,24 @@ } }, { - "$id": "169", + "$id": "192", "kind": "paging", "name": "requestHeaderResponseHeader", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "170", + "$id": "193", "name": "requestHeaderResponseHeader", "resourceName": "ContinuationToken", "accessibility": "public", "parameters": [ { - "$id": "171", + "$id": "194", "kind": "header", "name": "token", "serializedName": "token", "type": { - "$id": "172", + "$id": "195", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2593,12 +2964,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseHeader.token", "methodParameterSegments": [ { - "$id": "173", + "$id": "196", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "174", + "$id": "197", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2616,12 +2987,12 @@ ] }, { - "$id": "175", + "$id": "198", "kind": "header", "name": "foo", "serializedName": "foo", "type": { - "$id": "176", + "$id": "199", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2636,12 +3007,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseHeader.foo", "methodParameterSegments": [ { - "$id": "177", + "$id": "200", "kind": "method", "name": "foo", "serializedName": "foo", "type": { - "$id": "178", + "$id": "201", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2659,12 +3030,12 @@ ] }, { - "$id": "179", + "$id": "202", "kind": "query", "name": "bar", "serializedName": "bar", "type": { - "$id": "180", + "$id": "203", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2679,12 +3050,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "181", + "$id": "204", "kind": "method", "name": "bar", "serializedName": "bar", "type": { - "$id": "182", + "$id": "205", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2702,12 +3073,12 @@ ] }, { - "$id": "183", + "$id": "206", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "13" + "$ref": "17" }, "isApiVersion": false, "optional": false, @@ -2718,12 +3089,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseHeader.accept", "methodParameterSegments": [ { - "$id": "184", + "$id": "207", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "13" + "$ref": "17" }, "location": "Header", "isApiVersion": false, @@ -2743,14 +3114,14 @@ 200 ], "bodyType": { - "$ref": "81" + "$ref": "92" }, "headers": [ { "name": "nextToken", "nameInResponse": "next-token", "type": { - "$id": "185", + "$id": "208", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2776,21 +3147,21 @@ }, "parameters": [ { - "$ref": "173" + "$ref": "196" }, { - "$ref": "177" + "$ref": "200" }, { - "$ref": "181" + "$ref": "204" }, { - "$ref": "184" + "$ref": "207" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -2806,7 +3177,7 @@ ], "continuationToken": { "parameter": { - "$ref": "171" + "$ref": "194" }, "responseSegments": [ "next-token" @@ -2817,24 +3188,24 @@ } }, { - "$id": "186", + "$id": "209", "kind": "paging", "name": "requestQueryNestedResponseBody", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "187", + "$id": "210", "name": "requestQueryNestedResponseBody", "resourceName": "ContinuationToken", "accessibility": "public", "parameters": [ { - "$id": "188", + "$id": "211", "kind": "query", "name": "token", "serializedName": "token", "type": { - "$id": "189", + "$id": "212", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2849,12 +3220,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "190", + "$id": "213", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "191", + "$id": "214", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2872,12 +3243,12 @@ ] }, { - "$id": "192", + "$id": "215", "kind": "header", "name": "foo", "serializedName": "foo", "type": { - "$id": "193", + "$id": "216", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2892,12 +3263,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.foo", "methodParameterSegments": [ { - "$id": "194", + "$id": "217", "kind": "method", "name": "foo", "serializedName": "foo", "type": { - "$id": "195", + "$id": "218", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2915,12 +3286,12 @@ ] }, { - "$id": "196", + "$id": "219", "kind": "query", "name": "bar", "serializedName": "bar", "type": { - "$id": "197", + "$id": "220", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2935,12 +3306,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "198", + "$id": "221", "kind": "method", "name": "bar", "serializedName": "bar", "type": { - "$id": "199", + "$id": "222", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2958,12 +3329,12 @@ ] }, { - "$id": "200", + "$id": "223", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "15" + "$ref": "19" }, "isApiVersion": false, "optional": false, @@ -2974,12 +3345,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.accept", "methodParameterSegments": [ { - "$id": "201", + "$id": "224", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "15" + "$ref": "19" }, "location": "Header", "isApiVersion": false, @@ -2999,7 +3370,7 @@ 200 ], "bodyType": { - "$ref": "83" + "$ref": "94" }, "headers": [], "isErrorResponse": false, @@ -3020,21 +3391,21 @@ }, "parameters": [ { - "$ref": "190" + "$ref": "213" }, { - "$ref": "194" + "$ref": "217" }, { - "$ref": "198" + "$ref": "221" }, { - "$ref": "201" + "$ref": "224" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "nestedItems", @@ -3052,7 +3423,7 @@ ], "continuationToken": { "parameter": { - "$ref": "188" + "$ref": "211" }, "responseSegments": [ "nestedNext", @@ -3064,24 +3435,24 @@ } }, { - "$id": "202", + "$id": "225", "kind": "paging", "name": "requestHeaderNestedResponseBody", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "203", + "$id": "226", "name": "requestHeaderNestedResponseBody", "resourceName": "ContinuationToken", "accessibility": "public", "parameters": [ { - "$id": "204", + "$id": "227", "kind": "header", "name": "token", "serializedName": "token", "type": { - "$id": "205", + "$id": "228", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3096,12 +3467,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.token", "methodParameterSegments": [ { - "$id": "206", + "$id": "229", "kind": "method", "name": "token", "serializedName": "token", "type": { - "$id": "207", + "$id": "230", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3119,12 +3490,12 @@ ] }, { - "$id": "208", + "$id": "231", "kind": "header", "name": "foo", "serializedName": "foo", "type": { - "$id": "209", + "$id": "232", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3139,12 +3510,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.foo", "methodParameterSegments": [ { - "$id": "210", + "$id": "233", "kind": "method", "name": "foo", "serializedName": "foo", "type": { - "$id": "211", + "$id": "234", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3162,12 +3533,12 @@ ] }, { - "$id": "212", + "$id": "235", "kind": "query", "name": "bar", "serializedName": "bar", "type": { - "$id": "213", + "$id": "236", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3182,12 +3553,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "214", + "$id": "237", "kind": "method", "name": "bar", "serializedName": "bar", "type": { - "$id": "215", + "$id": "238", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3205,12 +3576,12 @@ ] }, { - "$id": "216", + "$id": "239", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "17" + "$ref": "21" }, "isApiVersion": false, "optional": false, @@ -3221,12 +3592,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.accept", "methodParameterSegments": [ { - "$id": "217", + "$id": "240", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "17" + "$ref": "21" }, "location": "Header", "isApiVersion": false, @@ -3246,7 +3617,7 @@ 200 ], "bodyType": { - "$ref": "91" + "$ref": "102" }, "headers": [], "isErrorResponse": false, @@ -3267,21 +3638,21 @@ }, "parameters": [ { - "$ref": "206" + "$ref": "229" }, { - "$ref": "210" + "$ref": "233" }, { - "$ref": "214" + "$ref": "237" }, { - "$ref": "217" + "$ref": "240" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "nestedItems", @@ -3299,7 +3670,7 @@ ], "continuationToken": { "parameter": { - "$ref": "204" + "$ref": "227" }, "responseSegments": [ "nestedNext", @@ -3313,13 +3684,13 @@ ], "parameters": [ { - "$id": "218", + "$id": "241", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "219", + "$id": "242", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -3330,7 +3701,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "220", + "$id": "243", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -3348,7 +3719,7 @@ "crossLanguageDefinitionId": "Payload.Pageable.ServerDrivenPagination.ContinuationToken", "apiVersions": [], "parent": { - "$ref": "103" + "$ref": "114" }, "isMultiServiceClient": false } @@ -3356,30 +3727,30 @@ "isMultiServiceClient": false }, { - "$id": "221", + "$id": "244", "kind": "client", "name": "PageSize", "namespace": "Payload.Pageable.PageSize", "methods": [ { - "$id": "222", + "$id": "245", "kind": "paging", "name": "listWithoutContinuation", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "223", + "$id": "246", "name": "listWithoutContinuation", "resourceName": "PageSize", "accessibility": "public", "parameters": [ { - "$id": "224", + "$id": "247", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "19" + "$ref": "23" }, "isApiVersion": false, "optional": false, @@ -3390,12 +3761,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.PageSize.listWithoutContinuation.accept", "methodParameterSegments": [ { - "$id": "225", + "$id": "248", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "19" + "$ref": "23" }, "location": "Header", "isApiVersion": false, @@ -3415,7 +3786,7 @@ 200 ], "bodyType": { - "$ref": "53" + "$ref": "57" }, "headers": [], "isErrorResponse": false, @@ -3436,12 +3807,12 @@ }, "parameters": [ { - "$ref": "225" + "$ref": "248" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -3459,24 +3830,24 @@ } }, { - "$id": "226", + "$id": "249", "kind": "paging", "name": "listWithPageSize", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "227", + "$id": "250", "name": "listWithPageSize", "resourceName": "PageSize", "accessibility": "public", "parameters": [ { - "$id": "228", + "$id": "251", "kind": "query", "name": "pageSize", "serializedName": "pageSize", "type": { - "$id": "229", + "$id": "252", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -3491,12 +3862,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "230", + "$id": "253", "kind": "method", "name": "pageSize", "serializedName": "pageSize", "type": { - "$id": "231", + "$id": "254", "kind": "int32", "name": "int32", "crossLanguageDefinitionId": "TypeSpec.int32", @@ -3514,12 +3885,12 @@ ] }, { - "$id": "232", + "$id": "255", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "21" + "$ref": "25" }, "isApiVersion": false, "optional": false, @@ -3530,12 +3901,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.PageSize.listWithPageSize.accept", "methodParameterSegments": [ { - "$id": "233", + "$id": "256", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "21" + "$ref": "25" }, "location": "Header", "isApiVersion": false, @@ -3555,7 +3926,7 @@ 200 ], "bodyType": { - "$ref": "55" + "$ref": "59" }, "headers": [], "isErrorResponse": false, @@ -3576,15 +3947,15 @@ }, "parameters": [ { - "$ref": "230" + "$ref": "253" }, { - "$ref": "233" + "$ref": "256" } ], "response": { "type": { - "$ref": "33" + "$ref": "37" }, "resultSegments": [ "pets" @@ -3606,13 +3977,13 @@ ], "parameters": [ { - "$id": "234", + "$id": "257", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "235", + "$id": "258", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -3623,7 +3994,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "236", + "$id": "259", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -3641,35 +4012,35 @@ "crossLanguageDefinitionId": "Payload.Pageable.PageSize", "apiVersions": [], "parent": { - "$ref": "99" + "$ref": "110" }, "isMultiServiceClient": false }, { - "$id": "237", + "$id": "260", "kind": "client", "name": "XmlPagination", "namespace": "Payload.Pageable.XmlPagination", "methods": [ { - "$id": "238", + "$id": "261", "kind": "paging", "name": "listWithContinuation", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "239", + "$id": "262", "name": "listWithContinuation", "resourceName": "XmlPagination", "accessibility": "public", "parameters": [ { - "$id": "240", + "$id": "263", "kind": "query", "name": "marker", "serializedName": "marker", "type": { - "$id": "241", + "$id": "264", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3684,12 +4055,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "242", + "$id": "265", "kind": "method", "name": "marker", "serializedName": "marker", "type": { - "$id": "243", + "$id": "266", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -3707,12 +4078,12 @@ ] }, { - "$id": "244", + "$id": "267", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "23" + "$ref": "27" }, "isApiVersion": false, "optional": false, @@ -3723,12 +4094,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.XmlPagination.listWithContinuation.accept", "methodParameterSegments": [ { - "$id": "245", + "$id": "268", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "23" + "$ref": "27" }, "location": "Header", "isApiVersion": false, @@ -3748,14 +4119,14 @@ 200 ], "bodyType": { - "$ref": "57" + "$ref": "61" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "25" + "$ref": "29" } } ], @@ -3777,15 +4148,15 @@ }, "parameters": [ { - "$ref": "242" + "$ref": "265" }, { - "$ref": "245" + "$ref": "268" } ], "response": { "type": { - "$ref": "59" + "$ref": "63" }, "resultSegments": [ "Pets" @@ -3801,7 +4172,7 @@ ], "continuationToken": { "parameter": { - "$ref": "240" + "$ref": "263" }, "responseSegments": [ "NextMarker" @@ -3812,24 +4183,24 @@ } }, { - "$id": "246", + "$id": "269", "kind": "paging", "name": "listWithNextLink", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "247", + "$id": "270", "name": "listWithNextLink", "resourceName": "XmlPagination", "accessibility": "public", "parameters": [ { - "$id": "248", + "$id": "271", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "27" + "$ref": "31" }, "isApiVersion": false, "optional": false, @@ -3840,12 +4211,12 @@ "crossLanguageDefinitionId": "Payload.Pageable.XmlPagination.listWithNextLink.accept", "methodParameterSegments": [ { - "$id": "249", + "$id": "272", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "27" + "$ref": "31" }, "location": "Header", "isApiVersion": false, @@ -3865,14 +4236,14 @@ 200 ], "bodyType": { - "$ref": "67" + "$ref": "71" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "29" + "$ref": "33" } } ], @@ -3894,12 +4265,12 @@ }, "parameters": [ { - "$ref": "249" + "$ref": "272" } ], "response": { "type": { - "$ref": "59" + "$ref": "63" }, "resultSegments": [ "Pets" @@ -3925,13 +4296,13 @@ ], "parameters": [ { - "$id": "250", + "$id": "273", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "251", + "$id": "274", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -3942,7 +4313,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "252", + "$id": "275", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -3960,7 +4331,7 @@ "crossLanguageDefinitionId": "Payload.Pageable.XmlPagination", "apiVersions": [], "parent": { - "$ref": "99" + "$ref": "110" }, "isMultiServiceClient": false } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..c6bdafb54b6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "XmlClient": { + "type": "object", + "description": "Configuration for XmlClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/xmlClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "xmlClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.sln deleted file mode 100644 index ffe5c722514..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Payload.Xml", "src\Payload.Xml.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.slnx new file mode 100644 index 00000000000..c276fcff608 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/Payload.Xml.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithArrayOfModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithArrayOfModelValue.cs index e3bb0da6da6..f1cfe2710d1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithArrayOfModelValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithArrayOfModelValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithArrayOfModelValue { protected ModelWithArrayOfModelValue() => throw null; + internal ModelWithArrayOfModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithAttributesValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithAttributesValue.cs index b9e82ff75b4..283cfb4c443 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithAttributesValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithAttributesValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithAttributesValue { protected ModelWithAttributesValue() => throw null; + internal ModelWithAttributesValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithDatetimeValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithDatetimeValue.cs new file mode 100644 index 00000000000..f986467c432 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithDatetimeValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithDatetimeValue + { + protected ModelWithDatetimeValue() => throw null; + + internal ModelWithDatetimeValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithDatetime input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithDatetime input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithDictionaryValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithDictionaryValue.cs index 454fd7f51b9..0c0df435c8a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithDictionaryValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithDictionaryValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithDictionaryValue { protected ModelWithDictionaryValue() => throw null; + internal ModelWithDictionaryValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEmptyArrayValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEmptyArrayValue.cs index f97e5bb89d6..bad31fbc8cc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEmptyArrayValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEmptyArrayValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithEmptyArrayValue { protected ModelWithEmptyArrayValue() => throw null; + internal ModelWithEmptyArrayValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEncodedNamesValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEncodedNamesValue.cs index 1dbf3924200..6b6a02b751f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEncodedNamesValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEncodedNamesValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithEncodedNamesValue { protected ModelWithEncodedNamesValue() => throw null; + internal ModelWithEncodedNamesValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEnumValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEnumValue.cs new file mode 100644 index 00000000000..92f3738b2ec --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithEnumValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithEnumValue + { + protected ModelWithEnumValue() => throw null; + + internal ModelWithEnumValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithEnum input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithEnum input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNamespaceOnPropertiesValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNamespaceOnPropertiesValue.cs new file mode 100644 index 00000000000..879ead4fe76 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNamespaceOnPropertiesValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithNamespaceOnPropertiesValue + { + protected ModelWithNamespaceOnPropertiesValue() => throw null; + + internal ModelWithNamespaceOnPropertiesValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithNamespaceOnProperties input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithNamespaceOnProperties input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNamespaceValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNamespaceValue.cs new file mode 100644 index 00000000000..d643648ed49 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNamespaceValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithNamespaceValue + { + protected ModelWithNamespaceValue() => throw null; + + internal ModelWithNamespaceValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithNamespace input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithNamespace input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNestedModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNestedModelValue.cs new file mode 100644 index 00000000000..d41a92de547 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithNestedModelValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithNestedModelValue + { + protected ModelWithNestedModelValue() => throw null; + + internal ModelWithNestedModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithNestedModel input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithNestedModel input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithOptionalFieldValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithOptionalFieldValue.cs index 3dc923de469..e2bbd2a0fe9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithOptionalFieldValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithOptionalFieldValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithOptionalFieldValue { protected ModelWithOptionalFieldValue() => throw null; + internal ModelWithOptionalFieldValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedArraysValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedArraysValue.cs index c27e948d0ef..f387ba00d47 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedArraysValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedArraysValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithRenamedArraysValue { protected ModelWithRenamedArraysValue() => throw null; + internal ModelWithRenamedArraysValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedAttributeValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedAttributeValue.cs new file mode 100644 index 00000000000..3b8eb46d813 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedAttributeValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedAttributeValue + { + protected ModelWithRenamedAttributeValue() => throw null; + + internal ModelWithRenamedAttributeValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithRenamedAttribute input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithRenamedAttribute input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedFieldsValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedFieldsValue.cs index 976fe8192f3..291ca0113d2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedFieldsValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedFieldsValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithRenamedFieldsValue { protected ModelWithRenamedFieldsValue() => throw null; + internal ModelWithRenamedFieldsValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedNestedModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedNestedModelValue.cs new file mode 100644 index 00000000000..664f8f440cf --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedNestedModelValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedNestedModelValue + { + protected ModelWithRenamedNestedModelValue() => throw null; + + internal ModelWithRenamedNestedModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithRenamedNestedModel input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithRenamedNestedModel input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedPropertyValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedPropertyValue.cs new file mode 100644 index 00000000000..365d16e26d8 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedPropertyValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedPropertyValue + { + protected ModelWithRenamedPropertyValue() => throw null; + + internal ModelWithRenamedPropertyValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithRenamedProperty input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithRenamedProperty input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedUnwrappedModelArrayValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedUnwrappedModelArrayValue.cs new file mode 100644 index 00000000000..28d556f7ca6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedUnwrappedModelArrayValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedUnwrappedModelArrayValue + { + protected ModelWithRenamedUnwrappedModelArrayValue() => throw null; + + internal ModelWithRenamedUnwrappedModelArrayValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithRenamedUnwrappedModelArray input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithRenamedUnwrappedModelArray input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedWrappedAndItemModelArrayValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedWrappedAndItemModelArrayValue.cs new file mode 100644 index 00000000000..5115f8cdb99 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedWrappedAndItemModelArrayValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedWrappedAndItemModelArrayValue + { + protected ModelWithRenamedWrappedAndItemModelArrayValue() => throw null; + + internal ModelWithRenamedWrappedAndItemModelArrayValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithRenamedWrappedAndItemModelArray input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithRenamedWrappedAndItemModelArray input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedWrappedModelArrayValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedWrappedModelArrayValue.cs new file mode 100644 index 00000000000..63eeecf6fc5 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithRenamedWrappedModelArrayValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedWrappedModelArrayValue + { + protected ModelWithRenamedWrappedModelArrayValue() => throw null; + + internal ModelWithRenamedWrappedModelArrayValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithRenamedWrappedModelArray input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithRenamedWrappedModelArray input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithSimpleArraysValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithSimpleArraysValue.cs index 221293cbc43..ef168252ce1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithSimpleArraysValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithSimpleArraysValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithSimpleArraysValue { protected ModelWithSimpleArraysValue() => throw null; + internal ModelWithSimpleArraysValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithTextValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithTextValue.cs index c87bf14cccd..273515d228e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithTextValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithTextValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithTextValue { protected ModelWithTextValue() => throw null; + internal ModelWithTextValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithUnwrappedArrayValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithUnwrappedArrayValue.cs index 74372fd6b84..319bba5194c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithUnwrappedArrayValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithUnwrappedArrayValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelWithUnwrappedArrayValue { protected ModelWithUnwrappedArrayValue() => throw null; + internal ModelWithUnwrappedArrayValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithUnwrappedModelArrayValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithUnwrappedModelArrayValue.cs new file mode 100644 index 00000000000..6de34a4cfd2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithUnwrappedModelArrayValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithUnwrappedModelArrayValue + { + protected ModelWithUnwrappedModelArrayValue() => throw null; + + internal ModelWithUnwrappedModelArrayValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithUnwrappedModelArray input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithUnwrappedModelArray input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithWrappedPrimitiveCustomItemNamesValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithWrappedPrimitiveCustomItemNamesValue.cs new file mode 100644 index 00000000000..324e75cf8ef --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/ModelWithWrappedPrimitiveCustomItemNamesValue.cs @@ -0,0 +1,37 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace Payload.Xml +{ + public partial class ModelWithWrappedPrimitiveCustomItemNamesValue + { + protected ModelWithWrappedPrimitiveCustomItemNamesValue() => throw null; + + internal ModelWithWrappedPrimitiveCustomItemNamesValue(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult Get(RequestOptions options) => throw null; + + public virtual Task GetAsync(RequestOptions options) => throw null; + + public virtual ClientResult Get(CancellationToken cancellationToken = default) => throw null; + + public virtual Task> GetAsync(CancellationToken cancellationToken = default) => throw null; + + public virtual ClientResult Put(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult Put(ModelWithWrappedPrimitiveCustomItemNames input, CancellationToken cancellationToken = default) => throw null; + + public virtual Task PutAsync(ModelWithWrappedPrimitiveCustomItemNames input, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Author.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Author.Serialization.cs new file mode 100644 index 00000000000..259dd9a06b9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Author.Serialization.cs @@ -0,0 +1,24 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class Author : IPersistableModel + { + internal Author() => throw null; + + protected virtual Author PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + Author IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Author.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Author.cs new file mode 100644 index 00000000000..b0fa288fa0e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Author.cs @@ -0,0 +1,17 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class Author + { + public Author(string name) => throw null; + + public string Name + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Book.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Book.Serialization.cs new file mode 100644 index 00000000000..63764dad022 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Book.Serialization.cs @@ -0,0 +1,24 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class Book : IPersistableModel + { + internal Book() => throw null; + + protected virtual Book PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + Book IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Book.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Book.cs new file mode 100644 index 00000000000..e78000e4799 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Book.cs @@ -0,0 +1,17 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class Book + { + public Book(string title) => throw null; + + public string Title + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithDatetime.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithDatetime.Serialization.cs new file mode 100644 index 00000000000..9476977b8eb --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithDatetime.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithDatetime : IPersistableModel + { + internal ModelWithDatetime() => throw null; + + protected virtual ModelWithDatetime PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithDatetime IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithDatetime modelWithDatetime) => throw null; + + public static explicit operator ModelWithDatetime(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithDatetime.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithDatetime.cs new file mode 100644 index 00000000000..f6bfcb035e2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithDatetime.cs @@ -0,0 +1,25 @@ +// + +#nullable disable + +using System; + +namespace Payload.Xml +{ + public partial class ModelWithDatetime + { + public ModelWithDatetime(DateTimeOffset rfc3339, DateTimeOffset rfc7231) => throw null; + + public DateTimeOffset Rfc3339 + { + get => throw null; + set => throw null; + } + + public DateTimeOffset Rfc7231 + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithEnum.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithEnum.Serialization.cs new file mode 100644 index 00000000000..8544bd0f849 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithEnum.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithEnum : IPersistableModel + { + internal ModelWithEnum() => throw null; + + protected virtual ModelWithEnum PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithEnum IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithEnum modelWithEnum) => throw null; + + public static explicit operator ModelWithEnum(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithEnum.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithEnum.cs new file mode 100644 index 00000000000..49f67b403ee --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithEnum.cs @@ -0,0 +1,17 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class ModelWithEnum + { + public ModelWithEnum(Status status) => throw null; + + public Status Status + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespace.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespace.Serialization.cs new file mode 100644 index 00000000000..2868683e87a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespace.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithNamespace : IPersistableModel + { + internal ModelWithNamespace() => throw null; + + protected virtual ModelWithNamespace PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithNamespace IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithNamespace modelWithNamespace) => throw null; + + public static explicit operator ModelWithNamespace(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespace.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespace.cs new file mode 100644 index 00000000000..c366b528de0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespace.cs @@ -0,0 +1,23 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class ModelWithNamespace + { + public ModelWithNamespace(int id, string title) => throw null; + + public int Id + { + get => throw null; + set => throw null; + } + + public string Title + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespaceOnProperties.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespaceOnProperties.Serialization.cs new file mode 100644 index 00000000000..07073e90e6a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespaceOnProperties.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithNamespaceOnProperties : IPersistableModel + { + internal ModelWithNamespaceOnProperties() => throw null; + + protected virtual ModelWithNamespaceOnProperties PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithNamespaceOnProperties IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithNamespaceOnProperties modelWithNamespaceOnProperties) => throw null; + + public static explicit operator ModelWithNamespaceOnProperties(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespaceOnProperties.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespaceOnProperties.cs new file mode 100644 index 00000000000..d9798be6862 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNamespaceOnProperties.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class ModelWithNamespaceOnProperties + { + public ModelWithNamespaceOnProperties(int id, string title, string author) => throw null; + + public int Id + { + get => throw null; + set => throw null; + } + + public string Title + { + get => throw null; + set => throw null; + } + + public string Author + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNestedModel.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNestedModel.Serialization.cs new file mode 100644 index 00000000000..ca33900b650 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNestedModel.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithNestedModel : IPersistableModel + { + internal ModelWithNestedModel() => throw null; + + protected virtual ModelWithNestedModel PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithNestedModel IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithNestedModel modelWithNestedModel) => throw null; + + public static explicit operator ModelWithNestedModel(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNestedModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNestedModel.cs new file mode 100644 index 00000000000..0e3c4723525 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithNestedModel.cs @@ -0,0 +1,17 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class ModelWithNestedModel + { + public ModelWithNestedModel(SimpleModel nested) => throw null; + + public SimpleModel Nested + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedAttribute.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedAttribute.Serialization.cs new file mode 100644 index 00000000000..ed5e2b18e4f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedAttribute.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedAttribute : IPersistableModel + { + internal ModelWithRenamedAttribute() => throw null; + + protected virtual ModelWithRenamedAttribute PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithRenamedAttribute IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithRenamedAttribute modelWithRenamedAttribute) => throw null; + + public static explicit operator ModelWithRenamedAttribute(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedAttribute.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedAttribute.cs new file mode 100644 index 00000000000..ebf468e413d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedAttribute.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class ModelWithRenamedAttribute + { + public ModelWithRenamedAttribute(int id, string title, string author) => throw null; + + public int Id + { + get => throw null; + set => throw null; + } + + public string Title + { + get => throw null; + set => throw null; + } + + public string Author + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedNestedModel.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedNestedModel.Serialization.cs new file mode 100644 index 00000000000..bcf2e97bc59 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedNestedModel.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedNestedModel : IPersistableModel + { + internal ModelWithRenamedNestedModel() => throw null; + + protected virtual ModelWithRenamedNestedModel PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithRenamedNestedModel IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithRenamedNestedModel modelWithRenamedNestedModel) => throw null; + + public static explicit operator ModelWithRenamedNestedModel(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedNestedModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedNestedModel.cs new file mode 100644 index 00000000000..4cb880d2bb0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedNestedModel.cs @@ -0,0 +1,17 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class ModelWithRenamedNestedModel + { + public ModelWithRenamedNestedModel(Author author) => throw null; + + public Author Author + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedProperty.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedProperty.Serialization.cs new file mode 100644 index 00000000000..e01f7a9482e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedProperty.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedProperty : IPersistableModel + { + internal ModelWithRenamedProperty() => throw null; + + protected virtual ModelWithRenamedProperty PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithRenamedProperty IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithRenamedProperty modelWithRenamedProperty) => throw null; + + public static explicit operator ModelWithRenamedProperty(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedProperty.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedProperty.cs new file mode 100644 index 00000000000..f26cd56e51c --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedProperty.cs @@ -0,0 +1,23 @@ +// + +#nullable disable + +namespace Payload.Xml +{ + public partial class ModelWithRenamedProperty + { + public ModelWithRenamedProperty(string title, string author) => throw null; + + public string Title + { + get => throw null; + set => throw null; + } + + public string Author + { + get => throw null; + set => throw null; + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedUnwrappedModelArray.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedUnwrappedModelArray.Serialization.cs new file mode 100644 index 00000000000..f7936acf90a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedUnwrappedModelArray.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedUnwrappedModelArray : IPersistableModel + { + internal ModelWithRenamedUnwrappedModelArray() => throw null; + + protected virtual ModelWithRenamedUnwrappedModelArray PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithRenamedUnwrappedModelArray IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithRenamedUnwrappedModelArray modelWithRenamedUnwrappedModelArray) => throw null; + + public static explicit operator ModelWithRenamedUnwrappedModelArray(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedUnwrappedModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedUnwrappedModelArray.cs new file mode 100644 index 00000000000..15653a1f1c6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedUnwrappedModelArray.cs @@ -0,0 +1,15 @@ +// + +#nullable disable + +using System.Collections.Generic; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedUnwrappedModelArray + { + public ModelWithRenamedUnwrappedModelArray(IEnumerable items) => throw null; + + public IList Items => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedAndItemModelArray.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedAndItemModelArray.Serialization.cs new file mode 100644 index 00000000000..91e5fb31b10 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedAndItemModelArray.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedWrappedAndItemModelArray : IPersistableModel + { + internal ModelWithRenamedWrappedAndItemModelArray() => throw null; + + protected virtual ModelWithRenamedWrappedAndItemModelArray PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithRenamedWrappedAndItemModelArray IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithRenamedWrappedAndItemModelArray modelWithRenamedWrappedAndItemModelArray) => throw null; + + public static explicit operator ModelWithRenamedWrappedAndItemModelArray(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedAndItemModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedAndItemModelArray.cs new file mode 100644 index 00000000000..d0cffdcb68e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedAndItemModelArray.cs @@ -0,0 +1,15 @@ +// + +#nullable disable + +using System.Collections.Generic; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedWrappedAndItemModelArray + { + public ModelWithRenamedWrappedAndItemModelArray(IEnumerable books) => throw null; + + public IList Books => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedModelArray.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedModelArray.Serialization.cs new file mode 100644 index 00000000000..69135a16420 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedModelArray.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedWrappedModelArray : IPersistableModel + { + internal ModelWithRenamedWrappedModelArray() => throw null; + + protected virtual ModelWithRenamedWrappedModelArray PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithRenamedWrappedModelArray IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithRenamedWrappedModelArray modelWithRenamedWrappedModelArray) => throw null; + + public static explicit operator ModelWithRenamedWrappedModelArray(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedModelArray.cs new file mode 100644 index 00000000000..d882d0cd027 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithRenamedWrappedModelArray.cs @@ -0,0 +1,15 @@ +// + +#nullable disable + +using System.Collections.Generic; + +namespace Payload.Xml +{ + public partial class ModelWithRenamedWrappedModelArray + { + public ModelWithRenamedWrappedModelArray(IEnumerable items) => throw null; + + public IList Items => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithUnwrappedModelArray.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithUnwrappedModelArray.Serialization.cs new file mode 100644 index 00000000000..97e092bf180 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithUnwrappedModelArray.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithUnwrappedModelArray : IPersistableModel + { + internal ModelWithUnwrappedModelArray() => throw null; + + protected virtual ModelWithUnwrappedModelArray PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithUnwrappedModelArray IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithUnwrappedModelArray modelWithUnwrappedModelArray) => throw null; + + public static explicit operator ModelWithUnwrappedModelArray(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithUnwrappedModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithUnwrappedModelArray.cs new file mode 100644 index 00000000000..50fcbe6ed4f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithUnwrappedModelArray.cs @@ -0,0 +1,15 @@ +// + +#nullable disable + +using System.Collections.Generic; + +namespace Payload.Xml +{ + public partial class ModelWithUnwrappedModelArray + { + public ModelWithUnwrappedModelArray(IEnumerable items) => throw null; + + public IList Items => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithWrappedPrimitiveCustomItemNames.Serialization.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithWrappedPrimitiveCustomItemNames.Serialization.cs new file mode 100644 index 00000000000..9a050e120fe --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithWrappedPrimitiveCustomItemNames.Serialization.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; + +namespace Payload.Xml +{ + public partial class ModelWithWrappedPrimitiveCustomItemNames : IPersistableModel + { + internal ModelWithWrappedPrimitiveCustomItemNames() => throw null; + + protected virtual ModelWithWrappedPrimitiveCustomItemNames PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options) => throw null; + + protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options) => throw null; + + BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => throw null; + + ModelWithWrappedPrimitiveCustomItemNames IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => throw null; + + string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => throw null; + + public static implicit operator BinaryContent(ModelWithWrappedPrimitiveCustomItemNames modelWithWrappedPrimitiveCustomItemNames) => throw null; + + public static explicit operator ModelWithWrappedPrimitiveCustomItemNames(ClientResult result) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithWrappedPrimitiveCustomItemNames.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithWrappedPrimitiveCustomItemNames.cs new file mode 100644 index 00000000000..4c17ff45b9f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/ModelWithWrappedPrimitiveCustomItemNames.cs @@ -0,0 +1,15 @@ +// + +#nullable disable + +using System.Collections.Generic; + +namespace Payload.Xml +{ + public partial class ModelWithWrappedPrimitiveCustomItemNames + { + public ModelWithWrappedPrimitiveCustomItemNames(IEnumerable tags) => throw null; + + public IList Tags => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/PayloadXmlContext.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/PayloadXmlContext.cs index 937155417cc..7c86a43f73b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/PayloadXmlContext.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/PayloadXmlContext.cs @@ -6,17 +6,32 @@ namespace Payload.Xml { + [ModelReaderWriterBuildable(typeof(Author))] + [ModelReaderWriterBuildable(typeof(Book))] [ModelReaderWriterBuildable(typeof(ModelWithArrayOfModel))] [ModelReaderWriterBuildable(typeof(ModelWithAttributes))] + [ModelReaderWriterBuildable(typeof(ModelWithDatetime))] [ModelReaderWriterBuildable(typeof(ModelWithDictionary))] [ModelReaderWriterBuildable(typeof(ModelWithEmptyArray))] [ModelReaderWriterBuildable(typeof(ModelWithEncodedNames))] + [ModelReaderWriterBuildable(typeof(ModelWithEnum))] + [ModelReaderWriterBuildable(typeof(ModelWithNamespace))] + [ModelReaderWriterBuildable(typeof(ModelWithNamespaceOnProperties))] + [ModelReaderWriterBuildable(typeof(ModelWithNestedModel))] [ModelReaderWriterBuildable(typeof(ModelWithOptionalField))] [ModelReaderWriterBuildable(typeof(ModelWithRenamedArrays))] + [ModelReaderWriterBuildable(typeof(ModelWithRenamedAttribute))] [ModelReaderWriterBuildable(typeof(ModelWithRenamedFields))] + [ModelReaderWriterBuildable(typeof(ModelWithRenamedNestedModel))] + [ModelReaderWriterBuildable(typeof(ModelWithRenamedProperty))] + [ModelReaderWriterBuildable(typeof(ModelWithRenamedUnwrappedModelArray))] + [ModelReaderWriterBuildable(typeof(ModelWithRenamedWrappedAndItemModelArray))] + [ModelReaderWriterBuildable(typeof(ModelWithRenamedWrappedModelArray))] [ModelReaderWriterBuildable(typeof(ModelWithSimpleArrays))] [ModelReaderWriterBuildable(typeof(ModelWithText))] [ModelReaderWriterBuildable(typeof(ModelWithUnwrappedArray))] + [ModelReaderWriterBuildable(typeof(ModelWithUnwrappedModelArray))] + [ModelReaderWriterBuildable(typeof(ModelWithWrappedPrimitiveCustomItemNames))] [ModelReaderWriterBuildable(typeof(SimpleModel))] public partial class PayloadXmlContext : ModelReaderWriterContext { diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Status.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Status.cs new file mode 100644 index 00000000000..e4ba0db6c4e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/Models/Status.cs @@ -0,0 +1,38 @@ +// + +#nullable disable + +using System; +using System.ComponentModel; + +namespace Payload.Xml +{ + public readonly partial struct Status : IEquatable + { + public Status(string value) => throw null; + + public static Status Pending => throw null; + + public static Status Success => throw null; + + public static Status Error => throw null; + + public static bool operator ==(Status left, Status right) => throw null; + + public static bool operator !=(Status left, Status right) => throw null; + + public static implicit operator Status(string value) => throw null; + + public static implicit operator Status?(string value) => throw null; + + [EditorBrowsable(EditorBrowsableState.Never)] + public override bool Equals(object obj) => throw null; + + public bool Equals(Status other) => throw null; + + [EditorBrowsable(EditorBrowsableState.Never)] + public override int GetHashCode() => throw null; + + public override string ToString() => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/PayloadXmlModelFactory.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/PayloadXmlModelFactory.cs index 9604fe0a6e9..41c63322f3b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/PayloadXmlModelFactory.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/PayloadXmlModelFactory.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.Collections.Generic; namespace Payload.Xml @@ -10,26 +11,56 @@ public static partial class PayloadXmlModelFactory { public static SimpleModel SimpleModel(string name = default, int age = default) => throw null; - public static ModelWithSimpleArrays ModelWithSimpleArrays(IEnumerable colors = default, IEnumerable counts = default) => throw null; + public static ModelWithRenamedProperty ModelWithRenamedProperty(string title = default, string author = default) => throw null; - public static ModelWithArrayOfModel ModelWithArrayOfModel(IEnumerable items = default) => throw null; + public static ModelWithRenamedFields ModelWithRenamedFields(SimpleModel inputData = default, SimpleModel outputData = default) => throw null; - public static ModelWithOptionalField ModelWithOptionalField(string item = default, int? value = default) => throw null; + public static ModelWithNestedModel ModelWithNestedModel(SimpleModel nested = default) => throw null; - public static ModelWithAttributes ModelWithAttributes(int id1 = default, string id2 = default, bool enabled = default) => throw null; + public static ModelWithRenamedNestedModel ModelWithRenamedNestedModel(Author author = default) => throw null; + + public static Author Author(string name = default) => throw null; + + public static ModelWithSimpleArrays ModelWithSimpleArrays(IEnumerable colors = default, IEnumerable counts = default) => throw null; public static ModelWithUnwrappedArray ModelWithUnwrappedArray(IEnumerable colors = default, IEnumerable counts = default) => throw null; public static ModelWithRenamedArrays ModelWithRenamedArrays(IEnumerable colors = default, IEnumerable counts = default) => throw null; - public static ModelWithRenamedFields ModelWithRenamedFields(SimpleModel inputData = default, SimpleModel outputData = default) => throw null; + public static ModelWithWrappedPrimitiveCustomItemNames ModelWithWrappedPrimitiveCustomItemNames(IEnumerable tags = default) => throw null; - public static ModelWithEmptyArray ModelWithEmptyArray(IEnumerable items = default) => throw null; + public static ModelWithArrayOfModel ModelWithArrayOfModel(IEnumerable items = default) => throw null; + + public static ModelWithUnwrappedModelArray ModelWithUnwrappedModelArray(IEnumerable items = default) => throw null; + + public static ModelWithRenamedWrappedModelArray ModelWithRenamedWrappedModelArray(IEnumerable items = default) => throw null; + + public static ModelWithRenamedUnwrappedModelArray ModelWithRenamedUnwrappedModelArray(IEnumerable items = default) => throw null; + + public static ModelWithRenamedWrappedAndItemModelArray ModelWithRenamedWrappedAndItemModelArray(IEnumerable books = default) => throw null; + + public static Book Book(string title = default) => throw null; + + public static ModelWithAttributes ModelWithAttributes(int id1 = default, string id2 = default, bool enabled = default) => throw null; + + public static ModelWithRenamedAttribute ModelWithRenamedAttribute(int id = default, string title = default, string author = default) => throw null; + + public static ModelWithNamespace ModelWithNamespace(int id = default, string title = default) => throw null; + + public static ModelWithNamespaceOnProperties ModelWithNamespaceOnProperties(int id = default, string title = default, string author = default) => throw null; public static ModelWithText ModelWithText(string language = default, string content = default) => throw null; + public static ModelWithOptionalField ModelWithOptionalField(string item = default, int? value = default) => throw null; + + public static ModelWithEmptyArray ModelWithEmptyArray(IEnumerable items = default) => throw null; + public static ModelWithDictionary ModelWithDictionary(IDictionary metadata = default) => throw null; public static ModelWithEncodedNames ModelWithEncodedNames(SimpleModel modelData = default, IEnumerable colors = default) => throw null; + + public static ModelWithEnum ModelWithEnum(Status status = default) => throw null; + + public static ModelWithDatetime ModelWithDatetime(DateTimeOffset rfc3339 = default, DateTimeOffset rfc7231 = default) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/SimpleModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/SimpleModelValue.cs index 6a020d4c531..0ca41673678 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/SimpleModelValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/SimpleModelValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SimpleModelValue { protected SimpleModelValue() => throw null; + internal SimpleModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClient.cs index 8b674b49e90..84b5a3eacf2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace Payload.Xml { @@ -11,34 +12,65 @@ public partial class XmlClient { public XmlClient() : this(new Uri("http://localhost:3000"), new XmlClientOptions()) => throw null; - public XmlClient(Uri endpoint, XmlClientOptions options) => throw null; + internal XmlClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, XmlClientOptions options) => throw null; + + public XmlClient(Uri endpoint, XmlClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public XmlClient(XmlClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; public virtual SimpleModelValue GetSimpleModelValueClient() => throw null; - public virtual ModelWithSimpleArraysValue GetModelWithSimpleArraysValueClient() => throw null; + public virtual ModelWithRenamedPropertyValue GetModelWithRenamedPropertyValueClient() => throw null; - public virtual ModelWithArrayOfModelValue GetModelWithArrayOfModelValueClient() => throw null; + public virtual ModelWithRenamedFieldsValue GetModelWithRenamedFieldsValueClient() => throw null; - public virtual ModelWithOptionalFieldValue GetModelWithOptionalFieldValueClient() => throw null; + public virtual ModelWithNestedModelValue GetModelWithNestedModelValueClient() => throw null; - public virtual ModelWithAttributesValue GetModelWithAttributesValueClient() => throw null; + public virtual ModelWithRenamedNestedModelValue GetModelWithRenamedNestedModelValueClient() => throw null; + + public virtual ModelWithSimpleArraysValue GetModelWithSimpleArraysValueClient() => throw null; public virtual ModelWithUnwrappedArrayValue GetModelWithUnwrappedArrayValueClient() => throw null; public virtual ModelWithRenamedArraysValue GetModelWithRenamedArraysValueClient() => throw null; - public virtual ModelWithRenamedFieldsValue GetModelWithRenamedFieldsValueClient() => throw null; + public virtual ModelWithWrappedPrimitiveCustomItemNamesValue GetModelWithWrappedPrimitiveCustomItemNamesValueClient() => throw null; - public virtual ModelWithEmptyArrayValue GetModelWithEmptyArrayValueClient() => throw null; + public virtual ModelWithArrayOfModelValue GetModelWithArrayOfModelValueClient() => throw null; + + public virtual ModelWithUnwrappedModelArrayValue GetModelWithUnwrappedModelArrayValueClient() => throw null; + + public virtual ModelWithRenamedWrappedModelArrayValue GetModelWithRenamedWrappedModelArrayValueClient() => throw null; + + public virtual ModelWithRenamedUnwrappedModelArrayValue GetModelWithRenamedUnwrappedModelArrayValueClient() => throw null; + + public virtual ModelWithRenamedWrappedAndItemModelArrayValue GetModelWithRenamedWrappedAndItemModelArrayValueClient() => throw null; + + public virtual ModelWithAttributesValue GetModelWithAttributesValueClient() => throw null; + + public virtual ModelWithRenamedAttributeValue GetModelWithRenamedAttributeValueClient() => throw null; + + public virtual ModelWithNamespaceValue GetModelWithNamespaceValueClient() => throw null; + + public virtual ModelWithNamespaceOnPropertiesValue GetModelWithNamespaceOnPropertiesValueClient() => throw null; public virtual ModelWithTextValue GetModelWithTextValueClient() => throw null; + public virtual ModelWithOptionalFieldValue GetModelWithOptionalFieldValueClient() => throw null; + + public virtual ModelWithEmptyArrayValue GetModelWithEmptyArrayValueClient() => throw null; + public virtual ModelWithDictionaryValue GetModelWithDictionaryValueClient() => throw null; public virtual ModelWithEncodedNamesValue GetModelWithEncodedNamesValueClient() => throw null; + public virtual ModelWithEnumValue GetModelWithEnumValueClient() => throw null; + + public virtual ModelWithDatetimeValue GetModelWithDatetimeValueClient() => throw null; + public virtual XmlErrorValue GetXmlErrorValueClient() => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClientOptions.cs index 467bebf98b1..8969f41eb08 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Payload.Xml { public partial class XmlClientOptions : ClientPipelineOptions { + public XmlClientOptions() => throw null; + + [Experimental("SCME0002")] + internal XmlClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClientSettings.cs new file mode 100644 index 00000000000..57bc9f1bbc8 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Payload.Xml +{ + [Experimental("SCME0002")] + public partial class XmlClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public XmlClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlErrorValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlErrorValue.cs index 13069ff4ebb..cf37b300967 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlErrorValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Generated/XmlErrorValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class XmlErrorValue { protected XmlErrorValue() => throw null; + internal XmlErrorValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj index b0c5ee7edcd..84362a38a77 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/src/Payload.Xml.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/tspCodeModel.json index 828e857852a..5742dc41388 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/payload/xml/tspCodeModel.json @@ -1,16 +1,80 @@ { "name": "Payload.Xml", "apiVersions": [], - "enums": [], - "constants": [ + "enums": [ { "$id": "1", + "kind": "enum", + "name": "Status", + "crossLanguageDefinitionId": "Payload.Xml.Status", + "valueType": { + "$id": "2", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "values": [ + { + "$id": "3", + "kind": "enumvalue", + "name": "pending", + "value": "pending", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "doc": "Pending status.", + "decorators": [] + }, + { + "$id": "4", + "kind": "enumvalue", + "name": "success", + "value": "success", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "doc": "Success status.", + "decorators": [] + }, + { + "$id": "5", + "kind": "enumvalue", + "name": "error", + "value": "error", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "doc": "Error status.", + "decorators": [] + } + ], + "namespace": "Payload.Xml", + "doc": "Status values for the model with enum.", + "isFixed": false, + "isFlags": false, + "usage": "Input,Output,Xml", + "decorators": [] + } + ], + "constants": [ + { + "$id": "6", "kind": "constant", "name": "getContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "2", + "$id": "7", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -20,13 +84,13 @@ "decorators": [] }, { - "$id": "3", + "$id": "8", "kind": "constant", - "name": "XmlErrorContentType", + "name": "GetResponseContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "4", + "$id": "9", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -36,13 +100,13 @@ "decorators": [] }, { - "$id": "5", + "$id": "10", "kind": "constant", - "name": "XmlErrorContentType1", + "name": "GetResponseContentType1", "namespace": "", "usage": "None", "valueType": { - "$id": "6", + "$id": "11", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -52,13 +116,13 @@ "decorators": [] }, { - "$id": "7", + "$id": "12", "kind": "constant", - "name": "XmlErrorContentType2", + "name": "GetResponseContentType2", "namespace": "", "usage": "None", "valueType": { - "$id": "8", + "$id": "13", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -68,13 +132,13 @@ "decorators": [] }, { - "$id": "9", + "$id": "14", "kind": "constant", "name": "getContentType1", "namespace": "", "usage": "None", "valueType": { - "$id": "10", + "$id": "15", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -84,13 +148,13 @@ "decorators": [] }, { - "$id": "11", + "$id": "16", "kind": "constant", - "name": "XmlErrorContentType3", + "name": "GetResponseContentType3", "namespace": "", "usage": "None", "valueType": { - "$id": "12", + "$id": "17", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -100,13 +164,13 @@ "decorators": [] }, { - "$id": "13", + "$id": "18", "kind": "constant", - "name": "XmlErrorContentType4", + "name": "GetResponseContentType4", "namespace": "", "usage": "None", "valueType": { - "$id": "14", + "$id": "19", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -116,13 +180,13 @@ "decorators": [] }, { - "$id": "15", + "$id": "20", "kind": "constant", - "name": "XmlErrorContentType5", + "name": "GetResponseContentType5", "namespace": "", "usage": "None", "valueType": { - "$id": "16", + "$id": "21", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -132,13 +196,13 @@ "decorators": [] }, { - "$id": "17", + "$id": "22", "kind": "constant", "name": "getContentType2", "namespace": "", "usage": "None", "valueType": { - "$id": "18", + "$id": "23", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -148,13 +212,13 @@ "decorators": [] }, { - "$id": "19", + "$id": "24", "kind": "constant", - "name": "XmlErrorContentType6", + "name": "GetResponseContentType6", "namespace": "", "usage": "None", "valueType": { - "$id": "20", + "$id": "25", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -164,13 +228,13 @@ "decorators": [] }, { - "$id": "21", + "$id": "26", "kind": "constant", - "name": "XmlErrorContentType7", + "name": "GetResponseContentType7", "namespace": "", "usage": "None", "valueType": { - "$id": "22", + "$id": "27", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -180,13 +244,13 @@ "decorators": [] }, { - "$id": "23", + "$id": "28", "kind": "constant", - "name": "XmlErrorContentType8", + "name": "GetResponseContentType8", "namespace": "", "usage": "None", "valueType": { - "$id": "24", + "$id": "29", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -196,13 +260,13 @@ "decorators": [] }, { - "$id": "25", + "$id": "30", "kind": "constant", "name": "getContentType3", "namespace": "", "usage": "None", "valueType": { - "$id": "26", + "$id": "31", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -212,13 +276,13 @@ "decorators": [] }, { - "$id": "27", + "$id": "32", "kind": "constant", - "name": "XmlErrorContentType9", + "name": "GetResponseContentType9", "namespace": "", "usage": "None", "valueType": { - "$id": "28", + "$id": "33", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -228,13 +292,13 @@ "decorators": [] }, { - "$id": "29", + "$id": "34", "kind": "constant", - "name": "XmlErrorContentType10", + "name": "GetResponseContentType10", "namespace": "", "usage": "None", "valueType": { - "$id": "30", + "$id": "35", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -244,13 +308,13 @@ "decorators": [] }, { - "$id": "31", + "$id": "36", "kind": "constant", - "name": "XmlErrorContentType11", + "name": "GetResponseContentType11", "namespace": "", "usage": "None", "valueType": { - "$id": "32", + "$id": "37", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -260,13 +324,13 @@ "decorators": [] }, { - "$id": "33", + "$id": "38", "kind": "constant", "name": "getContentType4", "namespace": "", "usage": "None", "valueType": { - "$id": "34", + "$id": "39", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -276,13 +340,13 @@ "decorators": [] }, { - "$id": "35", + "$id": "40", "kind": "constant", - "name": "XmlErrorContentType12", + "name": "GetResponseContentType12", "namespace": "", "usage": "None", "valueType": { - "$id": "36", + "$id": "41", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -292,13 +356,13 @@ "decorators": [] }, { - "$id": "37", + "$id": "42", "kind": "constant", - "name": "XmlErrorContentType13", + "name": "GetResponseContentType13", "namespace": "", "usage": "None", "valueType": { - "$id": "38", + "$id": "43", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -308,13 +372,13 @@ "decorators": [] }, { - "$id": "39", + "$id": "44", "kind": "constant", - "name": "XmlErrorContentType14", + "name": "GetResponseContentType14", "namespace": "", "usage": "None", "valueType": { - "$id": "40", + "$id": "45", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -324,13 +388,13 @@ "decorators": [] }, { - "$id": "41", + "$id": "46", "kind": "constant", "name": "getContentType5", "namespace": "", "usage": "None", "valueType": { - "$id": "42", + "$id": "47", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -340,13 +404,13 @@ "decorators": [] }, { - "$id": "43", + "$id": "48", "kind": "constant", - "name": "XmlErrorContentType15", + "name": "GetResponseContentType15", "namespace": "", "usage": "None", "valueType": { - "$id": "44", + "$id": "49", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -356,13 +420,13 @@ "decorators": [] }, { - "$id": "45", + "$id": "50", "kind": "constant", - "name": "XmlErrorContentType16", + "name": "GetResponseContentType16", "namespace": "", "usage": "None", "valueType": { - "$id": "46", + "$id": "51", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -372,13 +436,13 @@ "decorators": [] }, { - "$id": "47", + "$id": "52", "kind": "constant", - "name": "XmlErrorContentType17", + "name": "GetResponseContentType17", "namespace": "", "usage": "None", "valueType": { - "$id": "48", + "$id": "53", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -388,13 +452,13 @@ "decorators": [] }, { - "$id": "49", + "$id": "54", "kind": "constant", "name": "getContentType6", "namespace": "", "usage": "None", "valueType": { - "$id": "50", + "$id": "55", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -404,13 +468,13 @@ "decorators": [] }, { - "$id": "51", + "$id": "56", "kind": "constant", - "name": "XmlErrorContentType18", + "name": "GetResponseContentType18", "namespace": "", "usage": "None", "valueType": { - "$id": "52", + "$id": "57", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -420,13 +484,13 @@ "decorators": [] }, { - "$id": "53", + "$id": "58", "kind": "constant", - "name": "XmlErrorContentType19", + "name": "GetResponseContentType19", "namespace": "", "usage": "None", "valueType": { - "$id": "54", + "$id": "59", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -436,13 +500,13 @@ "decorators": [] }, { - "$id": "55", + "$id": "60", "kind": "constant", - "name": "XmlErrorContentType20", + "name": "GetResponseContentType20", "namespace": "", "usage": "None", "valueType": { - "$id": "56", + "$id": "61", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -452,13 +516,13 @@ "decorators": [] }, { - "$id": "57", + "$id": "62", "kind": "constant", "name": "getContentType7", "namespace": "", "usage": "None", "valueType": { - "$id": "58", + "$id": "63", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -468,13 +532,13 @@ "decorators": [] }, { - "$id": "59", + "$id": "64", "kind": "constant", - "name": "XmlErrorContentType21", + "name": "GetResponseContentType21", "namespace": "", "usage": "None", "valueType": { - "$id": "60", + "$id": "65", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -484,13 +548,13 @@ "decorators": [] }, { - "$id": "61", + "$id": "66", "kind": "constant", - "name": "XmlErrorContentType22", + "name": "GetResponseContentType22", "namespace": "", "usage": "None", "valueType": { - "$id": "62", + "$id": "67", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -500,13 +564,13 @@ "decorators": [] }, { - "$id": "63", + "$id": "68", "kind": "constant", - "name": "XmlErrorContentType23", + "name": "GetResponseContentType23", "namespace": "", "usage": "None", "valueType": { - "$id": "64", + "$id": "69", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -516,13 +580,13 @@ "decorators": [] }, { - "$id": "65", + "$id": "70", "kind": "constant", "name": "getContentType8", "namespace": "", "usage": "None", "valueType": { - "$id": "66", + "$id": "71", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -532,13 +596,13 @@ "decorators": [] }, { - "$id": "67", + "$id": "72", "kind": "constant", - "name": "XmlErrorContentType24", + "name": "GetResponseContentType24", "namespace": "", "usage": "None", "valueType": { - "$id": "68", + "$id": "73", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -548,13 +612,13 @@ "decorators": [] }, { - "$id": "69", + "$id": "74", "kind": "constant", - "name": "XmlErrorContentType25", + "name": "GetResponseContentType25", "namespace": "", "usage": "None", "valueType": { - "$id": "70", + "$id": "75", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -564,13 +628,13 @@ "decorators": [] }, { - "$id": "71", + "$id": "76", "kind": "constant", - "name": "XmlErrorContentType26", + "name": "GetResponseContentType26", "namespace": "", "usage": "None", "valueType": { - "$id": "72", + "$id": "77", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -580,13 +644,13 @@ "decorators": [] }, { - "$id": "73", + "$id": "78", "kind": "constant", "name": "getContentType9", "namespace": "", "usage": "None", "valueType": { - "$id": "74", + "$id": "79", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -596,13 +660,13 @@ "decorators": [] }, { - "$id": "75", + "$id": "80", "kind": "constant", - "name": "XmlErrorContentType27", + "name": "GetResponseContentType27", "namespace": "", "usage": "None", "valueType": { - "$id": "76", + "$id": "81", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -612,13 +676,13 @@ "decorators": [] }, { - "$id": "77", + "$id": "82", "kind": "constant", - "name": "XmlErrorContentType28", + "name": "GetResponseContentType28", "namespace": "", "usage": "None", "valueType": { - "$id": "78", + "$id": "83", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -628,13 +692,13 @@ "decorators": [] }, { - "$id": "79", + "$id": "84", "kind": "constant", - "name": "XmlErrorContentType29", + "name": "GetResponseContentType29", "namespace": "", "usage": "None", "valueType": { - "$id": "80", + "$id": "85", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -644,13 +708,13 @@ "decorators": [] }, { - "$id": "81", + "$id": "86", "kind": "constant", "name": "getContentType10", "namespace": "", "usage": "None", "valueType": { - "$id": "82", + "$id": "87", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -660,13 +724,13 @@ "decorators": [] }, { - "$id": "83", + "$id": "88", "kind": "constant", - "name": "XmlErrorContentType30", + "name": "GetResponseContentType30", "namespace": "", "usage": "None", "valueType": { - "$id": "84", + "$id": "89", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -676,13 +740,13 @@ "decorators": [] }, { - "$id": "85", + "$id": "90", "kind": "constant", - "name": "XmlErrorContentType31", + "name": "GetResponseContentType31", "namespace": "", "usage": "None", "valueType": { - "$id": "86", + "$id": "91", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -692,13 +756,13 @@ "decorators": [] }, { - "$id": "87", + "$id": "92", "kind": "constant", - "name": "XmlErrorContentType32", + "name": "GetResponseContentType32", "namespace": "", "usage": "None", "valueType": { - "$id": "88", + "$id": "93", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -708,13 +772,13 @@ "decorators": [] }, { - "$id": "89", + "$id": "94", "kind": "constant", "name": "getContentType11", "namespace": "", "usage": "None", "valueType": { - "$id": "90", + "$id": "95", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -724,13 +788,13 @@ "decorators": [] }, { - "$id": "91", + "$id": "96", "kind": "constant", - "name": "XmlErrorContentType33", + "name": "GetResponseContentType33", "namespace": "", "usage": "None", "valueType": { - "$id": "92", + "$id": "97", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -740,13 +804,13 @@ "decorators": [] }, { - "$id": "93", + "$id": "98", "kind": "constant", - "name": "XmlErrorContentType34", + "name": "GetResponseContentType34", "namespace": "", "usage": "None", "valueType": { - "$id": "94", + "$id": "99", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -756,13 +820,13 @@ "decorators": [] }, { - "$id": "95", + "$id": "100", "kind": "constant", - "name": "XmlErrorContentType35", + "name": "GetResponseContentType35", "namespace": "", "usage": "None", "valueType": { - "$id": "96", + "$id": "101", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -772,13 +836,13 @@ "decorators": [] }, { - "$id": "97", + "$id": "102", "kind": "constant", "name": "getContentType12", "namespace": "", "usage": "None", "valueType": { - "$id": "98", + "$id": "103", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -788,13 +852,13 @@ "decorators": [] }, { - "$id": "99", + "$id": "104", "kind": "constant", - "name": "XmlErrorContentType36", + "name": "GetResponseContentType36", "namespace": "", "usage": "None", "valueType": { - "$id": "100", + "$id": "105", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -802,1042 +866,6468 @@ }, "value": "application/xml", "decorators": [] - } - ], - "models": [ + }, { - "$id": "101", - "kind": "model", - "name": "SimpleModel", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.SimpleModel", - "usage": "Input,Output,Xml", - "doc": "Contains fields of primitive types.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "SimpleModel", - "attribute": false, - "unwrapped": false - } + "$id": "106", + "kind": "constant", + "name": "GetResponseContentType37", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "107", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "102", - "kind": "property", - "name": "name", - "serializedName": "name", - "type": { - "$id": "103", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.SimpleModel.name", - "serializationOptions": { - "xml": { - "name": "name", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - }, - { - "$id": "104", - "kind": "property", - "name": "age", - "serializedName": "age", - "type": { - "$id": "105", - "kind": "int32", - "name": "int32", - "crossLanguageDefinitionId": "TypeSpec.int32", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.SimpleModel.age", - "serializationOptions": { - "xml": { - "name": "age", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "106", - "kind": "model", - "name": "ModelWithSimpleArrays", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArrays", - "usage": "Input,Output,Xml", - "doc": "Contains fields of arrays of primitive types.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithSimpleArrays", - "attribute": false, - "unwrapped": false - } + "$id": "108", + "kind": "constant", + "name": "GetResponseContentType38", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "109", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "107", - "kind": "property", - "name": "colors", - "serializedName": "colors", - "type": { - "$id": "108", - "kind": "array", - "name": "Array", - "valueType": { - "$id": "109", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "crossLanguageDefinitionId": "TypeSpec.Array", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArrays.colors", - "serializationOptions": { - "xml": { - "name": "colors", - "attribute": false, - "unwrapped": false, - "itemsName": "string" - } - }, - "isHttpMetadata": false - }, - { - "$id": "110", - "kind": "property", - "name": "counts", - "serializedName": "counts", - "type": { - "$id": "111", - "kind": "array", - "name": "Array1", - "valueType": { - "$id": "112", - "kind": "int32", - "name": "int32", - "crossLanguageDefinitionId": "TypeSpec.int32", - "decorators": [] - }, - "crossLanguageDefinitionId": "TypeSpec.Array", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArrays.counts", - "serializationOptions": { - "xml": { - "name": "counts", - "attribute": false, - "unwrapped": false, - "itemsName": "int32" - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "113", - "kind": "model", - "name": "ModelWithArrayOfModel", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModel", - "usage": "Input,Output,Xml", - "doc": "Contains an array of models.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithArrayOfModel", - "attribute": false, - "unwrapped": false - } + "$id": "110", + "kind": "constant", + "name": "getContentType13", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "111", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "114", - "kind": "property", - "name": "items", - "serializedName": "items", - "type": { - "$id": "115", - "kind": "array", - "name": "ArraySimpleModel", - "valueType": { - "$ref": "101" - }, - "crossLanguageDefinitionId": "TypeSpec.Array", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModel.items", - "serializationOptions": { - "xml": { - "name": "items", - "attribute": false, - "unwrapped": false, - "itemsName": "SimpleModel" - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "116", - "kind": "model", - "name": "ModelWithOptionalField", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalField", - "usage": "Input,Output,Xml", - "doc": "Contains an optional field.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithOptionalField", - "attribute": false, - "unwrapped": false - } + "$id": "112", + "kind": "constant", + "name": "GetResponseContentType39", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "113", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "117", - "kind": "property", - "name": "item", - "serializedName": "item", - "type": { - "$id": "118", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalField.item", - "serializationOptions": { - "xml": { - "name": "item", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - }, - { - "$id": "119", - "kind": "property", - "name": "value", - "serializedName": "value", - "type": { - "$id": "120", - "kind": "int32", - "name": "int32", - "crossLanguageDefinitionId": "TypeSpec.int32", - "decorators": [] - }, - "optional": true, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalField.value", - "serializationOptions": { - "xml": { - "name": "value", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "121", - "kind": "model", - "name": "ModelWithAttributes", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes", - "usage": "Input,Output,Xml", - "doc": "Contains fields that are XML attributes.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithAttributes", - "attribute": false, - "unwrapped": false - } + "$id": "114", + "kind": "constant", + "name": "GetResponseContentType40", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "115", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "122", - "kind": "property", - "name": "id1", - "serializedName": "id1", - "type": { - "$id": "123", - "kind": "int32", - "name": "int32", - "crossLanguageDefinitionId": "TypeSpec.int32", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@attribute", - "arguments": {} - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes.id1", - "serializationOptions": { - "xml": { - "name": "id1", - "attribute": true, - "unwrapped": false - } - }, - "isHttpMetadata": false - }, - { - "$id": "124", - "kind": "property", - "name": "id2", - "serializedName": "id2", - "type": { - "$id": "125", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@attribute", - "arguments": {} - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes.id2", - "serializationOptions": { - "xml": { - "name": "id2", - "attribute": true, - "unwrapped": false - } - }, - "isHttpMetadata": false - }, - { - "$id": "126", - "kind": "property", - "name": "enabled", - "serializedName": "enabled", - "type": { - "$id": "127", - "kind": "boolean", - "name": "boolean", - "crossLanguageDefinitionId": "TypeSpec.boolean", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes.enabled", - "serializationOptions": { - "xml": { - "name": "enabled", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "128", - "kind": "model", - "name": "ModelWithUnwrappedArray", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArray", - "usage": "Input,Output,Xml", - "doc": "Contains fields of wrapped and unwrapped arrays of primitive types.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithUnwrappedArray", - "attribute": false, - "unwrapped": false - } + "$id": "116", + "kind": "constant", + "name": "GetResponseContentType41", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "117", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "129", - "kind": "property", - "name": "colors", - "serializedName": "colors", - "type": { - "$ref": "108" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@unwrapped", - "arguments": {} - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArray.colors", - "serializationOptions": { - "xml": { - "name": "colors", - "attribute": false, - "unwrapped": true, - "itemsName": "colors" - } - }, - "isHttpMetadata": false - }, - { - "$id": "130", - "kind": "property", - "name": "counts", - "serializedName": "counts", - "type": { - "$ref": "111" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArray.counts", - "serializationOptions": { - "xml": { - "name": "counts", - "attribute": false, - "unwrapped": false, - "itemsName": "int32" - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "131", - "kind": "model", - "name": "ModelWithRenamedArrays", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArrays", - "usage": "Input,Output,Xml", - "doc": "Contains fields of wrapped and unwrapped arrays of primitive types that have different XML representations.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithRenamedArrays", - "attribute": false, - "unwrapped": false - } + "$id": "118", + "kind": "constant", + "name": "getContentType14", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "119", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "132", - "kind": "property", - "name": "colors", - "serializedName": "Colors", - "type": { - "$ref": "108" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@unwrapped", - "arguments": {} - }, - { - "name": "TypeSpec.Xml.@name", - "arguments": { - "name": "Colors" - } - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArrays.colors", - "serializationOptions": { - "xml": { - "name": "Colors", - "attribute": false, - "unwrapped": true, - "itemsName": "Colors" - } - }, - "isHttpMetadata": false - }, - { - "$id": "133", - "kind": "property", - "name": "counts", - "serializedName": "Counts", - "type": { - "$ref": "111" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@name", - "arguments": { - "name": "Counts" - } - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArrays.counts", - "serializationOptions": { - "xml": { - "name": "Counts", - "attribute": false, - "unwrapped": false, - "itemsName": "int32" - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "134", - "kind": "model", - "name": "ModelWithRenamedFields", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFields", - "usage": "Input,Output,Xml", - "doc": "Contains fields of the same type that have different XML representation.", - "decorators": [ - { - "name": "TypeSpec.Xml.@name", - "arguments": { - "name": "ModelWithRenamedFieldsSrc" - } - } - ], - "serializationOptions": { - "xml": { - "name": "ModelWithRenamedFieldsSrc", - "attribute": false, - "unwrapped": false - } + "$id": "120", + "kind": "constant", + "name": "GetResponseContentType42", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "121", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "135", - "kind": "property", - "name": "inputData", - "serializedName": "InputData", - "type": { - "$ref": "101" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@name", - "arguments": { - "name": "InputData" - } - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFields.inputData", - "serializationOptions": { - "xml": { - "name": "InputData", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - }, - { - "$id": "136", - "kind": "property", - "name": "outputData", - "serializedName": "OutputData", - "type": { - "$ref": "101" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@name", - "arguments": { - "name": "OutputData" - } - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFields.outputData", - "serializationOptions": { - "xml": { - "name": "OutputData", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "137", - "kind": "model", - "name": "ModelWithEmptyArray", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArray", - "usage": "Input,Output,Xml", - "doc": "Contains an array of models that's supposed to be sent/received as an empty XML element.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithEmptyArray", - "attribute": false, - "unwrapped": false - } + "$id": "122", + "kind": "constant", + "name": "GetResponseContentType43", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "123", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "138", - "kind": "property", - "name": "items", - "serializedName": "items", - "type": { - "$ref": "115" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArray.items", - "serializationOptions": { - "xml": { - "name": "items", - "attribute": false, - "unwrapped": false, - "itemsName": "SimpleModel" - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "139", - "kind": "model", - "name": "ModelWithText", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithText", - "usage": "Input,Output,Xml", - "doc": "Contains an attribute and text.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithText", - "attribute": false, - "unwrapped": false - } + "$id": "124", + "kind": "constant", + "name": "GetResponseContentType44", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "125", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "140", - "kind": "property", - "name": "language", - "serializedName": "language", - "type": { - "$id": "141", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@attribute", - "arguments": {} - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithText.language", - "serializationOptions": { - "xml": { - "name": "language", - "attribute": true, - "unwrapped": false - } - }, - "isHttpMetadata": false - }, - { - "$id": "142", - "kind": "property", - "name": "content", - "serializedName": "content", - "type": { - "$id": "143", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [ - { - "name": "TypeSpec.Xml.@unwrapped", - "arguments": {} - } - ], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithText.content", - "serializationOptions": { - "xml": { - "name": "content", - "attribute": false, - "unwrapped": true - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] + }, + { + "$id": "126", + "kind": "constant", + "name": "getContentType15", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "127", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "128", + "kind": "constant", + "name": "GetResponseContentType45", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "129", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "130", + "kind": "constant", + "name": "GetResponseContentType46", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "131", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "132", + "kind": "constant", + "name": "GetResponseContentType47", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "133", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "134", + "kind": "constant", + "name": "getContentType16", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "135", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "136", + "kind": "constant", + "name": "GetResponseContentType48", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "137", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "138", + "kind": "constant", + "name": "GetResponseContentType49", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "139", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "140", + "kind": "constant", + "name": "GetResponseContentType50", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "141", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "142", + "kind": "constant", + "name": "getContentType17", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "143", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] }, { "$id": "144", - "kind": "model", - "name": "ModelWithDictionary", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionary", - "usage": "Input,Output,Xml", - "doc": "Contains a dictionary of key value pairs.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithDictionary", - "attribute": false, - "unwrapped": false - } + "kind": "constant", + "name": "GetResponseContentType51", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "145", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "145", - "kind": "property", - "name": "metadata", - "serializedName": "metadata", - "type": { - "$id": "146", - "kind": "dict", - "keyType": { - "$id": "147", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "valueType": { - "$id": "148", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionary.metadata", - "serializationOptions": { - "xml": { - "name": "metadata", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - } - ] + "value": "application/xml", + "decorators": [] }, { - "$id": "149", - "kind": "model", - "name": "ModelWithEncodedNames", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNames", - "usage": "Input,Output,Xml", - "doc": "Uses encodedName instead of Xml.Name which is functionally equivalent.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "ModelWithEncodedNamesSrc", - "attribute": false, - "unwrapped": false - } + "$id": "146", + "kind": "constant", + "name": "GetResponseContentType52", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "147", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] }, - "properties": [ - { - "$id": "150", - "kind": "property", - "name": "modelData", - "serializedName": "SimpleModelData", - "type": { - "$ref": "101" - }, - "optional": false, - "readOnly": false, - "discriminator": false, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "148", + "kind": "constant", + "name": "GetResponseContentType53", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "149", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "150", + "kind": "constant", + "name": "getContentType18", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "151", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "152", + "kind": "constant", + "name": "GetResponseContentType54", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "153", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "154", + "kind": "constant", + "name": "GetResponseContentType55", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "155", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "156", + "kind": "constant", + "name": "GetResponseContentType56", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "157", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "158", + "kind": "constant", + "name": "getContentType19", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "159", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "160", + "kind": "constant", + "name": "GetResponseContentType57", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "161", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "162", + "kind": "constant", + "name": "GetResponseContentType58", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "163", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "164", + "kind": "constant", + "name": "GetResponseContentType59", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "165", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "166", + "kind": "constant", + "name": "getContentType20", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "167", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "168", + "kind": "constant", + "name": "GetResponseContentType60", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "169", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "170", + "kind": "constant", + "name": "GetResponseContentType61", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "171", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "172", + "kind": "constant", + "name": "GetResponseContentType62", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "173", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "174", + "kind": "constant", + "name": "getContentType21", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "175", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "176", + "kind": "constant", + "name": "GetResponseContentType63", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "177", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "178", + "kind": "constant", + "name": "GetResponseContentType64", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "179", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "180", + "kind": "constant", + "name": "GetResponseContentType65", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "181", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "182", + "kind": "constant", + "name": "getContentType22", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "183", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "184", + "kind": "constant", + "name": "GetResponseContentType66", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "185", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "186", + "kind": "constant", + "name": "GetResponseContentType67", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "187", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "188", + "kind": "constant", + "name": "GetResponseContentType68", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "189", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "190", + "kind": "constant", + "name": "getContentType23", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "191", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "192", + "kind": "constant", + "name": "GetResponseContentType69", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "193", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "194", + "kind": "constant", + "name": "GetResponseContentType70", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "195", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "196", + "kind": "constant", + "name": "GetResponseContentType71", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "197", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "198", + "kind": "constant", + "name": "getContentType24", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "199", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "200", + "kind": "constant", + "name": "GetResponseContentType72", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "201", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "202", + "kind": "constant", + "name": "GetResponseContentType73", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "203", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "204", + "kind": "constant", + "name": "GetResponseContentType74", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "205", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "206", + "kind": "constant", + "name": "getContentType25", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "207", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + }, + { + "$id": "208", + "kind": "constant", + "name": "GetResponseContentType75", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "209", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/xml", + "decorators": [] + } + ], + "models": [ + { + "$id": "210", + "kind": "model", + "name": "SimpleModel", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.SimpleModel", + "usage": "Input,Output,Xml", + "doc": "§1.1 — Contains fields of primitive types.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "SimpleModel", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "211", + "kind": "property", + "name": "name", + "serializedName": "name", + "type": { + "$id": "212", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.SimpleModel.name", + "serializationOptions": { + "xml": { + "name": "name", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "213", + "kind": "property", + "name": "age", + "serializedName": "age", + "type": { + "$id": "214", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.SimpleModel.age", + "serializationOptions": { + "xml": { + "name": "age", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "215", + "kind": "model", + "name": "ModelWithRenamedProperty", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedProperty", + "usage": "Input,Output,Xml", + "doc": "§1.2 — Contains a scalar property with a custom XML name.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedProperty", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "216", + "kind": "property", + "name": "title", + "serializedName": "renamedTitle", + "type": { + "$id": "217", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "renamedTitle" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedProperty.title", + "serializationOptions": { + "xml": { + "name": "renamedTitle", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "218", + "kind": "property", + "name": "author", + "serializedName": "author", + "type": { + "$id": "219", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedProperty.author", + "serializationOptions": { + "xml": { + "name": "author", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "220", + "kind": "model", + "name": "ModelWithRenamedFields", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFields", + "usage": "Input,Output,Xml", + "doc": "§1.3, §2.3 — Contains fields of the same type that have different XML representation.", + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "ModelWithRenamedFieldsSrc" + } + } + ], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedFieldsSrc", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "221", + "kind": "property", + "name": "inputData", + "serializedName": "InputData", + "type": { + "$ref": "210" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "InputData" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFields.inputData", + "serializationOptions": { + "xml": { + "name": "InputData", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "222", + "kind": "property", + "name": "outputData", + "serializedName": "OutputData", + "type": { + "$ref": "210" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "OutputData" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFields.outputData", + "serializationOptions": { + "xml": { + "name": "OutputData", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "223", + "kind": "model", + "name": "ModelWithNestedModel", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModel", + "usage": "Input,Output,Xml", + "doc": "§2.1 — Contains a property that references another model.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithNestedModel", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "224", + "kind": "property", + "name": "nested", + "serializedName": "nested", + "type": { + "$ref": "210" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModel.nested", + "serializationOptions": { + "xml": { + "name": "nested", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "225", + "kind": "model", + "name": "ModelWithRenamedNestedModel", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModel", + "usage": "Input,Output,Xml", + "doc": "§2.2 — Contains a property whose type has", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedNestedModel", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "226", + "kind": "property", + "name": "author", + "serializedName": "author", + "type": { + "$id": "227", + "kind": "model", + "name": "Author", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.Author", + "usage": "Input,Output,Xml", + "doc": "Author model with a custom XML name.", + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "XmlAuthor" + } + } + ], + "serializationOptions": { + "xml": { + "name": "XmlAuthor", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "228", + "kind": "property", + "name": "name", + "serializedName": "name", + "type": { + "$id": "229", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.Author.name", + "serializationOptions": { + "xml": { + "name": "name", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModel.author", + "serializationOptions": { + "xml": { + "name": "author", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$ref": "227" + }, + { + "$id": "230", + "kind": "model", + "name": "ModelWithSimpleArrays", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArrays", + "usage": "Input,Output,Xml", + "doc": "§3.1 — Contains fields of arrays of primitive types.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithSimpleArrays", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "231", + "kind": "property", + "name": "colors", + "serializedName": "colors", + "type": { + "$id": "232", + "kind": "array", + "name": "Array", + "valueType": { + "$id": "233", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "crossLanguageDefinitionId": "TypeSpec.Array", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArrays.colors", + "serializationOptions": { + "xml": { + "name": "colors", + "attribute": false, + "unwrapped": false, + "itemsName": "string" + } + }, + "isHttpMetadata": false + }, + { + "$id": "234", + "kind": "property", + "name": "counts", + "serializedName": "counts", + "type": { + "$id": "235", + "kind": "array", + "name": "Array1", + "valueType": { + "$id": "236", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "crossLanguageDefinitionId": "TypeSpec.Array", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArrays.counts", + "serializationOptions": { + "xml": { + "name": "counts", + "attribute": false, + "unwrapped": false, + "itemsName": "int32" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "237", + "kind": "model", + "name": "ModelWithUnwrappedArray", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArray", + "usage": "Input,Output,Xml", + "doc": "§3.2 — Contains fields of wrapped and unwrapped arrays of primitive types.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithUnwrappedArray", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "238", + "kind": "property", + "name": "colors", + "serializedName": "colors", + "type": { + "$ref": "232" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@unwrapped", + "arguments": {} + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArray.colors", + "serializationOptions": { + "xml": { + "name": "colors", + "attribute": false, + "unwrapped": true, + "itemsName": "colors" + } + }, + "isHttpMetadata": false + }, + { + "$id": "239", + "kind": "property", + "name": "counts", + "serializedName": "counts", + "type": { + "$ref": "235" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArray.counts", + "serializationOptions": { + "xml": { + "name": "counts", + "attribute": false, + "unwrapped": false, + "itemsName": "int32" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "240", + "kind": "model", + "name": "ModelWithRenamedArrays", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArrays", + "usage": "Input,Output,Xml", + "doc": "§3.3, §3.4 — Contains fields of wrapped and unwrapped arrays of primitive types that have different XML representations.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedArrays", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "241", + "kind": "property", + "name": "colors", + "serializedName": "Colors", + "type": { + "$ref": "232" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@unwrapped", + "arguments": {} + }, + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "Colors" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArrays.colors", + "serializationOptions": { + "xml": { + "name": "Colors", + "attribute": false, + "unwrapped": true, + "itemsName": "Colors" + } + }, + "isHttpMetadata": false + }, + { + "$id": "242", + "kind": "property", + "name": "counts", + "serializedName": "Counts", + "type": { + "$ref": "235" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "Counts" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArrays.counts", + "serializationOptions": { + "xml": { + "name": "Counts", + "attribute": false, + "unwrapped": false, + "itemsName": "int32" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "243", + "kind": "model", + "name": "ModelWithWrappedPrimitiveCustomItemNames", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNames", + "usage": "Input,Output,Xml", + "doc": "§3.5 — Contains a wrapped primitive array with custom wrapper and item names.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithWrappedPrimitiveCustomItemNames", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "244", + "kind": "property", + "name": "tags", + "serializedName": "ItemsTags", + "type": { + "$id": "245", + "kind": "array", + "name": "Array2", + "valueType": { + "$id": "246", + "kind": "string", + "name": "tag", + "crossLanguageDefinitionId": "Payload.Xml.tag", + "baseType": { + "$id": "247", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "ItemName" + } + } + ] + }, + "crossLanguageDefinitionId": "TypeSpec.Array", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "ItemsTags" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNames.tags", + "serializationOptions": { + "xml": { + "name": "ItemsTags", + "attribute": false, + "unwrapped": false, + "itemsName": "ItemName" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "248", + "kind": "model", + "name": "ModelWithArrayOfModel", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModel", + "usage": "Input,Output,Xml", + "doc": "§4.1 — Contains an array of models.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithArrayOfModel", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "249", + "kind": "property", + "name": "items", + "serializedName": "items", + "type": { + "$id": "250", + "kind": "array", + "name": "ArraySimpleModel", + "valueType": { + "$ref": "210" + }, + "crossLanguageDefinitionId": "TypeSpec.Array", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModel.items", + "serializationOptions": { + "xml": { + "name": "items", + "attribute": false, + "unwrapped": false, + "itemsName": "SimpleModel" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "251", + "kind": "model", + "name": "ModelWithUnwrappedModelArray", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArray", + "usage": "Input,Output,Xml", + "doc": "§4.2 — Contains an unwrapped array of models.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithUnwrappedModelArray", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "252", + "kind": "property", + "name": "items", + "serializedName": "items", + "type": { + "$ref": "250" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@unwrapped", + "arguments": {} + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArray.items", + "serializationOptions": { + "xml": { + "name": "items", + "attribute": false, + "unwrapped": true, + "itemsName": "items" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "253", + "kind": "model", + "name": "ModelWithRenamedWrappedModelArray", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArray", + "usage": "Input,Output,Xml", + "doc": "§4.3 — Contains a wrapped array of models with a custom wrapper name.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedWrappedModelArray", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "254", + "kind": "property", + "name": "items", + "serializedName": "AllItems", + "type": { + "$ref": "250" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "AllItems" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArray.items", + "serializationOptions": { + "xml": { + "name": "AllItems", + "attribute": false, + "unwrapped": false, + "itemsName": "SimpleModel" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "255", + "kind": "model", + "name": "ModelWithRenamedUnwrappedModelArray", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArray", + "usage": "Input,Output,Xml", + "doc": "§4.4 — Contains an unwrapped array of models with a custom item name.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedUnwrappedModelArray", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "256", + "kind": "property", + "name": "items", + "serializedName": "ModelItem", + "type": { + "$ref": "250" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@unwrapped", + "arguments": {} + }, + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "ModelItem" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArray.items", + "serializationOptions": { + "xml": { + "name": "ModelItem", + "attribute": false, + "unwrapped": true, + "itemsName": "ModelItem" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "257", + "kind": "model", + "name": "ModelWithRenamedWrappedAndItemModelArray", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArray", + "usage": "Input,Output,Xml", + "doc": "§4.5 — Contains a wrapped array of models with custom wrapper and item names.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedWrappedAndItemModelArray", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "258", + "kind": "property", + "name": "books", + "serializedName": "AllBooks", + "type": { + "$id": "259", + "kind": "array", + "name": "ArrayBook", + "valueType": { + "$id": "260", + "kind": "model", + "name": "Book", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.Book", + "usage": "Input,Output,Xml", + "doc": "Book model with a custom XML name.", + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "XmlBook" + } + } + ], + "serializationOptions": { + "xml": { + "name": "XmlBook", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "261", + "kind": "property", + "name": "title", + "serializedName": "title", + "type": { + "$id": "262", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.Book.title", + "serializationOptions": { + "xml": { + "name": "title", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + "crossLanguageDefinitionId": "TypeSpec.Array", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "AllBooks" + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArray.books", + "serializationOptions": { + "xml": { + "name": "AllBooks", + "attribute": false, + "unwrapped": false, + "itemsName": "XmlBook" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$ref": "260" + }, + { + "$id": "263", + "kind": "model", + "name": "ModelWithAttributes", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes", + "usage": "Input,Output,Xml", + "doc": "§5.1 — Contains fields that are XML attributes.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithAttributes", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "264", + "kind": "property", + "name": "id1", + "serializedName": "id1", + "type": { + "$id": "265", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@attribute", + "arguments": {} + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes.id1", + "serializationOptions": { + "xml": { + "name": "id1", + "attribute": true, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "266", + "kind": "property", + "name": "id2", + "serializedName": "id2", + "type": { + "$id": "267", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@attribute", + "arguments": {} + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes.id2", + "serializationOptions": { + "xml": { + "name": "id2", + "attribute": true, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "268", + "kind": "property", + "name": "enabled", + "serializedName": "enabled", + "type": { + "$id": "269", + "kind": "boolean", + "name": "boolean", + "crossLanguageDefinitionId": "TypeSpec.boolean", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributes.enabled", + "serializationOptions": { + "xml": { + "name": "enabled", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "270", + "kind": "model", + "name": "ModelWithRenamedAttribute", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttribute", + "usage": "Input,Output,Xml", + "doc": "§5.2 — Contains a renamed XML attribute.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithRenamedAttribute", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "271", + "kind": "property", + "name": "id", + "serializedName": "xml-id", + "type": { + "$id": "272", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@name", + "arguments": { + "name": "xml-id" + } + }, + { + "name": "TypeSpec.Xml.@attribute", + "arguments": {} + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttribute.id", + "serializationOptions": { + "xml": { + "name": "xml-id", + "attribute": true, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "273", + "kind": "property", + "name": "title", + "serializedName": "title", + "type": { + "$id": "274", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttribute.title", + "serializationOptions": { + "xml": { + "name": "title", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "275", + "kind": "property", + "name": "author", + "serializedName": "author", + "type": { + "$id": "276", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttribute.author", + "serializationOptions": { + "xml": { + "name": "author", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "277", + "kind": "model", + "name": "ModelWithNamespace", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespace", + "usage": "Input,Output,Xml", + "doc": "§6.1, §7.1 — Contains fields with XML namespace on the model.", + "decorators": [ + { + "name": "TypeSpec.Xml.@ns", + "arguments": { + "ns": { + "$id": "278", + "kind": "enumvalue", + "decorators": [], + "name": "smp", + "value": "http://example.com/schema", + "enumType": { + "$id": "279", + "kind": "enum", + "decorators": [ + { + "name": "TypeSpec.Xml.@nsDeclarations", + "arguments": {} + } + ], + "name": "Namespaces", + "isGeneratedName": false, + "namespace": "Payload.Xml", + "valueType": { + "$id": "280", + "kind": "string", + "decorators": [], + "doc": "A sequence of textual characters.", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "values": [ + { + "$id": "281", + "kind": "enumvalue", + "decorators": [], + "name": "smp", + "value": "http://example.com/schema", + "enumType": { + "$ref": "279" + }, + "valueType": { + "$ref": "280" + }, + "crossLanguageDefinitionId": "Payload.Xml.Namespaces.smp" + }, + { + "$id": "282", + "kind": "enumvalue", + "decorators": [], + "name": "ns2", + "value": "http://example.com/ns2", + "enumType": { + "$ref": "279" + }, + "valueType": { + "$ref": "280" + }, + "crossLanguageDefinitionId": "Payload.Xml.Namespaces.ns2" + } + ], + "isFixed": true, + "isFlags": false, + "usage": "None", + "access": "public", + "crossLanguageDefinitionId": "Payload.Xml.Namespaces", + "apiVersions": [], + "isUnionAsEnum": false, + "__accessSet": true + }, + "valueType": { + "$ref": "280" + }, + "crossLanguageDefinitionId": "Payload.Xml.Namespaces.smp" + } + } + } + ], + "serializationOptions": { + "xml": { + "name": "ModelWithNamespace", + "attribute": false, + "ns": { + "namespace": "http://example.com/schema", + "prefix": "smp" + }, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "283", + "kind": "property", + "name": "id", + "serializedName": "id", + "type": { + "$id": "284", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespace.id", + "serializationOptions": { + "xml": { + "name": "id", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "285", + "kind": "property", + "name": "title", + "serializedName": "title", + "type": { + "$id": "286", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespace.title", + "serializationOptions": { + "xml": { + "name": "title", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "287", + "kind": "model", + "name": "ModelWithNamespaceOnProperties", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnProperties", + "usage": "Input,Output,Xml", + "doc": "§6.2, §7.2 — Contains fields with different XML namespaces on individual properties.", + "decorators": [ + { + "name": "TypeSpec.Xml.@ns", + "arguments": { + "ns": { + "$id": "288", + "kind": "enumvalue", + "decorators": [], + "name": "smp", + "value": "http://example.com/schema", + "enumType": { + "$ref": "279" + }, + "valueType": { + "$ref": "280" + }, + "crossLanguageDefinitionId": "Payload.Xml.Namespaces.smp" + } + } + } + ], + "serializationOptions": { + "xml": { + "name": "ModelWithNamespaceOnProperties", + "attribute": false, + "ns": { + "namespace": "http://example.com/schema", + "prefix": "smp" + }, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "289", + "kind": "property", + "name": "id", + "serializedName": "id", + "type": { + "$id": "290", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnProperties.id", + "serializationOptions": { + "xml": { + "name": "id", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "291", + "kind": "property", + "name": "title", + "serializedName": "title", + "type": { + "$id": "292", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@ns", + "arguments": { + "ns": { + "$id": "293", + "kind": "enumvalue", + "decorators": [], + "name": "smp", + "value": "http://example.com/schema", + "enumType": { + "$ref": "279" + }, + "valueType": { + "$ref": "280" + }, + "crossLanguageDefinitionId": "Payload.Xml.Namespaces.smp" + } + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnProperties.title", + "serializationOptions": { + "xml": { + "name": "title", + "attribute": false, + "ns": { + "namespace": "http://example.com/schema", + "prefix": "smp" + }, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "294", + "kind": "property", + "name": "author", + "serializedName": "author", + "type": { + "$id": "295", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@ns", + "arguments": { + "ns": { + "$id": "296", + "kind": "enumvalue", + "decorators": [], + "name": "ns2", + "value": "http://example.com/ns2", + "enumType": { + "$ref": "279" + }, + "valueType": { + "$ref": "280" + }, + "crossLanguageDefinitionId": "Payload.Xml.Namespaces.ns2" + } + } + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnProperties.author", + "serializationOptions": { + "xml": { + "name": "author", + "attribute": false, + "ns": { + "namespace": "http://example.com/ns2", + "prefix": "ns2" + }, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "297", + "kind": "model", + "name": "ModelWithText", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithText", + "usage": "Input,Output,Xml", + "doc": "§8.1 — Contains an attribute and text.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithText", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "298", + "kind": "property", + "name": "language", + "serializedName": "language", + "type": { + "$id": "299", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@attribute", + "arguments": {} + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithText.language", + "serializationOptions": { + "xml": { + "name": "language", + "attribute": true, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "300", + "kind": "property", + "name": "content", + "serializedName": "content", + "type": { + "$id": "301", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [ + { + "name": "TypeSpec.Xml.@unwrapped", + "arguments": {} + } + ], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithText.content", + "serializationOptions": { + "xml": { + "name": "content", + "attribute": false, + "unwrapped": true + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "302", + "kind": "model", + "name": "ModelWithOptionalField", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalField", + "usage": "Input,Output,Xml", + "doc": "Contains an optional field.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithOptionalField", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "303", + "kind": "property", + "name": "item", + "serializedName": "item", + "type": { + "$id": "304", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalField.item", + "serializationOptions": { + "xml": { + "name": "item", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "305", + "kind": "property", + "name": "value", + "serializedName": "value", + "type": { + "$id": "306", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "optional": true, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalField.value", + "serializationOptions": { + "xml": { + "name": "value", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "307", + "kind": "model", + "name": "ModelWithEmptyArray", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArray", + "usage": "Input,Output,Xml", + "doc": "Contains an array of models that's supposed to be sent/received as an empty XML element.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithEmptyArray", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "308", + "kind": "property", + "name": "items", + "serializedName": "items", + "type": { + "$ref": "250" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArray.items", + "serializationOptions": { + "xml": { + "name": "items", + "attribute": false, + "unwrapped": false, + "itemsName": "SimpleModel" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "309", + "kind": "model", + "name": "ModelWithDictionary", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionary", + "usage": "Input,Output,Xml", + "doc": "Contains a dictionary of key value pairs.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithDictionary", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "310", + "kind": "property", + "name": "metadata", + "serializedName": "metadata", + "type": { + "$id": "311", + "kind": "dict", + "keyType": { + "$id": "312", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "valueType": { + "$id": "313", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionary.metadata", + "serializationOptions": { + "xml": { + "name": "metadata", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "314", + "kind": "model", + "name": "ModelWithEncodedNames", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNames", + "usage": "Input,Output,Xml", + "doc": "Uses encodedName instead of Xml.Name which is functionally equivalent.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithEncodedNamesSrc", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "315", + "kind": "property", + "name": "modelData", + "serializedName": "SimpleModelData", + "type": { + "$ref": "210" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNames.modelData", + "serializationOptions": { + "xml": { + "name": "SimpleModelData", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "316", + "kind": "property", + "name": "colors", + "serializedName": "PossibleColors", + "type": { + "$ref": "232" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNames.colors", + "serializationOptions": { + "xml": { + "name": "PossibleColors", + "attribute": false, + "unwrapped": false, + "itemsName": "string" + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "317", + "kind": "model", + "name": "ModelWithEnum", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnum", + "usage": "Input,Output,Xml", + "doc": "Contains a single property with an enum value.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithEnum", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "318", + "kind": "property", + "name": "status", + "serializedName": "status", + "type": { + "$ref": "1" + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnum.status", + "serializationOptions": { + "xml": { + "name": "status", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "319", + "kind": "model", + "name": "ModelWithDatetime", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetime", + "usage": "Input,Output,Xml", + "doc": "Contains datetime properties with different encodings.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "ModelWithDatetime", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "320", + "kind": "property", + "name": "rfc3339", + "serializedName": "rfc3339", + "doc": "DateTime value with rfc3339 encoding.", + "type": { + "$id": "321", + "kind": "utcDateTime", + "name": "utcDateTime", + "encode": "rfc3339", + "wireType": { + "$id": "322", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "crossLanguageDefinitionId": "TypeSpec.utcDateTime", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetime.rfc3339", + "serializationOptions": { + "xml": { + "name": "rfc3339", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "323", + "kind": "property", + "name": "rfc7231", + "serializedName": "rfc7231", + "doc": "DateTime value with rfc7231 encoding.", + "type": { + "$id": "324", + "kind": "utcDateTime", + "name": "utcDateTime", + "encode": "rfc7231", + "wireType": { + "$id": "325", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "crossLanguageDefinitionId": "TypeSpec.utcDateTime", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetime.rfc7231", + "serializationOptions": { + "xml": { + "name": "rfc7231", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + }, + { + "$id": "326", + "kind": "model", + "name": "XmlErrorBody", + "namespace": "Payload.Xml", + "crossLanguageDefinitionId": "Payload.Xml.XmlErrorBody", + "usage": "Output,Xml", + "doc": "The body of an XML error response.", + "decorators": [], + "serializationOptions": { + "xml": { + "name": "XmlErrorBody", + "attribute": false, + "unwrapped": false + } + }, + "properties": [ + { + "$id": "327", + "kind": "property", + "name": "message", + "serializedName": "message", + "type": { + "$id": "328", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, + "flatten": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.XmlErrorBody.message", + "serializationOptions": { + "xml": { + "name": "message", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + }, + { + "$id": "329", + "kind": "property", + "name": "code", + "serializedName": "code", + "type": { + "$id": "330", + "kind": "int32", + "name": "int32", + "crossLanguageDefinitionId": "TypeSpec.int32", + "decorators": [] + }, + "optional": false, + "readOnly": false, + "discriminator": false, "flatten": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNames.modelData", - "serializationOptions": { - "xml": { - "name": "SimpleModelData", - "attribute": false, - "unwrapped": false + "crossLanguageDefinitionId": "Payload.Xml.XmlErrorBody.code", + "serializationOptions": { + "xml": { + "name": "code", + "attribute": false, + "unwrapped": false + } + }, + "isHttpMetadata": false + } + ] + } + ], + "clients": [ + { + "$id": "331", + "kind": "client", + "name": "XmlClient", + "namespace": "Payload.Xml", + "doc": "Sends and receives bodies in XML format.", + "methods": [], + "parameters": [ + { + "$id": "332", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "333", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "334", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.endpoint" + } + ], + "initializedBy": 1, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml", + "apiVersions": [], + "children": [ + { + "$id": "335", + "kind": "client", + "name": "SimpleModelValue", + "namespace": "Payload.Xml", + "doc": "§1.1 — Operations for the SimpleModel type.", + "methods": [ + { + "$id": "336", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "337", + "name": "get", + "resourceName": "SimpleModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "338", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "6" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get.accept", + "methodParameterSegments": [ + { + "$id": "339", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "6" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "210" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "8" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/simpleModel", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "339" + } + ], + "response": { + "type": { + "$ref": "210" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get" + }, + { + "$id": "340", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "341", + "name": "put", + "resourceName": "SimpleModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "342", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "10" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "343", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "10" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "344", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "210" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.input", + "methodParameterSegments": [ + { + "$id": "345", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "210" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/simpleModel", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "343" + }, + { + "$ref": "345" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put" + } + ], + "parameters": [ + { + "$id": "346", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "347", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "348", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "349", + "kind": "client", + "name": "ModelWithRenamedPropertyValue", + "namespace": "Payload.Xml", + "doc": "§1.2 — Operations for the ModelWithRenamedProperty type.", + "methods": [ + { + "$id": "350", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "351", + "name": "get", + "resourceName": "ModelWithRenamedPropertyValue", + "accessibility": "public", + "parameters": [ + { + "$id": "352", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "14" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.get.accept", + "methodParameterSegments": [ + { + "$id": "353", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "14" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "215" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "16" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedProperty", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "353" + } + ], + "response": { + "type": { + "$ref": "215" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.get" + }, + { + "$id": "354", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "355", + "name": "put", + "resourceName": "ModelWithRenamedPropertyValue", + "accessibility": "public", + "parameters": [ + { + "$id": "356", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "18" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "357", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "18" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "358", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "215" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.put.input", + "methodParameterSegments": [ + { + "$id": "359", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "215" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedProperty", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "357" + }, + { + "$ref": "359" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.put" + } + ], + "parameters": [ + { + "$id": "360", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "361", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "362", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedPropertyValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "363", + "kind": "client", + "name": "ModelWithRenamedFieldsValue", + "namespace": "Payload.Xml", + "doc": "§1.3, §2.3 — Operations for the ModelWithRenamedFields type.", + "methods": [ + { + "$id": "364", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "365", + "name": "get", + "resourceName": "ModelWithRenamedFieldsValue", + "accessibility": "public", + "parameters": [ + { + "$id": "366", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "22" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get.accept", + "methodParameterSegments": [ + { + "$id": "367", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "22" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "220" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "24" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedFields", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "367" + } + ], + "response": { + "type": { + "$ref": "220" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get" + }, + { + "$id": "368", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "369", + "name": "put", + "resourceName": "ModelWithRenamedFieldsValue", + "accessibility": "public", + "parameters": [ + { + "$id": "370", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "26" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "371", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "26" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "372", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "220" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.input", + "methodParameterSegments": [ + { + "$id": "373", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "220" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedFields", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "371" + }, + { + "$ref": "373" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put" + } + ], + "parameters": [ + { + "$id": "374", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "375", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "376", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "377", + "kind": "client", + "name": "ModelWithNestedModelValue", + "namespace": "Payload.Xml", + "doc": "§2.1 — Operations for the ModelWithNestedModel type.", + "methods": [ + { + "$id": "378", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "379", + "name": "get", + "resourceName": "ModelWithNestedModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "380", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "30" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.get.accept", + "methodParameterSegments": [ + { + "$id": "381", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "30" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "223" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "32" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithNestedModel", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "381" + } + ], + "response": { + "type": { + "$ref": "223" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.get" + }, + { + "$id": "382", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "383", + "name": "put", + "resourceName": "ModelWithNestedModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "384", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "34" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "385", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "34" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "386", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "223" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.put.input", + "methodParameterSegments": [ + { + "$id": "387", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "223" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithNestedModel", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "385" + }, + { + "$ref": "387" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.put" + } + ], + "parameters": [ + { + "$id": "388", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "389", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "390", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNestedModelValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "391", + "kind": "client", + "name": "ModelWithRenamedNestedModelValue", + "namespace": "Payload.Xml", + "doc": "§2.2 — Operations for the ModelWithRenamedNestedModel type.", + "methods": [ + { + "$id": "392", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "393", + "name": "get", + "resourceName": "ModelWithRenamedNestedModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "394", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "38" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.get.accept", + "methodParameterSegments": [ + { + "$id": "395", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "38" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "225" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "40" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedNestedModel", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "395" + } + ], + "response": { + "type": { + "$ref": "225" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.get" + }, + { + "$id": "396", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "397", + "name": "put", + "resourceName": "ModelWithRenamedNestedModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "398", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "42" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "399", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "42" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "400", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "225" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.put.input", + "methodParameterSegments": [ + { + "$id": "401", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "225" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedNestedModel", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "399" + }, + { + "$ref": "401" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.put" + } + ], + "parameters": [ + { + "$id": "402", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "403", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "404", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedNestedModelValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "405", + "kind": "client", + "name": "ModelWithSimpleArraysValue", + "namespace": "Payload.Xml", + "doc": "§3.1 — Operations for the ModelWithSimpleArrays type.", + "methods": [ + { + "$id": "406", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "407", + "name": "get", + "resourceName": "ModelWithSimpleArraysValue", + "accessibility": "public", + "parameters": [ + { + "$id": "408", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "46" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get.accept", + "methodParameterSegments": [ + { + "$id": "409", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "46" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "230" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "48" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithSimpleArrays", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "409" + } + ], + "response": { + "type": { + "$ref": "230" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get" + }, + { + "$id": "410", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "411", + "name": "put", + "resourceName": "ModelWithSimpleArraysValue", + "accessibility": "public", + "parameters": [ + { + "$id": "412", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "50" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "413", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "50" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "414", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "230" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.input", + "methodParameterSegments": [ + { + "$id": "415", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "230" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithSimpleArrays", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "413" + }, + { + "$ref": "415" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put" + } + ], + "parameters": [ + { + "$id": "416", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "417", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "418", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "419", + "kind": "client", + "name": "ModelWithUnwrappedArrayValue", + "namespace": "Payload.Xml", + "doc": "§3.2 — Operations for the ModelWithUnwrappedArray type.", + "methods": [ + { + "$id": "420", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "421", + "name": "get", + "resourceName": "ModelWithUnwrappedArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "422", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "54" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get.accept", + "methodParameterSegments": [ + { + "$id": "423", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "54" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "237" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "56" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithUnwrappedArray", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "423" + } + ], + "response": { + "type": { + "$ref": "237" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get" + }, + { + "$id": "424", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "425", + "name": "put", + "resourceName": "ModelWithUnwrappedArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "426", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "58" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "427", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "58" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "428", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "237" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.input", + "methodParameterSegments": [ + { + "$id": "429", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "237" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithUnwrappedArray", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "427" + }, + { + "$ref": "429" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put" + } + ], + "parameters": [ + { + "$id": "430", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "431", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "432", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "433", + "kind": "client", + "name": "ModelWithRenamedArraysValue", + "namespace": "Payload.Xml", + "doc": "§3.3, §3.4 — Operations for the ModelWithRenamedArrays type.", + "methods": [ + { + "$id": "434", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "435", + "name": "get", + "resourceName": "ModelWithRenamedArraysValue", + "accessibility": "public", + "parameters": [ + { + "$id": "436", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "62" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get.accept", + "methodParameterSegments": [ + { + "$id": "437", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "62" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "240" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "64" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedArrays", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "437" + } + ], + "response": { + "type": { + "$ref": "240" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get" + }, + { + "$id": "438", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "439", + "name": "put", + "resourceName": "ModelWithRenamedArraysValue", + "accessibility": "public", + "parameters": [ + { + "$id": "440", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "66" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "441", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "66" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "442", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "240" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.input", + "methodParameterSegments": [ + { + "$id": "443", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "240" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedArrays", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "441" + }, + { + "$ref": "443" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put" + } + ], + "parameters": [ + { + "$id": "444", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "445", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "446", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "447", + "kind": "client", + "name": "ModelWithWrappedPrimitiveCustomItemNamesValue", + "namespace": "Payload.Xml", + "doc": "§3.5 — Operations for the ModelWithWrappedPrimitiveCustomItemNames type.", + "methods": [ + { + "$id": "448", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "449", + "name": "get", + "resourceName": "ModelWithWrappedPrimitiveCustomItemNamesValue", + "accessibility": "public", + "parameters": [ + { + "$id": "450", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "70" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.get.accept", + "methodParameterSegments": [ + { + "$id": "451", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "70" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "243" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "72" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithWrappedPrimitiveCustomItemNames", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "451" + } + ], + "response": { + "type": { + "$ref": "243" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.get" + }, + { + "$id": "452", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "453", + "name": "put", + "resourceName": "ModelWithWrappedPrimitiveCustomItemNamesValue", + "accessibility": "public", + "parameters": [ + { + "$id": "454", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "74" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "455", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "74" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "456", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "243" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put.input", + "methodParameterSegments": [ + { + "$id": "457", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "243" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithWrappedPrimitiveCustomItemNames", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "455" + }, + { + "$ref": "457" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put" + } + ], + "parameters": [ + { + "$id": "458", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "459", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "460", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "461", + "kind": "client", + "name": "ModelWithArrayOfModelValue", + "namespace": "Payload.Xml", + "doc": "§4.1 — Operations for the ModelWithArrayOfModel type.", + "methods": [ + { + "$id": "462", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "463", + "name": "get", + "resourceName": "ModelWithArrayOfModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "464", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "78" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get.accept", + "methodParameterSegments": [ + { + "$id": "465", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "78" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "248" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "80" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithArrayOfModel", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "465" + } + ], + "response": { + "type": { + "$ref": "248" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get" + }, + { + "$id": "466", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "467", + "name": "put", + "resourceName": "ModelWithArrayOfModelValue", + "accessibility": "public", + "parameters": [ + { + "$id": "468", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "82" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "469", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "82" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "470", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "248" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.input", + "methodParameterSegments": [ + { + "$id": "471", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "248" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithArrayOfModel", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "469" + }, + { + "$ref": "471" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put" + } + ], + "parameters": [ + { + "$id": "472", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "473", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "474", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "475", + "kind": "client", + "name": "ModelWithUnwrappedModelArrayValue", + "namespace": "Payload.Xml", + "doc": "§4.2 — Operations for the ModelWithUnwrappedModelArray type.", + "methods": [ + { + "$id": "476", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "477", + "name": "get", + "resourceName": "ModelWithUnwrappedModelArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "478", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "86" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.get.accept", + "methodParameterSegments": [ + { + "$id": "479", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "86" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "251" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "88" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithUnwrappedModelArray", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "479" + } + ], + "response": { + "type": { + "$ref": "251" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.get" + }, + { + "$id": "480", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "481", + "name": "put", + "resourceName": "ModelWithUnwrappedModelArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "482", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "90" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "483", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "90" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "484", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "251" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.put.input", + "methodParameterSegments": [ + { + "$id": "485", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "251" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithUnwrappedModelArray", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "483" + }, + { + "$ref": "485" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.put" + } + ], + "parameters": [ + { + "$id": "486", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "487", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "488", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedModelArrayValue", + "apiVersions": [], + "parent": { + "$ref": "331" + }, + "isMultiServiceClient": false + }, + { + "$id": "489", + "kind": "client", + "name": "ModelWithRenamedWrappedModelArrayValue", + "namespace": "Payload.Xml", + "doc": "§4.3 — Operations for the ModelWithRenamedWrappedModelArray type.", + "methods": [ + { + "$id": "490", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "491", + "name": "get", + "resourceName": "ModelWithRenamedWrappedModelArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "492", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "94" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.get.accept", + "methodParameterSegments": [ + { + "$id": "493", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "94" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "253" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "96" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedWrappedModelArray", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "493" + } + ], + "response": { + "type": { + "$ref": "253" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.get" + }, + { + "$id": "494", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "495", + "name": "put", + "resourceName": "ModelWithRenamedWrappedModelArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "496", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "98" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "497", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "98" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "498", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "253" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put.input", + "methodParameterSegments": [ + { + "$id": "499", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "253" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedWrappedModelArray", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "497" + }, + { + "$ref": "499" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put" + } + ], + "parameters": [ + { + "$id": "500", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "501", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "502", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue.endpoint" } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedModelArrayValue", + "apiVersions": [], + "parent": { + "$ref": "331" }, - "isHttpMetadata": false + "isMultiServiceClient": false }, { - "$id": "151", - "kind": "property", - "name": "colors", - "serializedName": "PossibleColors", - "type": { - "$ref": "108" - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNames.colors", - "serializationOptions": { - "xml": { - "name": "PossibleColors", - "attribute": false, - "unwrapped": false, - "itemsName": "string" + "$id": "503", + "kind": "client", + "name": "ModelWithRenamedUnwrappedModelArrayValue", + "namespace": "Payload.Xml", + "doc": "§4.4 — Operations for the ModelWithRenamedUnwrappedModelArray type.", + "methods": [ + { + "$id": "504", + "kind": "basic", + "name": "get", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "505", + "name": "get", + "resourceName": "ModelWithRenamedUnwrappedModelArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "506", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "102" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.get.accept", + "methodParameterSegments": [ + { + "$id": "507", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "102" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.get.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "255" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "104" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/xml" + ] + } + ], + "httpMethod": "GET", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedUnwrappedModelArray", + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.get", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "507" + } + ], + "response": { + "type": { + "$ref": "255" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.get" + }, + { + "$id": "508", + "kind": "basic", + "name": "put", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "509", + "name": "put", + "resourceName": "ModelWithRenamedUnwrappedModelArrayValue", + "accessibility": "public", + "parameters": [ + { + "$id": "510", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "106" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put.contentType", + "methodParameterSegments": [ + { + "$id": "511", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "106" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "512", + "kind": "body", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "255" + }, + "isApiVersion": false, + "contentTypes": [ + "application/xml" + ], + "defaultContentType": "application/xml", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put.input", + "methodParameterSegments": [ + { + "$id": "513", + "kind": "method", + "name": "input", + "serializedName": "input", + "type": { + "$ref": "255" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put.input", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 204 + ], + "headers": [], + "isErrorResponse": false + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/payload/xml/modelWithRenamedUnwrappedModelArray", + "requestMediaTypes": [ + "application/xml" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put", + "decorators": [], + "namespace": "Payload.Xml" + }, + "parameters": [ + { + "$ref": "511" + }, + { + "$ref": "513" + } + ], + "response": {}, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put" } - }, - "isHttpMetadata": false - } - ] - }, - { - "$id": "152", - "kind": "model", - "name": "XmlErrorBody", - "namespace": "Payload.Xml", - "crossLanguageDefinitionId": "Payload.Xml.XmlErrorBody", - "usage": "Output,Xml", - "doc": "The body of an XML error response.", - "decorators": [], - "serializationOptions": { - "xml": { - "name": "XmlErrorBody", - "attribute": false, - "unwrapped": false - } - }, - "properties": [ - { - "$id": "153", - "kind": "property", - "name": "message", - "serializedName": "message", - "type": { - "$id": "154", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.XmlErrorBody.message", - "serializationOptions": { - "xml": { - "name": "message", - "attribute": false, - "unwrapped": false + ], + "parameters": [ + { + "$id": "514", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "515", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "516", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.endpoint" } - }, - "isHttpMetadata": false - }, - { - "$id": "155", - "kind": "property", - "name": "code", - "serializedName": "code", - "type": { - "$id": "156", - "kind": "int32", - "name": "int32", - "crossLanguageDefinitionId": "TypeSpec.int32", - "decorators": [] - }, - "optional": false, - "readOnly": false, - "discriminator": false, - "flatten": false, + ], + "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.XmlErrorBody.code", - "serializationOptions": { - "xml": { - "name": "code", - "attribute": false, - "unwrapped": false - } - }, - "isHttpMetadata": false - } - ] - } - ], - "clients": [ - { - "$id": "157", - "kind": "client", - "name": "XmlClient", - "namespace": "Payload.Xml", - "doc": "Sends and receives bodies in XML format.", - "methods": [], - "parameters": [ - { - "$id": "158", - "kind": "endpoint", - "name": "endpoint", - "serializedName": "endpoint", - "doc": "Service host", - "type": { - "$id": "159", - "kind": "url", - "name": "endpoint", - "crossLanguageDefinitionId": "TypeSpec.url" - }, - "isApiVersion": false, - "optional": false, - "scope": "Client", - "isEndpoint": true, - "defaultValue": { - "type": { - "$id": "160", - "kind": "string", - "name": "string", - "crossLanguageDefinitionId": "TypeSpec.string" - }, - "value": "http://localhost:3000" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue", + "apiVersions": [], + "parent": { + "$ref": "331" }, - "serverUrlTemplate": "{endpoint}", - "skipUrlEncoding": false, - "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.endpoint" - } - ], - "initializedBy": 1, - "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml", - "apiVersions": [], - "children": [ + "isMultiServiceClient": false + }, { - "$id": "161", + "$id": "517", "kind": "client", - "name": "SimpleModelValue", + "name": "ModelWithRenamedWrappedAndItemModelArrayValue", "namespace": "Payload.Xml", - "doc": "Operations for the SimpleModel type.", + "doc": "§4.5 — Operations for the ModelWithRenamedWrappedAndItemModelArray type.", "methods": [ { - "$id": "162", + "$id": "518", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "163", + "$id": "519", "name": "get", - "resourceName": "SimpleModelValue", + "resourceName": "ModelWithRenamedWrappedAndItemModelArrayValue", "accessibility": "public", "parameters": [ { - "$id": "164", + "$id": "520", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "1" + "$ref": "110" }, "isApiVersion": false, "optional": false, @@ -1845,21 +7335,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.get.accept", "methodParameterSegments": [ { - "$id": "165", + "$id": "521", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "1" + "$ref": "110" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -1873,14 +7363,14 @@ 200 ], "bodyType": { - "$ref": "101" + "$ref": "257" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "3" + "$ref": "112" } } ], @@ -1892,48 +7382,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/simpleModel", + "path": "/payload/xml/modelWithRenamedWrappedAndItemModelArray", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "165" + "$ref": "521" } ], "response": { "type": { - "$ref": "101" + "$ref": "257" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.get" }, { - "$id": "166", + "$id": "522", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "167", + "$id": "523", "name": "put", - "resourceName": "SimpleModelValue", + "resourceName": "ModelWithRenamedWrappedAndItemModelArrayValue", "accessibility": "public", "parameters": [ { - "$id": "168", + "$id": "524", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "5" + "$ref": "114" }, "isApiVersion": false, "optional": false, @@ -1941,21 +7431,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put.contentType", "methodParameterSegments": [ { - "$id": "169", + "$id": "525", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "5" + "$ref": "114" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -1963,12 +7453,12 @@ ] }, { - "$id": "170", + "$id": "526", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "101" + "$ref": "257" }, "isApiVersion": false, "contentTypes": [ @@ -1979,21 +7469,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put.input", "methodParameterSegments": [ { - "$id": "171", + "$id": "527", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "101" + "$ref": "257" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -2012,41 +7502,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/simpleModel", + "path": "/payload/xml/modelWithRenamedWrappedAndItemModelArray", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "169" + "$ref": "525" }, { - "$ref": "171" + "$ref": "527" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put" } ], "parameters": [ { - "$id": "172", + "$id": "528", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "173", + "$id": "529", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -2057,7 +7547,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "174", + "$id": "530", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -2067,44 +7557,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.SimpleModelValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "175", + "$id": "531", "kind": "client", - "name": "ModelWithSimpleArraysValue", + "name": "ModelWithAttributesValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithSimpleArrays type.", + "doc": "§5.1 — Operations for the ModelWithAttributes type.", "methods": [ { - "$id": "176", + "$id": "532", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "177", + "$id": "533", "name": "get", - "resourceName": "ModelWithSimpleArraysValue", + "resourceName": "ModelWithAttributesValue", "accessibility": "public", "parameters": [ { - "$id": "178", + "$id": "534", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "9" + "$ref": "118" }, "isApiVersion": false, "optional": false, @@ -2112,21 +7602,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get.accept", "methodParameterSegments": [ { - "$id": "179", + "$id": "535", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "9" + "$ref": "118" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -2140,14 +7630,14 @@ 200 ], "bodyType": { - "$ref": "106" + "$ref": "263" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "11" + "$ref": "120" } } ], @@ -2159,48 +7649,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithSimpleArrays", + "path": "/payload/xml/modelWithAttributes", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "179" + "$ref": "535" } ], "response": { "type": { - "$ref": "106" + "$ref": "263" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get" }, { - "$id": "180", + "$id": "536", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "181", + "$id": "537", "name": "put", - "resourceName": "ModelWithSimpleArraysValue", + "resourceName": "ModelWithAttributesValue", "accessibility": "public", "parameters": [ { - "$id": "182", + "$id": "538", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "13" + "$ref": "122" }, "isApiVersion": false, "optional": false, @@ -2208,21 +7698,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.contentType", "methodParameterSegments": [ { - "$id": "183", + "$id": "539", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "13" + "$ref": "122" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -2230,12 +7720,12 @@ ] }, { - "$id": "184", + "$id": "540", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "106" + "$ref": "263" }, "isApiVersion": false, "contentTypes": [ @@ -2246,21 +7736,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.input", "methodParameterSegments": [ { - "$id": "185", + "$id": "541", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "106" + "$ref": "263" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -2279,41 +7769,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithSimpleArrays", + "path": "/payload/xml/modelWithAttributes", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "183" + "$ref": "539" }, { - "$ref": "185" + "$ref": "541" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put" } ], "parameters": [ { - "$id": "186", + "$id": "542", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "187", + "$id": "543", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -2324,7 +7814,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "188", + "$id": "544", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -2334,44 +7824,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithSimpleArraysValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "189", + "$id": "545", "kind": "client", - "name": "ModelWithArrayOfModelValue", + "name": "ModelWithRenamedAttributeValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithArrayOfModel type.", + "doc": "§5.2 — Operations for the ModelWithRenamedAttribute type.", "methods": [ { - "$id": "190", + "$id": "546", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "191", + "$id": "547", "name": "get", - "resourceName": "ModelWithArrayOfModelValue", + "resourceName": "ModelWithRenamedAttributeValue", "accessibility": "public", "parameters": [ { - "$id": "192", + "$id": "548", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "17" + "$ref": "126" }, "isApiVersion": false, "optional": false, @@ -2379,21 +7869,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.get.accept", "methodParameterSegments": [ { - "$id": "193", + "$id": "549", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "17" + "$ref": "126" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -2407,14 +7897,14 @@ 200 ], "bodyType": { - "$ref": "113" + "$ref": "270" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "19" + "$ref": "128" } } ], @@ -2426,48 +7916,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithArrayOfModel", + "path": "/payload/xml/modelWithRenamedAttribute", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "193" + "$ref": "549" } ], "response": { "type": { - "$ref": "113" + "$ref": "270" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.get" }, { - "$id": "194", + "$id": "550", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "195", + "$id": "551", "name": "put", - "resourceName": "ModelWithArrayOfModelValue", + "resourceName": "ModelWithRenamedAttributeValue", "accessibility": "public", "parameters": [ { - "$id": "196", + "$id": "552", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "21" + "$ref": "130" }, "isApiVersion": false, "optional": false, @@ -2475,21 +7965,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.put.contentType", "methodParameterSegments": [ { - "$id": "197", + "$id": "553", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "21" + "$ref": "130" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -2497,12 +7987,12 @@ ] }, { - "$id": "198", + "$id": "554", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "113" + "$ref": "270" }, "isApiVersion": false, "contentTypes": [ @@ -2513,21 +8003,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.put.input", "methodParameterSegments": [ { - "$id": "199", + "$id": "555", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "113" + "$ref": "270" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -2546,41 +8036,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithArrayOfModel", + "path": "/payload/xml/modelWithRenamedAttribute", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "197" + "$ref": "553" }, { - "$ref": "199" + "$ref": "555" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.put" } ], "parameters": [ { - "$id": "200", + "$id": "556", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "201", + "$id": "557", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -2591,7 +8081,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "202", + "$id": "558", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -2601,44 +8091,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithArrayOfModelValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedAttributeValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "203", + "$id": "559", "kind": "client", - "name": "ModelWithOptionalFieldValue", + "name": "ModelWithNamespaceValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithOptionalField type.", + "doc": "§6.1, §7.1 — Operations for the ModelWithNamespace type.", "methods": [ { - "$id": "204", + "$id": "560", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "205", + "$id": "561", "name": "get", - "resourceName": "ModelWithOptionalFieldValue", + "resourceName": "ModelWithNamespaceValue", "accessibility": "public", "parameters": [ { - "$id": "206", + "$id": "562", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "25" + "$ref": "134" }, "isApiVersion": false, "optional": false, @@ -2646,21 +8136,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.get.accept", "methodParameterSegments": [ { - "$id": "207", + "$id": "563", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "25" + "$ref": "134" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -2674,14 +8164,14 @@ 200 ], "bodyType": { - "$ref": "116" + "$ref": "277" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "27" + "$ref": "136" } } ], @@ -2693,48 +8183,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithOptionalField", + "path": "/payload/xml/modelWithNamespace", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "207" + "$ref": "563" } ], "response": { "type": { - "$ref": "116" + "$ref": "277" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.get" }, { - "$id": "208", + "$id": "564", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "209", + "$id": "565", "name": "put", - "resourceName": "ModelWithOptionalFieldValue", + "resourceName": "ModelWithNamespaceValue", "accessibility": "public", "parameters": [ { - "$id": "210", + "$id": "566", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "29" + "$ref": "138" }, "isApiVersion": false, "optional": false, @@ -2742,21 +8232,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.put.contentType", "methodParameterSegments": [ { - "$id": "211", + "$id": "567", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "29" + "$ref": "138" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -2764,12 +8254,12 @@ ] }, { - "$id": "212", + "$id": "568", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "116" + "$ref": "277" }, "isApiVersion": false, "contentTypes": [ @@ -2780,21 +8270,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.put.input", "methodParameterSegments": [ { - "$id": "213", + "$id": "569", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "116" + "$ref": "277" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -2813,41 +8303,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithOptionalField", + "path": "/payload/xml/modelWithNamespace", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "211" + "$ref": "567" }, { - "$ref": "213" + "$ref": "569" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.put" } ], "parameters": [ { - "$id": "214", + "$id": "570", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "215", + "$id": "571", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -2858,7 +8348,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "216", + "$id": "572", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -2868,44 +8358,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "217", + "$id": "573", "kind": "client", - "name": "ModelWithAttributesValue", + "name": "ModelWithNamespaceOnPropertiesValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithAttributes type.", + "doc": "§6.2, §7.2 — Operations for the ModelWithNamespaceOnProperties type.", "methods": [ { - "$id": "218", + "$id": "574", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "219", + "$id": "575", "name": "get", - "resourceName": "ModelWithAttributesValue", + "resourceName": "ModelWithNamespaceOnPropertiesValue", "accessibility": "public", "parameters": [ { - "$id": "220", + "$id": "576", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "33" + "$ref": "142" }, "isApiVersion": false, "optional": false, @@ -2913,21 +8403,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.get.accept", "methodParameterSegments": [ { - "$id": "221", + "$id": "577", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "33" + "$ref": "142" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -2941,14 +8431,14 @@ 200 ], "bodyType": { - "$ref": "121" + "$ref": "287" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "35" + "$ref": "144" } } ], @@ -2960,48 +8450,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithAttributes", + "path": "/payload/xml/modelWithNamespaceOnProperties", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "221" + "$ref": "577" } ], "response": { "type": { - "$ref": "121" + "$ref": "287" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.get" }, { - "$id": "222", + "$id": "578", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "223", + "$id": "579", "name": "put", - "resourceName": "ModelWithAttributesValue", + "resourceName": "ModelWithNamespaceOnPropertiesValue", "accessibility": "public", "parameters": [ { - "$id": "224", + "$id": "580", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "37" + "$ref": "146" }, "isApiVersion": false, "optional": false, @@ -3009,21 +8499,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.put.contentType", "methodParameterSegments": [ { - "$id": "225", + "$id": "581", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "37" + "$ref": "146" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -3031,12 +8521,12 @@ ] }, { - "$id": "226", + "$id": "582", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "121" + "$ref": "287" }, "isApiVersion": false, "contentTypes": [ @@ -3047,21 +8537,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.put.input", "methodParameterSegments": [ { - "$id": "227", + "$id": "583", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "121" + "$ref": "287" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -3080,41 +8570,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithAttributes", + "path": "/payload/xml/modelWithNamespaceOnProperties", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "225" + "$ref": "581" }, { - "$ref": "227" + "$ref": "583" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.put" } ], "parameters": [ { - "$id": "228", + "$id": "584", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "229", + "$id": "585", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -3125,7 +8615,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "230", + "$id": "586", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -3135,44 +8625,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithAttributesValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithNamespaceOnPropertiesValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "231", + "$id": "587", "kind": "client", - "name": "ModelWithUnwrappedArrayValue", + "name": "ModelWithTextValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithUnwrappedArray type.", + "doc": "§8.1 — Operations for the ModelWithText type.", "methods": [ { - "$id": "232", + "$id": "588", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "233", + "$id": "589", "name": "get", - "resourceName": "ModelWithUnwrappedArrayValue", + "resourceName": "ModelWithTextValue", "accessibility": "public", "parameters": [ { - "$id": "234", + "$id": "590", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "41" + "$ref": "150" }, "isApiVersion": false, "optional": false, @@ -3180,21 +8670,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get.accept", "methodParameterSegments": [ { - "$id": "235", + "$id": "591", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "41" + "$ref": "150" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -3208,14 +8698,14 @@ 200 ], "bodyType": { - "$ref": "128" + "$ref": "297" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "43" + "$ref": "152" } } ], @@ -3227,48 +8717,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithUnwrappedArray", + "path": "/payload/xml/modelWithText", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "235" + "$ref": "591" } ], "response": { "type": { - "$ref": "128" + "$ref": "297" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get" }, { - "$id": "236", + "$id": "592", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "237", + "$id": "593", "name": "put", - "resourceName": "ModelWithUnwrappedArrayValue", + "resourceName": "ModelWithTextValue", "accessibility": "public", "parameters": [ { - "$id": "238", + "$id": "594", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "45" + "$ref": "154" }, "isApiVersion": false, "optional": false, @@ -3276,21 +8766,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.contentType", "methodParameterSegments": [ { - "$id": "239", + "$id": "595", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "45" + "$ref": "154" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -3298,12 +8788,12 @@ ] }, { - "$id": "240", + "$id": "596", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "128" + "$ref": "297" }, "isApiVersion": false, "contentTypes": [ @@ -3314,21 +8804,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.input", "methodParameterSegments": [ { - "$id": "241", + "$id": "597", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "128" + "$ref": "297" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -3347,41 +8837,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithUnwrappedArray", + "path": "/payload/xml/modelWithText", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "239" + "$ref": "595" }, { - "$ref": "241" + "$ref": "597" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put" } ], "parameters": [ { - "$id": "242", + "$id": "598", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "243", + "$id": "599", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -3392,7 +8882,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "244", + "$id": "600", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -3402,44 +8892,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithUnwrappedArrayValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "245", + "$id": "601", "kind": "client", - "name": "ModelWithRenamedArraysValue", + "name": "ModelWithOptionalFieldValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithRenamedArrays type.", + "doc": "Operations for the ModelWithOptionalField type.", "methods": [ { - "$id": "246", + "$id": "602", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "247", + "$id": "603", "name": "get", - "resourceName": "ModelWithRenamedArraysValue", + "resourceName": "ModelWithOptionalFieldValue", "accessibility": "public", "parameters": [ { - "$id": "248", + "$id": "604", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "49" + "$ref": "158" }, "isApiVersion": false, "optional": false, @@ -3447,21 +8937,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get.accept", "methodParameterSegments": [ { - "$id": "249", + "$id": "605", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "49" + "$ref": "158" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -3475,14 +8965,14 @@ 200 ], "bodyType": { - "$ref": "131" + "$ref": "302" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "51" + "$ref": "160" } } ], @@ -3494,48 +8984,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithRenamedArrays", + "path": "/payload/xml/modelWithOptionalField", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "249" + "$ref": "605" } ], "response": { "type": { - "$ref": "131" + "$ref": "302" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.get" }, { - "$id": "250", + "$id": "606", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "251", + "$id": "607", "name": "put", - "resourceName": "ModelWithRenamedArraysValue", + "resourceName": "ModelWithOptionalFieldValue", "accessibility": "public", "parameters": [ { - "$id": "252", + "$id": "608", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "53" + "$ref": "162" }, "isApiVersion": false, "optional": false, @@ -3543,21 +9033,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.contentType", "methodParameterSegments": [ { - "$id": "253", + "$id": "609", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "53" + "$ref": "162" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -3565,12 +9055,12 @@ ] }, { - "$id": "254", + "$id": "610", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "131" + "$ref": "302" }, "isApiVersion": false, "contentTypes": [ @@ -3581,21 +9071,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.input", "methodParameterSegments": [ { - "$id": "255", + "$id": "611", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "131" + "$ref": "302" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -3614,41 +9104,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithRenamedArrays", + "path": "/payload/xml/modelWithOptionalField", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "253" + "$ref": "609" }, { - "$ref": "255" + "$ref": "611" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.put" } ], "parameters": [ { - "$id": "256", + "$id": "612", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "257", + "$id": "613", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -3659,7 +9149,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "258", + "$id": "614", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -3669,44 +9159,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedArraysValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithOptionalFieldValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "259", + "$id": "615", "kind": "client", - "name": "ModelWithRenamedFieldsValue", + "name": "ModelWithEmptyArrayValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithRenamedFields type.", + "doc": "Operations for the ModelWithEmptyArray type.", "methods": [ { - "$id": "260", + "$id": "616", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "261", + "$id": "617", "name": "get", - "resourceName": "ModelWithRenamedFieldsValue", + "resourceName": "ModelWithEmptyArrayValue", "accessibility": "public", "parameters": [ { - "$id": "262", + "$id": "618", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "57" + "$ref": "166" }, "isApiVersion": false, "optional": false, @@ -3714,21 +9204,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get.accept", "methodParameterSegments": [ { - "$id": "263", + "$id": "619", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "57" + "$ref": "166" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -3742,14 +9232,14 @@ 200 ], "bodyType": { - "$ref": "134" + "$ref": "307" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "59" + "$ref": "168" } } ], @@ -3761,48 +9251,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithRenamedFields", + "path": "/payload/xml/modelWithEmptyArray", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "263" + "$ref": "619" } ], "response": { "type": { - "$ref": "134" + "$ref": "307" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get" }, { - "$id": "264", + "$id": "620", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "265", + "$id": "621", "name": "put", - "resourceName": "ModelWithRenamedFieldsValue", + "resourceName": "ModelWithEmptyArrayValue", "accessibility": "public", "parameters": [ { - "$id": "266", + "$id": "622", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "61" + "$ref": "170" }, "isApiVersion": false, "optional": false, @@ -3810,21 +9300,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.contentType", "methodParameterSegments": [ { - "$id": "267", + "$id": "623", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "61" + "$ref": "170" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -3832,12 +9322,12 @@ ] }, { - "$id": "268", + "$id": "624", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "134" + "$ref": "307" }, "isApiVersion": false, "contentTypes": [ @@ -3848,21 +9338,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.input", "methodParameterSegments": [ { - "$id": "269", + "$id": "625", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "134" + "$ref": "307" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -3881,41 +9371,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithRenamedFields", + "path": "/payload/xml/modelWithEmptyArray", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "267" + "$ref": "623" }, { - "$ref": "269" + "$ref": "625" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put" } ], "parameters": [ { - "$id": "270", + "$id": "626", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "271", + "$id": "627", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -3926,7 +9416,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "272", + "$id": "628", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -3936,44 +9426,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithRenamedFieldsValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "273", + "$id": "629", "kind": "client", - "name": "ModelWithEmptyArrayValue", + "name": "ModelWithDictionaryValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithEmptyArray type.", + "doc": "Operations for the ModelWithDictionary type.", "methods": [ { - "$id": "274", + "$id": "630", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "275", + "$id": "631", "name": "get", - "resourceName": "ModelWithEmptyArrayValue", + "resourceName": "ModelWithDictionaryValue", "accessibility": "public", "parameters": [ { - "$id": "276", + "$id": "632", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "65" + "$ref": "174" }, "isApiVersion": false, "optional": false, @@ -3981,21 +9471,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get.accept", "methodParameterSegments": [ { - "$id": "277", + "$id": "633", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "65" + "$ref": "174" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -4009,14 +9499,14 @@ 200 ], "bodyType": { - "$ref": "137" + "$ref": "309" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "67" + "$ref": "176" } } ], @@ -4028,48 +9518,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithEmptyArray", + "path": "/payload/xml/modelWithDictionary", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "277" + "$ref": "633" } ], "response": { "type": { - "$ref": "137" + "$ref": "309" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get" }, { - "$id": "278", + "$id": "634", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "279", + "$id": "635", "name": "put", - "resourceName": "ModelWithEmptyArrayValue", + "resourceName": "ModelWithDictionaryValue", "accessibility": "public", "parameters": [ { - "$id": "280", + "$id": "636", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "69" + "$ref": "178" }, "isApiVersion": false, "optional": false, @@ -4077,21 +9567,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.contentType", "methodParameterSegments": [ { - "$id": "281", + "$id": "637", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "69" + "$ref": "178" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -4099,12 +9589,12 @@ ] }, { - "$id": "282", + "$id": "638", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "137" + "$ref": "309" }, "isApiVersion": false, "contentTypes": [ @@ -4115,21 +9605,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.input", "methodParameterSegments": [ { - "$id": "283", + "$id": "639", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "137" + "$ref": "309" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -4148,41 +9638,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithEmptyArray", + "path": "/payload/xml/modelWithDictionary", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "281" + "$ref": "637" }, { - "$ref": "283" + "$ref": "639" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put" } ], "parameters": [ { - "$id": "284", + "$id": "640", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "285", + "$id": "641", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -4193,7 +9683,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "286", + "$id": "642", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -4203,44 +9693,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEmptyArrayValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "287", + "$id": "643", "kind": "client", - "name": "ModelWithTextValue", + "name": "ModelWithEncodedNamesValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithText type.", + "doc": "Operations for the ModelWithEncodedNames type.", "methods": [ { - "$id": "288", + "$id": "644", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "289", + "$id": "645", "name": "get", - "resourceName": "ModelWithTextValue", + "resourceName": "ModelWithEncodedNamesValue", "accessibility": "public", "parameters": [ { - "$id": "290", + "$id": "646", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "73" + "$ref": "182" }, "isApiVersion": false, "optional": false, @@ -4248,21 +9738,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get.accept", "methodParameterSegments": [ { - "$id": "291", + "$id": "647", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "73" + "$ref": "182" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -4276,14 +9766,14 @@ 200 ], "bodyType": { - "$ref": "139" + "$ref": "314" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "75" + "$ref": "184" } } ], @@ -4295,48 +9785,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithText", + "path": "/payload/xml/modelWithEncodedNames", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "291" + "$ref": "647" } ], "response": { "type": { - "$ref": "139" + "$ref": "314" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get" }, { - "$id": "292", + "$id": "648", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "293", + "$id": "649", "name": "put", - "resourceName": "ModelWithTextValue", + "resourceName": "ModelWithEncodedNamesValue", "accessibility": "public", "parameters": [ { - "$id": "294", + "$id": "650", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "77" + "$ref": "186" }, "isApiVersion": false, "optional": false, @@ -4344,21 +9834,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.contentType", "methodParameterSegments": [ { - "$id": "295", + "$id": "651", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "77" + "$ref": "186" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -4366,12 +9856,12 @@ ] }, { - "$id": "296", + "$id": "652", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "139" + "$ref": "314" }, "isApiVersion": false, "contentTypes": [ @@ -4382,21 +9872,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.input", "methodParameterSegments": [ { - "$id": "297", + "$id": "653", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "139" + "$ref": "314" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -4415,41 +9905,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithText", + "path": "/payload/xml/modelWithEncodedNames", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "295" + "$ref": "651" }, { - "$ref": "297" + "$ref": "653" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put" } ], "parameters": [ { - "$id": "298", + "$id": "654", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "299", + "$id": "655", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -4460,7 +9950,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "300", + "$id": "656", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -4470,44 +9960,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithTextValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "301", + "$id": "657", "kind": "client", - "name": "ModelWithDictionaryValue", + "name": "ModelWithEnumValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithDictionary type.", + "doc": "Operations for the ModelWithEnum type.", "methods": [ { - "$id": "302", + "$id": "658", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "303", + "$id": "659", "name": "get", - "resourceName": "ModelWithDictionaryValue", + "resourceName": "ModelWithEnumValue", "accessibility": "public", "parameters": [ { - "$id": "304", + "$id": "660", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "81" + "$ref": "190" }, "isApiVersion": false, "optional": false, @@ -4515,21 +10005,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.get.accept", "methodParameterSegments": [ { - "$id": "305", + "$id": "661", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "81" + "$ref": "190" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -4543,14 +10033,14 @@ 200 ], "bodyType": { - "$ref": "144" + "$ref": "317" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "83" + "$ref": "192" } } ], @@ -4562,48 +10052,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithDictionary", + "path": "/payload/xml/modelWithEnum", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "305" + "$ref": "661" } ], "response": { "type": { - "$ref": "144" + "$ref": "317" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.get" }, { - "$id": "306", + "$id": "662", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "307", + "$id": "663", "name": "put", - "resourceName": "ModelWithDictionaryValue", + "resourceName": "ModelWithEnumValue", "accessibility": "public", "parameters": [ { - "$id": "308", + "$id": "664", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "85" + "$ref": "194" }, "isApiVersion": false, "optional": false, @@ -4611,21 +10101,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.put.contentType", "methodParameterSegments": [ { - "$id": "309", + "$id": "665", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "85" + "$ref": "194" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -4633,12 +10123,12 @@ ] }, { - "$id": "310", + "$id": "666", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "144" + "$ref": "317" }, "isApiVersion": false, "contentTypes": [ @@ -4649,21 +10139,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.put.input", "methodParameterSegments": [ { - "$id": "311", + "$id": "667", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "144" + "$ref": "317" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -4682,41 +10172,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithDictionary", + "path": "/payload/xml/modelWithEnum", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "309" + "$ref": "665" }, { - "$ref": "311" + "$ref": "667" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.put" } ], "parameters": [ { - "$id": "312", + "$id": "668", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "313", + "$id": "669", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -4727,7 +10217,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "314", + "$id": "670", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -4737,44 +10227,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithDictionaryValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithEnumValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "315", + "$id": "671", "kind": "client", - "name": "ModelWithEncodedNamesValue", + "name": "ModelWithDatetimeValue", "namespace": "Payload.Xml", - "doc": "Operations for the ModelWithEncodedNames type.", + "doc": "Operations for the ModelWithDatetime type.", "methods": [ { - "$id": "316", + "$id": "672", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "317", + "$id": "673", "name": "get", - "resourceName": "ModelWithEncodedNamesValue", + "resourceName": "ModelWithDatetimeValue", "accessibility": "public", "parameters": [ { - "$id": "318", + "$id": "674", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "89" + "$ref": "198" }, "isApiVersion": false, "optional": false, @@ -4782,21 +10272,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.get.accept", "methodParameterSegments": [ { - "$id": "319", + "$id": "675", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "89" + "$ref": "198" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get.accept", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.get.accept", "readOnly": false, "access": "public", "decorators": [] @@ -4810,14 +10300,14 @@ 200 ], "bodyType": { - "$ref": "149" + "$ref": "319" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "91" + "$ref": "200" } } ], @@ -4829,48 +10319,48 @@ ], "httpMethod": "GET", "uri": "{endpoint}", - "path": "/payload/xml/modelWithEncodedNames", + "path": "/payload/xml/modelWithDatetime", "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.get", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "319" + "$ref": "675" } ], "response": { "type": { - "$ref": "149" + "$ref": "319" } }, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.get" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.get" }, { - "$id": "320", + "$id": "676", "kind": "basic", "name": "put", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "321", + "$id": "677", "name": "put", - "resourceName": "ModelWithEncodedNamesValue", + "resourceName": "ModelWithDatetimeValue", "accessibility": "public", "parameters": [ { - "$id": "322", + "$id": "678", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "93" + "$ref": "202" }, "isApiVersion": false, "optional": false, @@ -4878,21 +10368,21 @@ "scope": "Constant", "readOnly": false, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.put.contentType", "methodParameterSegments": [ { - "$id": "323", + "$id": "679", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "type": { - "$ref": "93" + "$ref": "202" }, "location": "Header", "isApiVersion": false, "optional": false, "scope": "Constant", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.contentType", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.put.contentType", "readOnly": false, "access": "public", "decorators": [] @@ -4900,12 +10390,12 @@ ] }, { - "$id": "324", + "$id": "680", "kind": "body", "name": "input", "serializedName": "input", "type": { - "$ref": "149" + "$ref": "319" }, "isApiVersion": false, "contentTypes": [ @@ -4916,21 +10406,21 @@ "scope": "Method", "decorators": [], "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.put.input", "methodParameterSegments": [ { - "$id": "325", + "$id": "681", "kind": "method", "name": "input", "serializedName": "input", "type": { - "$ref": "149" + "$ref": "319" }, "location": "Body", "isApiVersion": false, "optional": false, "scope": "Method", - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put.input", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.put.input", "readOnly": false, "access": "public", "decorators": [] @@ -4949,41 +10439,41 @@ ], "httpMethod": "PUT", "uri": "{endpoint}", - "path": "/payload/xml/modelWithEncodedNames", + "path": "/payload/xml/modelWithDatetime", "requestMediaTypes": [ "application/xml" ], "bufferResponse": true, "generateProtocolMethod": true, "generateConvenienceMethod": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.put", "decorators": [], "namespace": "Payload.Xml" }, "parameters": [ { - "$ref": "323" + "$ref": "679" }, { - "$ref": "325" + "$ref": "681" } ], "response": {}, "isOverride": false, "generateConvenient": true, "generateProtocol": true, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.put" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.put" } ], "parameters": [ { - "$id": "326", + "$id": "682", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "327", + "$id": "683", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -4994,7 +10484,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "328", + "$id": "684", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -5004,44 +10494,44 @@ "serverUrlTemplate": "{endpoint}", "skipUrlEncoding": false, "readOnly": false, - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue.endpoint" + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue.endpoint" } ], "initializedBy": 0, "decorators": [], - "crossLanguageDefinitionId": "Payload.Xml.ModelWithEncodedNamesValue", + "crossLanguageDefinitionId": "Payload.Xml.ModelWithDatetimeValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false }, { - "$id": "329", + "$id": "685", "kind": "client", "name": "XmlErrorValue", "namespace": "Payload.Xml", "doc": "Operations that return an error response in XML format.", "methods": [ { - "$id": "330", + "$id": "686", "kind": "basic", "name": "get", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "331", + "$id": "687", "name": "get", "resourceName": "XmlErrorValue", "accessibility": "public", "parameters": [ { - "$id": "332", + "$id": "688", "kind": "header", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "97" + "$ref": "206" }, "isApiVersion": false, "optional": false, @@ -5052,12 +10542,12 @@ "crossLanguageDefinitionId": "Payload.Xml.XmlErrorValue.get.accept", "methodParameterSegments": [ { - "$id": "333", + "$id": "689", "kind": "method", "name": "accept", "serializedName": "Accept", "type": { - "$ref": "97" + "$ref": "206" }, "location": "Header", "isApiVersion": false, @@ -5077,14 +10567,14 @@ 200 ], "bodyType": { - "$ref": "101" + "$ref": "210" }, "headers": [ { "name": "contentType", "nameInResponse": "content-type", "type": { - "$ref": "99" + "$ref": "208" } } ], @@ -5106,12 +10596,12 @@ }, "parameters": [ { - "$ref": "333" + "$ref": "689" } ], "response": { "type": { - "$ref": "101" + "$ref": "210" } }, "isOverride": false, @@ -5122,13 +10612,13 @@ ], "parameters": [ { - "$id": "334", + "$id": "690", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "335", + "$id": "691", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -5139,7 +10629,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "336", + "$id": "692", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -5157,7 +10647,7 @@ "crossLanguageDefinitionId": "Payload.Xml.XmlErrorValue", "apiVersions": [], "parent": { - "$ref": "157" + "$ref": "331" }, "isMultiServiceClient": false } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..f57ef66baf2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,43 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ResiliencyServiceDrivenClient": { + "type": "object", + "description": "Configuration for ResiliencyServiceDrivenClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "ServiceDeploymentVersion": { + "type": "string" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/resiliencyServiceDrivenClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "resiliencyServiceDrivenClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.sln deleted file mode 100644 index e9fab3c679c..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Resiliency.SrvDriven.V1", "src\Resiliency.SrvDriven.V1.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.slnx new file mode 100644 index 00000000000..56042aef846 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/Resiliency.SrvDriven.V1.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClient.cs index d5a954479be..0d010ec8ea0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class ResiliencyServiceDrivenClient public ResiliencyServiceDrivenClient(Uri endpoint, string serviceDeploymentVersion) : this(endpoint, serviceDeploymentVersion, new ResiliencyServiceDrivenClientOptions()) => throw null; - public ResiliencyServiceDrivenClient(Uri endpoint, string serviceDeploymentVersion, ResiliencyServiceDrivenClientOptions options) => throw null; + internal ResiliencyServiceDrivenClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, string serviceDeploymentVersion, ResiliencyServiceDrivenClientOptions options) => throw null; + + public ResiliencyServiceDrivenClient(Uri endpoint, string serviceDeploymentVersion, ResiliencyServiceDrivenClientOptions options) : this(null, endpoint, serviceDeploymentVersion, options) => throw null; + + [Experimental("SCME0002")] + public ResiliencyServiceDrivenClient(ResiliencyServiceDrivenClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.ServiceDeploymentVersion, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClientOptions.cs index d5dd7cc38e0..2612bc02b39 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Resiliency.ServiceDriven { @@ -12,6 +14,9 @@ public partial class ResiliencyServiceDrivenClientOptions : ClientPipelineOption public ResiliencyServiceDrivenClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal ResiliencyServiceDrivenClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// Version 1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClientSettings.cs new file mode 100644 index 00000000000..dd1dd517226 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Generated/ResiliencyServiceDrivenClientSettings.cs @@ -0,0 +1,35 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Resiliency.ServiceDriven +{ + [Experimental("SCME0002")] + public partial class ResiliencyServiceDrivenClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public string ServiceDeploymentVersion + { + get => throw null; + set => throw null; + } + + public ResiliencyServiceDrivenClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj index e4cec94ef68..158f68bb914 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v1/src/Resiliency.SrvDriven.V1.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..f57ef66baf2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,43 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ResiliencyServiceDrivenClient": { + "type": "object", + "description": "Configuration for ResiliencyServiceDrivenClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "ServiceDeploymentVersion": { + "type": "string" + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/resiliencyServiceDrivenClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "resiliencyServiceDrivenClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.sln deleted file mode 100644 index 0524ea8139f..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Resiliency.SrvDriven.V2", "src\Resiliency.SrvDriven.V2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.slnx new file mode 100644 index 00000000000..5efaf07728d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/Resiliency.SrvDriven.V2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClient.cs index d99259d205c..59d7160e347 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class ResiliencyServiceDrivenClient public ResiliencyServiceDrivenClient(Uri endpoint, string serviceDeploymentVersion) : this(endpoint, serviceDeploymentVersion, new ResiliencyServiceDrivenClientOptions()) => throw null; - public ResiliencyServiceDrivenClient(Uri endpoint, string serviceDeploymentVersion, ResiliencyServiceDrivenClientOptions options) => throw null; + internal ResiliencyServiceDrivenClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, string serviceDeploymentVersion, ResiliencyServiceDrivenClientOptions options) => throw null; + + public ResiliencyServiceDrivenClient(Uri endpoint, string serviceDeploymentVersion, ResiliencyServiceDrivenClientOptions options) : this(null, endpoint, serviceDeploymentVersion, options) => throw null; + + [Experimental("SCME0002")] + public ResiliencyServiceDrivenClient(ResiliencyServiceDrivenClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.ServiceDeploymentVersion, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClientOptions.cs index 233945b82e3..b4d13f3a8f5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Resiliency.ServiceDriven { @@ -12,6 +14,9 @@ public partial class ResiliencyServiceDrivenClientOptions : ClientPipelineOption public ResiliencyServiceDrivenClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal ResiliencyServiceDrivenClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// Version 1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClientSettings.cs new file mode 100644 index 00000000000..dd1dd517226 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Generated/ResiliencyServiceDrivenClientSettings.cs @@ -0,0 +1,35 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Resiliency.ServiceDriven +{ + [Experimental("SCME0002")] + public partial class ResiliencyServiceDrivenClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public string ServiceDeploymentVersion + { + get => throw null; + set => throw null; + } + + public ResiliencyServiceDrivenClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj index f75c3d5e0d3..30dae266b12 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/resiliency/srv-driven/v2/src/Resiliency.SrvDriven.V2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..7afeb875915 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "StatusCodeRangeClient": { + "type": "object", + "description": "Configuration for StatusCodeRangeClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/statusCodeRangeClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "statusCodeRangeClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.sln deleted file mode 100644 index 7327ca20d74..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Response.StatusCodeRange", "src\Response.StatusCodeRange.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.slnx new file mode 100644 index 00000000000..1010b4148ae --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/Response.StatusCodeRange.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClient.cs index 68220900e03..1cf6258e804 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class StatusCodeRangeClient { public StatusCodeRangeClient() : this(new Uri("http://localhost:3000"), new StatusCodeRangeClientOptions()) => throw null; - public StatusCodeRangeClient(Uri endpoint, StatusCodeRangeClientOptions options) => throw null; + internal StatusCodeRangeClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, StatusCodeRangeClientOptions options) => throw null; + + public StatusCodeRangeClient(Uri endpoint, StatusCodeRangeClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public StatusCodeRangeClient(StatusCodeRangeClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClientOptions.cs index 2433a12ddfd..6c81e4b3cb9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Response.StatusCodeRange { public partial class StatusCodeRangeClientOptions : ClientPipelineOptions { + public StatusCodeRangeClientOptions() => throw null; + + [Experimental("SCME0002")] + internal StatusCodeRangeClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClientSettings.cs new file mode 100644 index 00000000000..c08b681519a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Generated/StatusCodeRangeClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Response.StatusCodeRange +{ + [Experimental("SCME0002")] + public partial class StatusCodeRangeClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public StatusCodeRangeClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj index 9f14a610115..d28a8cefed3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/response/status-code-range/src/Response.StatusCodeRange.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..ff6cfbbd27c --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RoutesClient": { + "type": "object", + "description": "Configuration for RoutesClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/routesClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "routesClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.sln deleted file mode 100644 index 8f7573992ed..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Routes", "src\Routes.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.slnx new file mode 100644 index 00000000000..4d88eac466e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/Routes.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/InInterface.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/InInterface.cs index 2c68d8281b8..934018fdcc3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/InInterface.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/InInterface.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class InInterface { protected InInterface() => throw null; + internal InInterface(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Fixed(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParameters.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParameters.cs index 3e17767b7d8..305a607546a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParameters.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParameters.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -18,6 +19,8 @@ public partial class PathParameters { protected PathParameters() => throw null; + internal PathParameters(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult TemplateOnly(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansion.cs index b7d6a6cbc7c..a3daa8878cb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel.Primitives; using Routes._PathParameters.LabelExpansion.Explode; using Routes._PathParameters.LabelExpansion.Standard; @@ -12,6 +13,8 @@ public partial class PathParametersLabelExpansion { protected PathParametersLabelExpansion() => throw null; + internal PathParametersLabelExpansion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual PathParametersLabelExpansionStandard GetPathParametersLabelExpansionStandardClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionExplode.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionExplode.cs index 79470e680e1..d032c33fc38 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionExplode.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionExplode.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersLabelExpansionExplode { protected PathParametersLabelExpansionExplode() => throw null; + internal PathParametersLabelExpansionExplode(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionStandard.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionStandard.cs index 0b742d05724..f18f1e516cc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionStandard.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersLabelExpansionStandard.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersLabelExpansionStandard { protected PathParametersLabelExpansionStandard() => throw null; + internal PathParametersLabelExpansionStandard(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansion.cs index 6bf98190256..5c60d18f7bb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel.Primitives; using Routes._PathParameters.MatrixExpansion.Explode; using Routes._PathParameters.MatrixExpansion.Standard; @@ -12,6 +13,8 @@ public partial class PathParametersMatrixExpansion { protected PathParametersMatrixExpansion() => throw null; + internal PathParametersMatrixExpansion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual PathParametersMatrixExpansionStandard GetPathParametersMatrixExpansionStandardClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionExplode.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionExplode.cs index b92df406571..bf3f3e88d58 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionExplode.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionExplode.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersMatrixExpansionExplode { protected PathParametersMatrixExpansionExplode() => throw null; + internal PathParametersMatrixExpansionExplode(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionStandard.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionStandard.cs index d40c1696d15..165a76d190f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionStandard.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersMatrixExpansionStandard.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersMatrixExpansionStandard { protected PathParametersMatrixExpansionStandard() => throw null; + internal PathParametersMatrixExpansionStandard(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansion.cs index ec2f665c1a2..11bd31de479 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel.Primitives; using Routes._PathParameters.PathExpansion.Explode; using Routes._PathParameters.PathExpansion.Standard; @@ -12,6 +13,8 @@ public partial class PathParametersPathExpansion { protected PathParametersPathExpansion() => throw null; + internal PathParametersPathExpansion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual PathParametersPathExpansionStandard GetPathParametersPathExpansionStandardClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionExplode.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionExplode.cs index b7f10f1c6d4..e2368337641 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionExplode.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionExplode.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersPathExpansionExplode { protected PathParametersPathExpansionExplode() => throw null; + internal PathParametersPathExpansionExplode(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionStandard.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionStandard.cs index d58ca6fbc4d..8c63b0829fb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionStandard.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersPathExpansionStandard.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersPathExpansionStandard { protected PathParametersPathExpansionStandard() => throw null; + internal PathParametersPathExpansionStandard(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersReservedExpansion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersReservedExpansion.cs index 3becc3ca8f2..60f78bfde07 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersReservedExpansion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersReservedExpansion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class PathParametersReservedExpansion { protected PathParametersReservedExpansion() => throw null; + internal PathParametersReservedExpansion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Template(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansion.cs index cb3b2ce1c3a..87724df6d6d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel.Primitives; using Routes._PathParameters.SimpleExpansion.Explode; using Routes._PathParameters.SimpleExpansion.Standard; @@ -12,6 +13,8 @@ public partial class PathParametersSimpleExpansion { protected PathParametersSimpleExpansion() => throw null; + internal PathParametersSimpleExpansion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual PathParametersSimpleExpansionStandard GetPathParametersSimpleExpansionStandardClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionExplode.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionExplode.cs index 00c4d218a1c..2abcc233d4b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionExplode.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionExplode.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersSimpleExpansionExplode { protected PathParametersSimpleExpansionExplode() => throw null; + internal PathParametersSimpleExpansionExplode(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionStandard.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionStandard.cs index 63477a318ae..21f896bcdb3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionStandard.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/PathParametersSimpleExpansionStandard.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class PathParametersSimpleExpansionStandard { protected PathParametersSimpleExpansionStandard() => throw null; + internal PathParametersSimpleExpansionStandard(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParameters.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParameters.cs index 4ccfde73030..50f707d2cf0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParameters.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParameters.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -15,6 +16,8 @@ public partial class QueryParameters { protected QueryParameters() => throw null; + internal QueryParameters(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult TemplateOnly(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuation.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuation.cs index c1e1821e791..3aa640a00e5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuation.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuation.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel.Primitives; using Routes._QueryParameters.QueryContinuation.Explode; using Routes._QueryParameters.QueryContinuation.Standard; @@ -12,6 +13,8 @@ public partial class QueryParametersQueryContinuation { protected QueryParametersQueryContinuation() => throw null; + internal QueryParametersQueryContinuation(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual QueryParametersQueryContinuationStandard GetQueryParametersQueryContinuationStandardClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationExplode.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationExplode.cs index b9a3cb696d4..ca911b55cb3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationExplode.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationExplode.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class QueryParametersQueryContinuationExplode { protected QueryParametersQueryContinuationExplode() => throw null; + internal QueryParametersQueryContinuationExplode(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationStandard.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationStandard.cs index 679ca546a46..828f03e49f2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationStandard.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryContinuationStandard.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class QueryParametersQueryContinuationStandard { protected QueryParametersQueryContinuationStandard() => throw null; + internal QueryParametersQueryContinuationStandard(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansion.cs index 7038262cc30..4d2b16565c0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel.Primitives; using Routes._QueryParameters.QueryExpansion.Explode; using Routes._QueryParameters.QueryExpansion.Standard; @@ -12,6 +13,8 @@ public partial class QueryParametersQueryExpansion { protected QueryParametersQueryExpansion() => throw null; + internal QueryParametersQueryExpansion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual QueryParametersQueryExpansionStandard GetQueryParametersQueryExpansionStandardClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionExplode.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionExplode.cs index cedde7fe6aa..e8989434a9d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionExplode.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionExplode.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class QueryParametersQueryExpansionExplode { protected QueryParametersQueryExpansionExplode() => throw null; + internal QueryParametersQueryExpansionExplode(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionStandard.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionStandard.cs index dd88da3b509..9566e4d25f8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionStandard.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/QueryParametersQueryExpansionStandard.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class QueryParametersQueryExpansionStandard { protected QueryParametersQueryExpansionStandard() => throw null; + internal QueryParametersQueryExpansionStandard(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Primitive(string @param, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClient.cs index 7b3edc83edf..8e156cfd6b7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using Routes._PathParameters; @@ -16,7 +17,12 @@ public partial class RoutesClient { public RoutesClient() : this(new Uri("http://localhost:3000"), new RoutesClientOptions()) => throw null; - public RoutesClient(Uri endpoint, RoutesClientOptions options) => throw null; + internal RoutesClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RoutesClientOptions options) => throw null; + + public RoutesClient(Uri endpoint, RoutesClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RoutesClient(RoutesClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClientOptions.cs index f81efdb4ab9..7baddfceeb4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Routes { public partial class RoutesClientOptions : ClientPipelineOptions { + public RoutesClientOptions() => throw null; + + [Experimental("SCME0002")] + internal RoutesClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClientSettings.cs new file mode 100644 index 00000000000..8b389ba6227 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Generated/RoutesClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Routes +{ + [Experimental("SCME0002")] + public partial class RoutesClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RoutesClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj index 4ed2ba74989..4b2d88403c3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/routes/src/Routes.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..9410b7bf43e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "JsonClient": { + "type": "object", + "description": "Configuration for JsonClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/jsonClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "jsonClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.sln deleted file mode 100644 index 54a1151dc1c..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Serialization.EncodedName.Json", "src\Serialization.EncodedName.Json.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.slnx new file mode 100644 index 00000000000..1ae355b1776 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/Serialization.EncodedName.Json.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClient.cs index 0e13b569cc6..5501186e310 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using Serialization.EncodedName.Json._Property; namespace Serialization.EncodedName.Json @@ -12,7 +13,12 @@ public partial class JsonClient { public JsonClient() : this(new Uri("http://localhost:3000"), new JsonClientOptions()) => throw null; - public JsonClient(Uri endpoint, JsonClientOptions options) => throw null; + internal JsonClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, JsonClientOptions options) => throw null; + + public JsonClient(Uri endpoint, JsonClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public JsonClient(JsonClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClientOptions.cs index bc3159f77db..9ecf64e286d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Serialization.EncodedName.Json { public partial class JsonClientOptions : ClientPipelineOptions { + public JsonClientOptions() => throw null; + + [Experimental("SCME0002")] + internal JsonClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClientSettings.cs new file mode 100644 index 00000000000..ae2ecca1041 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/JsonClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Serialization.EncodedName.Json +{ + [Experimental("SCME0002")] + public partial class JsonClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public JsonClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/Property.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/Property.cs index 2a1aea1756d..67558d68030 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/Property.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Generated/Property.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Property { protected Property() => throw null; + internal Property(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Send(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj index 1109271f253..903f9748d28 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/serialization/encoded-name/json/src/Serialization.EncodedName.Json.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..7d107613b60 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "NotDefinedClient": { + "type": "object", + "description": "Configuration for NotDefinedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/notDefinedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "notDefinedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.sln deleted file mode 100644 index 9a546ba5674..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Endpoint.NotDefined", "src\Server.Endpoint.NotDefined.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.slnx new file mode 100644 index 00000000000..b87aff7fda7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/Server.Endpoint.NotDefined.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClient.cs index c9b371e3911..a503b59d200 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class NotDefinedClient public NotDefinedClient(Uri endpoint) : this(endpoint, new NotDefinedClientOptions()) => throw null; - public NotDefinedClient(Uri endpoint, NotDefinedClientOptions options) => throw null; + internal NotDefinedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, NotDefinedClientOptions options) => throw null; + + public NotDefinedClient(Uri endpoint, NotDefinedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public NotDefinedClient(NotDefinedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClientOptions.cs index 7621f589fdc..4b087e11457 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Server.Endpoint.NotDefined { public partial class NotDefinedClientOptions : ClientPipelineOptions { + public NotDefinedClientOptions() => throw null; + + [Experimental("SCME0002")] + internal NotDefinedClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClientSettings.cs new file mode 100644 index 00000000000..fd6f73d8ae7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Generated/NotDefinedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Server.Endpoint.NotDefined +{ + [Experimental("SCME0002")] + public partial class NotDefinedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public NotDefinedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj index e5fc04dddb4..51950f9c6bc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/endpoint/not-defined/src/Server.Endpoint.NotDefined.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..b1cb57736dd --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "MultipleClient": { + "type": "object", + "description": "Configuration for MultipleClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/multipleClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "multipleClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.sln deleted file mode 100644 index dad077f1c7b..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Path.Multiple", "src\Server.Path.Multiple.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.slnx new file mode 100644 index 00000000000..9c32b983c95 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/Server.Path.Multiple.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClient.cs index cfb066bf912..10ba60fb3a1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class MultipleClient public MultipleClient(Uri endpoint) : this(endpoint, new MultipleClientOptions()) => throw null; - public MultipleClient(Uri endpoint, MultipleClientOptions options) => throw null; + internal MultipleClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, MultipleClientOptions options) => throw null; + + public MultipleClient(Uri endpoint, MultipleClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public MultipleClient(MultipleClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClientOptions.cs index 3c63332cfb3..caa3e5d7a43 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Server.Path.Multiple { @@ -12,6 +14,9 @@ public partial class MultipleClientOptions : ClientPipelineOptions public MultipleClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal MultipleClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// Version 1.0. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClientSettings.cs new file mode 100644 index 00000000000..6f63f3d49bd --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Generated/MultipleClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Server.Path.Multiple +{ + [Experimental("SCME0002")] + public partial class MultipleClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public MultipleClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj index 76a9c5f0f75..60f9090a352 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/multiple/src/Server.Path.Multiple.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..8aaa89bcb3d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "SingleClient": { + "type": "object", + "description": "Configuration for SingleClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/singleClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "singleClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.sln deleted file mode 100644 index 1cf6ef80cdd..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Path.Single", "src\Server.Path.Single.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.slnx new file mode 100644 index 00000000000..2382d3e50bf --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/Server.Path.Single.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClient.cs index 25d2f13eb10..3bc250e9775 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class SingleClient public SingleClient(Uri endpoint) : this(endpoint, new SingleClientOptions()) => throw null; - public SingleClient(Uri endpoint, SingleClientOptions options) => throw null; + internal SingleClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, SingleClientOptions options) => throw null; + + public SingleClient(Uri endpoint, SingleClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public SingleClient(SingleClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClientOptions.cs index 2bf92e1e4dd..2437f3efb2e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Server.Path.Single { public partial class SingleClientOptions : ClientPipelineOptions { + public SingleClientOptions() => throw null; + + [Experimental("SCME0002")] + internal SingleClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClientSettings.cs new file mode 100644 index 00000000000..62fc1c47174 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Generated/SingleClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Server.Path.Single +{ + [Experimental("SCME0002")] + public partial class SingleClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public SingleClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj index 8b61759c74d..5712462d9a7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/path/single/src/Server.Path.Single.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..d6bfe467432 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "NotVersionedClient": { + "type": "object", + "description": "Configuration for NotVersionedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/notVersionedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "notVersionedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.sln deleted file mode 100644 index e1f93613c0e..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Versions.NotVersioned", "src\Server.Versions.NotVersioned.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.slnx new file mode 100644 index 00000000000..9fa3bc7f97b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/Server.Versions.NotVersioned.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClient.cs index 6fb0abe3bce..66b8752fa2d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class NotVersionedClient public NotVersionedClient(Uri endpoint) : this(endpoint, new NotVersionedClientOptions()) => throw null; - public NotVersionedClient(Uri endpoint, NotVersionedClientOptions options) => throw null; + internal NotVersionedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, NotVersionedClientOptions options) => throw null; + + public NotVersionedClient(Uri endpoint, NotVersionedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public NotVersionedClient(NotVersionedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClientOptions.cs index f08093acac4..d799204f298 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Server.Versions.NotVersioned { public partial class NotVersionedClientOptions : ClientPipelineOptions { + public NotVersionedClientOptions() => throw null; + + [Experimental("SCME0002")] + internal NotVersionedClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClientSettings.cs new file mode 100644 index 00000000000..f090470d82a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Generated/NotVersionedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Server.Versions.NotVersioned +{ + [Experimental("SCME0002")] + public partial class NotVersionedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public NotVersionedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj index d7cc34212bd..54f04ffde69 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/not-versioned/src/Server.Versions.NotVersioned.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..d12452e9f66 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "VersionedClient": { + "type": "object", + "description": "Configuration for VersionedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/versionedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "versionedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.sln deleted file mode 100644 index d42b1f59e79..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Versions.Versioned", "src\Server.Versions.Versioned.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.slnx new file mode 100644 index 00000000000..c30fdcb225b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/Server.Versions.Versioned.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClient.cs index 01e9d2e3224..fc5d889c517 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class VersionedClient public VersionedClient(Uri endpoint) : this(endpoint, new VersionedClientOptions()) => throw null; - public VersionedClient(Uri endpoint, VersionedClientOptions options) => throw null; + internal VersionedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, VersionedClientOptions options) => throw null; + + public VersionedClient(Uri endpoint, VersionedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public VersionedClient(VersionedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClientOptions.cs index 6caa7e3df01..ad90f69c8ee 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Server.Versions.Versioned { @@ -12,6 +14,9 @@ public partial class VersionedClientOptions : ClientPipelineOptions public VersionedClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal VersionedClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version 2022-12-01-preview. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClientSettings.cs new file mode 100644 index 00000000000..b9d2f526719 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Generated/VersionedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Server.Versions.Versioned +{ + [Experimental("SCME0002")] + public partial class VersionedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public VersionedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj index 53926118c32..848695e24eb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/server/versions/versioned/src/Server.Versions.Versioned.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..830040d350d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ConditionalRequestClient": { + "type": "object", + "description": "Configuration for ConditionalRequestClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/conditionalRequestClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "conditionalRequestClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.sln deleted file mode 100644 index 4138b4362b7..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpecialHeaders.ConditionalRequest", "src\SpecialHeaders.ConditionalRequest.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.slnx new file mode 100644 index 00000000000..ce9c39435f6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/SpecialHeaders.ConditionalRequest.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClient.cs index 0e54b80f164..cac754cfedb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class ConditionalRequestClient { public ConditionalRequestClient() : this(new Uri("http://localhost:3000"), new ConditionalRequestClientOptions()) => throw null; - public ConditionalRequestClient(Uri endpoint, ConditionalRequestClientOptions options) => throw null; + internal ConditionalRequestClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ConditionalRequestClientOptions options) => throw null; + + public ConditionalRequestClient(Uri endpoint, ConditionalRequestClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ConditionalRequestClient(ConditionalRequestClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClientOptions.cs index 924fd0111b6..95d658caefb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace SpecialHeaders.ConditionalRequest { public partial class ConditionalRequestClientOptions : ClientPipelineOptions { + public ConditionalRequestClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ConditionalRequestClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClientSettings.cs new file mode 100644 index 00000000000..875c80b7101 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/Generated/ConditionalRequestClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace SpecialHeaders.ConditionalRequest +{ + [Experimental("SCME0002")] + public partial class ConditionalRequestClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ConditionalRequestClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj index 85c62ee0300..ae5b66d8100 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/conditional-request/src/SpecialHeaders.ConditionalRequest.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..f19ad45f5ae --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RepeatabilityClient": { + "type": "object", + "description": "Configuration for RepeatabilityClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/repeatabilityClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "repeatabilityClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.sln deleted file mode 100644 index 9d1e65f4868..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpecialHeaders.Repeatability", "src\SpecialHeaders.Repeatability.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.slnx new file mode 100644 index 00000000000..1ea785b46c4 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/SpecialHeaders.Repeatability.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClient.cs index 325865ab679..cff3310bcef 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class RepeatabilityClient { public RepeatabilityClient() : this(new Uri("http://localhost:3000"), new RepeatabilityClientOptions()) => throw null; - public RepeatabilityClient(Uri endpoint, RepeatabilityClientOptions options) => throw null; + internal RepeatabilityClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RepeatabilityClientOptions options) => throw null; + + public RepeatabilityClient(Uri endpoint, RepeatabilityClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RepeatabilityClient(RepeatabilityClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClientOptions.cs index e41461a9acc..fb088f71dbb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace SpecialHeaders.Repeatability { public partial class RepeatabilityClientOptions : ClientPipelineOptions { + public RepeatabilityClientOptions() => throw null; + + [Experimental("SCME0002")] + internal RepeatabilityClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClientSettings.cs new file mode 100644 index 00000000000..3a295325198 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/Generated/RepeatabilityClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace SpecialHeaders.Repeatability +{ + [Experimental("SCME0002")] + public partial class RepeatabilityClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RepeatabilityClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj index 2e8d9d974d3..4a41adcefe4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-headers/repeatability/src/SpecialHeaders.Repeatability.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..dc19afb58df --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "SpecialWordsClient": { + "type": "object", + "description": "Configuration for SpecialWordsClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/specialWordsClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "specialWordsClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.sln deleted file mode 100644 index c9813083010..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpecialWords", "src\SpecialWords.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.slnx new file mode 100644 index 00000000000..4c7bbf2abf1 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/SpecialWords.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/ExtensibleStrings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/ExtensibleStrings.cs new file mode 100644 index 00000000000..e3eccdf112f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/ExtensibleStrings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel; +using System.ClientModel.Primitives; +using System.Threading; +using System.Threading.Tasks; + +namespace SpecialWords._ExtensibleStrings +{ + public partial class ExtensibleStrings + { + protected ExtensibleStrings() => throw null; + + internal ExtensibleStrings(ClientPipeline pipeline, Uri endpoint) => throw null; + + public ClientPipeline Pipeline => throw null; + + public virtual ClientResult PutExtensibleStringValue(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual Task PutExtensibleStringValueAsync(BinaryContent content, RequestOptions options = null) => throw null; + + public virtual ClientResult PutExtensibleStringValue(ExtensibleString body, CancellationToken cancellationToken = default) => throw null; + + public virtual Task> PutExtensibleStringValueAsync(ExtensibleString body, CancellationToken cancellationToken = default) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/ModelProperties.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/ModelProperties.cs index 76f4b999169..145be0ededd 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/ModelProperties.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/ModelProperties.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ModelProperties { protected ModelProperties() => throw null; + internal ModelProperties(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult SameAsModel(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Models.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Models.cs index af9e99fa778..ec89fe4d3f7 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Models.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Models.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Models { protected Models() => throw null; + internal Models(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult WithAnd(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Models/ExtensibleString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Models/ExtensibleString.cs new file mode 100644 index 00000000000..624c939fe34 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Models/ExtensibleString.cs @@ -0,0 +1,98 @@ +// + +#nullable disable + +using System; +using System.ComponentModel; + +namespace SpecialWords._ExtensibleStrings +{ + public readonly partial struct ExtensibleString : IEquatable + { + public ExtensibleString(string value) => throw null; + + public static ExtensibleString And => throw null; + + public static ExtensibleString As => throw null; + + public static ExtensibleString Assert => throw null; + + public static ExtensibleString Async => throw null; + + public static ExtensibleString Await => throw null; + + public static ExtensibleString Break => throw null; + + public static ExtensibleString Class => throw null; + + public static ExtensibleString Constructor => throw null; + + public static ExtensibleString Continue => throw null; + + public static ExtensibleString Def => throw null; + + public static ExtensibleString Del => throw null; + + public static ExtensibleString Elif => throw null; + + public static ExtensibleString Else => throw null; + + public static ExtensibleString Except => throw null; + + public static ExtensibleString Exec => throw null; + + public static ExtensibleString Finally => throw null; + + public static ExtensibleString For => throw null; + + public static ExtensibleString From => throw null; + + public static ExtensibleString Global => throw null; + + public static ExtensibleString If => throw null; + + public static ExtensibleString Import => throw null; + + public static ExtensibleString In => throw null; + + public static ExtensibleString Is => throw null; + + public static ExtensibleString Lambda => throw null; + + public static ExtensibleString Not => throw null; + + public static ExtensibleString Or => throw null; + + public static ExtensibleString Pass => throw null; + + public static ExtensibleString Raise => throw null; + + public static ExtensibleString Return => throw null; + + public static ExtensibleString Try => throw null; + + public static ExtensibleString While => throw null; + + public static ExtensibleString With => throw null; + + public static ExtensibleString Yield => throw null; + + public static bool operator ==(ExtensibleString left, ExtensibleString right) => throw null; + + public static bool operator !=(ExtensibleString left, ExtensibleString right) => throw null; + + public static implicit operator ExtensibleString(string value) => throw null; + + public static implicit operator ExtensibleString?(string value) => throw null; + + [EditorBrowsable(EditorBrowsableState.Never)] + public override bool Equals(object obj) => throw null; + + public bool Equals(ExtensibleString other) => throw null; + + [EditorBrowsable(EditorBrowsableState.Never)] + public override int GetHashCode() => throw null; + + public override string ToString() => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Operations.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Operations.cs index bb367d9e0e7..1dfa7cdcfbe 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Operations.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Operations.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Operations { protected Operations() => throw null; + internal Operations(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult And(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Parameters.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Parameters.cs index a489749d1a9..fb1b60d7ad1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Parameters.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/Parameters.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Parameters { protected Parameters() => throw null; + internal Parameters(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult WithAnd(string @and, RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClient.cs index 7d18528a04e..03609a93376 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClient.cs @@ -4,6 +4,8 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using SpecialWords._ExtensibleStrings; using SpecialWords._ModelProperties; using SpecialWords._Models; @@ -13,7 +15,12 @@ public partial class SpecialWordsClient { public SpecialWordsClient() : this(new Uri("http://localhost:3000"), new SpecialWordsClientOptions()) => throw null; - public SpecialWordsClient(Uri endpoint, SpecialWordsClientOptions options) => throw null; + internal SpecialWordsClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, SpecialWordsClientOptions options) => throw null; + + public SpecialWordsClient(Uri endpoint, SpecialWordsClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public SpecialWordsClient(SpecialWordsClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; @@ -21,6 +28,8 @@ public partial class SpecialWordsClient public virtual ModelProperties GetModelPropertiesClient() => throw null; + public virtual ExtensibleStrings GetExtensibleStringsClient() => throw null; + public virtual Operations GetOperationsClient() => throw null; public virtual Parameters GetParametersClient() => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClientOptions.cs index 51d0271c810..62880034a3c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace SpecialWords { public partial class SpecialWordsClientOptions : ClientPipelineOptions { + public SpecialWordsClientOptions() => throw null; + + [Experimental("SCME0002")] + internal SpecialWordsClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClientSettings.cs new file mode 100644 index 00000000000..28c09cdfd51 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/Generated/SpecialWordsClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace SpecialWords +{ + [Experimental("SCME0002")] + public partial class SpecialWordsClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public SpecialWordsClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj index dcda0f46983..c9c5e6ea116 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/src/SpecialWords.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/tspCodeModel.json index e66645d5b9d..faf70c73089 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/special-words/tspCodeModel.json @@ -1,16 +1,467 @@ { "name": "SpecialWords", "apiVersions": [], - "enums": [], - "constants": [ + "enums": [ { "$id": "1", + "kind": "enum", + "name": "ExtensibleString", + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.ExtensibleString", + "valueType": { + "$id": "2", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "values": [ + { + "$id": "3", + "kind": "enumvalue", + "name": "and", + "value": "and", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "4", + "kind": "enumvalue", + "name": "as", + "value": "as", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "5", + "kind": "enumvalue", + "name": "assert", + "value": "assert", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "6", + "kind": "enumvalue", + "name": "async", + "value": "async", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "7", + "kind": "enumvalue", + "name": "await", + "value": "await", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "8", + "kind": "enumvalue", + "name": "break", + "value": "break", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "9", + "kind": "enumvalue", + "name": "class", + "value": "class", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "10", + "kind": "enumvalue", + "name": "constructor", + "value": "constructor", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "11", + "kind": "enumvalue", + "name": "continue", + "value": "continue", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "12", + "kind": "enumvalue", + "name": "def", + "value": "def", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "13", + "kind": "enumvalue", + "name": "del", + "value": "del", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "14", + "kind": "enumvalue", + "name": "elif", + "value": "elif", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "15", + "kind": "enumvalue", + "name": "else", + "value": "else", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "16", + "kind": "enumvalue", + "name": "except", + "value": "except", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "17", + "kind": "enumvalue", + "name": "exec", + "value": "exec", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "18", + "kind": "enumvalue", + "name": "finally", + "value": "finally", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "19", + "kind": "enumvalue", + "name": "for", + "value": "for", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "20", + "kind": "enumvalue", + "name": "from", + "value": "from", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "21", + "kind": "enumvalue", + "name": "global", + "value": "global", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "22", + "kind": "enumvalue", + "name": "if", + "value": "if", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "23", + "kind": "enumvalue", + "name": "import", + "value": "import", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "24", + "kind": "enumvalue", + "name": "in", + "value": "in", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "25", + "kind": "enumvalue", + "name": "is", + "value": "is", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "26", + "kind": "enumvalue", + "name": "lambda", + "value": "lambda", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "27", + "kind": "enumvalue", + "name": "not", + "value": "not", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "28", + "kind": "enumvalue", + "name": "or", + "value": "or", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "29", + "kind": "enumvalue", + "name": "pass", + "value": "pass", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "30", + "kind": "enumvalue", + "name": "raise", + "value": "raise", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "31", + "kind": "enumvalue", + "name": "return", + "value": "return", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "32", + "kind": "enumvalue", + "name": "try", + "value": "try", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "33", + "kind": "enumvalue", + "name": "while", + "value": "while", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "34", + "kind": "enumvalue", + "name": "with", + "value": "with", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + }, + { + "$id": "35", + "kind": "enumvalue", + "name": "yield", + "value": "yield", + "valueType": { + "$ref": "2" + }, + "enumType": { + "$ref": "1" + }, + "decorators": [] + } + ], + "namespace": "SpecialWords.ExtensibleStrings", + "doc": "Verify enum member names that are special words using extensible enum (union).", + "isFixed": false, + "isFlags": false, + "usage": "Input,Output,Json", + "decorators": [] + } + ], + "constants": [ + { + "$id": "36", "kind": "constant", "name": "withAndContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "2", + "$id": "37", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -20,13 +471,13 @@ "decorators": [] }, { - "$id": "3", + "$id": "38", "kind": "constant", "name": "withAsContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "4", + "$id": "39", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -36,13 +487,13 @@ "decorators": [] }, { - "$id": "5", + "$id": "40", "kind": "constant", "name": "withAssertContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "6", + "$id": "41", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -52,13 +503,13 @@ "decorators": [] }, { - "$id": "7", + "$id": "42", "kind": "constant", "name": "withAsyncContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "8", + "$id": "43", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -68,13 +519,13 @@ "decorators": [] }, { - "$id": "9", + "$id": "44", "kind": "constant", "name": "withAwaitContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "10", + "$id": "45", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -84,13 +535,13 @@ "decorators": [] }, { - "$id": "11", + "$id": "46", "kind": "constant", "name": "withBreakContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "12", + "$id": "47", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -100,13 +551,13 @@ "decorators": [] }, { - "$id": "13", + "$id": "48", "kind": "constant", "name": "withClassContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "14", + "$id": "49", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -116,13 +567,13 @@ "decorators": [] }, { - "$id": "15", + "$id": "50", "kind": "constant", "name": "withConstructorContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "16", + "$id": "51", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -132,13 +583,13 @@ "decorators": [] }, { - "$id": "17", + "$id": "52", "kind": "constant", "name": "withContinueContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "18", + "$id": "53", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -148,13 +599,13 @@ "decorators": [] }, { - "$id": "19", + "$id": "54", "kind": "constant", "name": "withDefContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "20", + "$id": "55", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -164,13 +615,13 @@ "decorators": [] }, { - "$id": "21", + "$id": "56", "kind": "constant", "name": "withDelContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "22", + "$id": "57", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -180,13 +631,13 @@ "decorators": [] }, { - "$id": "23", + "$id": "58", "kind": "constant", "name": "withElifContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "24", + "$id": "59", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -196,13 +647,13 @@ "decorators": [] }, { - "$id": "25", + "$id": "60", "kind": "constant", "name": "withElseContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "26", + "$id": "61", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -212,13 +663,13 @@ "decorators": [] }, { - "$id": "27", + "$id": "62", "kind": "constant", "name": "withExceptContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "28", + "$id": "63", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -228,13 +679,13 @@ "decorators": [] }, { - "$id": "29", + "$id": "64", "kind": "constant", "name": "withExecContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "30", + "$id": "65", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -244,13 +695,13 @@ "decorators": [] }, { - "$id": "31", + "$id": "66", "kind": "constant", "name": "withFinallyContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "32", + "$id": "67", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -260,13 +711,13 @@ "decorators": [] }, { - "$id": "33", + "$id": "68", "kind": "constant", "name": "withForContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "34", + "$id": "69", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -276,13 +727,13 @@ "decorators": [] }, { - "$id": "35", + "$id": "70", "kind": "constant", "name": "withFromContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "36", + "$id": "71", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -292,13 +743,13 @@ "decorators": [] }, { - "$id": "37", + "$id": "72", "kind": "constant", "name": "withGlobalContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "38", + "$id": "73", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -308,13 +759,13 @@ "decorators": [] }, { - "$id": "39", + "$id": "74", "kind": "constant", "name": "withIfContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "40", + "$id": "75", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -324,13 +775,13 @@ "decorators": [] }, { - "$id": "41", + "$id": "76", "kind": "constant", "name": "withImportContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "42", + "$id": "77", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -340,13 +791,13 @@ "decorators": [] }, { - "$id": "43", + "$id": "78", "kind": "constant", "name": "withInContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "44", + "$id": "79", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -356,13 +807,13 @@ "decorators": [] }, { - "$id": "45", + "$id": "80", "kind": "constant", "name": "withIsContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "46", + "$id": "81", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -372,13 +823,13 @@ "decorators": [] }, { - "$id": "47", + "$id": "82", "kind": "constant", "name": "withLambdaContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "48", + "$id": "83", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -388,13 +839,13 @@ "decorators": [] }, { - "$id": "49", + "$id": "84", "kind": "constant", "name": "withNotContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "50", + "$id": "85", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -404,13 +855,13 @@ "decorators": [] }, { - "$id": "51", + "$id": "86", "kind": "constant", "name": "withOrContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "52", + "$id": "87", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -420,13 +871,13 @@ "decorators": [] }, { - "$id": "53", + "$id": "88", "kind": "constant", "name": "withPassContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "54", + "$id": "89", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -436,13 +887,13 @@ "decorators": [] }, { - "$id": "55", + "$id": "90", "kind": "constant", "name": "withRaiseContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "56", + "$id": "91", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -452,13 +903,13 @@ "decorators": [] }, { - "$id": "57", + "$id": "92", "kind": "constant", "name": "withReturnContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "58", + "$id": "93", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -468,13 +919,13 @@ "decorators": [] }, { - "$id": "59", + "$id": "94", "kind": "constant", "name": "withTryContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "60", + "$id": "95", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -484,13 +935,13 @@ "decorators": [] }, { - "$id": "61", + "$id": "96", "kind": "constant", "name": "withWhileContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "62", + "$id": "97", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -500,13 +951,13 @@ "decorators": [] }, { - "$id": "63", + "$id": "98", "kind": "constant", "name": "withWithContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "64", + "$id": "99", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -516,13 +967,13 @@ "decorators": [] }, { - "$id": "65", + "$id": "100", "kind": "constant", "name": "withYieldContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "66", + "$id": "101", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -532,13 +983,13 @@ "decorators": [] }, { - "$id": "67", + "$id": "102", "kind": "constant", "name": "sameAsModelContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "68", + "$id": "103", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -548,13 +999,13 @@ "decorators": [] }, { - "$id": "69", + "$id": "104", "kind": "constant", "name": "dictMethodsContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "70", + "$id": "105", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -564,13 +1015,77 @@ "decorators": [] }, { - "$id": "71", + "$id": "106", "kind": "constant", "name": "withListContentType", "namespace": "", "usage": "None", "valueType": { - "$id": "72", + "$id": "107", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/json", + "decorators": [] + }, + { + "$id": "108", + "kind": "constant", + "name": "PutExtensibleStringValueRequestContentType", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "109", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/json", + "decorators": [] + }, + { + "$id": "110", + "kind": "constant", + "name": "PutExtensibleStringValueRequestContentType1", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "111", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/json", + "decorators": [] + }, + { + "$id": "112", + "kind": "constant", + "name": "putExtensibleStringValueContentType", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "113", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string", + "decorators": [] + }, + "value": "application/json", + "decorators": [] + }, + { + "$id": "114", + "kind": "constant", + "name": "PutExtensibleStringValueRequestContentType2", + "namespace": "", + "usage": "None", + "valueType": { + "$id": "115", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -582,7 +1097,7 @@ ], "models": [ { - "$id": "73", + "$id": "116", "kind": "model", "name": "and", "namespace": "SpecialWords.Models", @@ -596,12 +1111,12 @@ }, "properties": [ { - "$id": "74", + "$id": "117", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "75", + "$id": "118", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -623,7 +1138,7 @@ ] }, { - "$id": "76", + "$id": "119", "kind": "model", "name": "as", "namespace": "SpecialWords.Models", @@ -637,12 +1152,12 @@ }, "properties": [ { - "$id": "77", + "$id": "120", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "78", + "$id": "121", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -664,7 +1179,7 @@ ] }, { - "$id": "79", + "$id": "122", "kind": "model", "name": "assert", "namespace": "SpecialWords.Models", @@ -678,12 +1193,12 @@ }, "properties": [ { - "$id": "80", + "$id": "123", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "81", + "$id": "124", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -705,7 +1220,7 @@ ] }, { - "$id": "82", + "$id": "125", "kind": "model", "name": "async", "namespace": "SpecialWords.Models", @@ -719,12 +1234,12 @@ }, "properties": [ { - "$id": "83", + "$id": "126", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "84", + "$id": "127", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -746,7 +1261,7 @@ ] }, { - "$id": "85", + "$id": "128", "kind": "model", "name": "await", "namespace": "SpecialWords.Models", @@ -760,12 +1275,12 @@ }, "properties": [ { - "$id": "86", + "$id": "129", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "87", + "$id": "130", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -787,7 +1302,7 @@ ] }, { - "$id": "88", + "$id": "131", "kind": "model", "name": "break", "namespace": "SpecialWords.Models", @@ -801,12 +1316,12 @@ }, "properties": [ { - "$id": "89", + "$id": "132", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "90", + "$id": "133", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -828,7 +1343,7 @@ ] }, { - "$id": "91", + "$id": "134", "kind": "model", "name": "class", "namespace": "SpecialWords.Models", @@ -842,12 +1357,12 @@ }, "properties": [ { - "$id": "92", + "$id": "135", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "93", + "$id": "136", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -869,7 +1384,7 @@ ] }, { - "$id": "94", + "$id": "137", "kind": "model", "name": "constructor", "namespace": "SpecialWords.Models", @@ -883,12 +1398,12 @@ }, "properties": [ { - "$id": "95", + "$id": "138", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "96", + "$id": "139", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -910,7 +1425,7 @@ ] }, { - "$id": "97", + "$id": "140", "kind": "model", "name": "continue", "namespace": "SpecialWords.Models", @@ -924,12 +1439,12 @@ }, "properties": [ { - "$id": "98", + "$id": "141", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "99", + "$id": "142", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -951,7 +1466,7 @@ ] }, { - "$id": "100", + "$id": "143", "kind": "model", "name": "def", "namespace": "SpecialWords.Models", @@ -965,12 +1480,12 @@ }, "properties": [ { - "$id": "101", + "$id": "144", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "102", + "$id": "145", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -992,7 +1507,7 @@ ] }, { - "$id": "103", + "$id": "146", "kind": "model", "name": "del", "namespace": "SpecialWords.Models", @@ -1006,12 +1521,12 @@ }, "properties": [ { - "$id": "104", + "$id": "147", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "105", + "$id": "148", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1033,7 +1548,7 @@ ] }, { - "$id": "106", + "$id": "149", "kind": "model", "name": "elif", "namespace": "SpecialWords.Models", @@ -1047,12 +1562,12 @@ }, "properties": [ { - "$id": "107", + "$id": "150", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "108", + "$id": "151", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1074,7 +1589,7 @@ ] }, { - "$id": "109", + "$id": "152", "kind": "model", "name": "else", "namespace": "SpecialWords.Models", @@ -1088,12 +1603,12 @@ }, "properties": [ { - "$id": "110", + "$id": "153", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "111", + "$id": "154", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1115,7 +1630,7 @@ ] }, { - "$id": "112", + "$id": "155", "kind": "model", "name": "except", "namespace": "SpecialWords.Models", @@ -1129,12 +1644,12 @@ }, "properties": [ { - "$id": "113", + "$id": "156", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "114", + "$id": "157", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1156,7 +1671,7 @@ ] }, { - "$id": "115", + "$id": "158", "kind": "model", "name": "exec", "namespace": "SpecialWords.Models", @@ -1170,12 +1685,12 @@ }, "properties": [ { - "$id": "116", + "$id": "159", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "117", + "$id": "160", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1197,7 +1712,7 @@ ] }, { - "$id": "118", + "$id": "161", "kind": "model", "name": "finally", "namespace": "SpecialWords.Models", @@ -1211,12 +1726,12 @@ }, "properties": [ { - "$id": "119", + "$id": "162", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "120", + "$id": "163", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1238,7 +1753,7 @@ ] }, { - "$id": "121", + "$id": "164", "kind": "model", "name": "for", "namespace": "SpecialWords.Models", @@ -1252,12 +1767,12 @@ }, "properties": [ { - "$id": "122", + "$id": "165", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "123", + "$id": "166", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1279,7 +1794,7 @@ ] }, { - "$id": "124", + "$id": "167", "kind": "model", "name": "from", "namespace": "SpecialWords.Models", @@ -1293,12 +1808,12 @@ }, "properties": [ { - "$id": "125", + "$id": "168", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "126", + "$id": "169", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1320,7 +1835,7 @@ ] }, { - "$id": "127", + "$id": "170", "kind": "model", "name": "global", "namespace": "SpecialWords.Models", @@ -1334,12 +1849,12 @@ }, "properties": [ { - "$id": "128", + "$id": "171", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "129", + "$id": "172", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1361,7 +1876,7 @@ ] }, { - "$id": "130", + "$id": "173", "kind": "model", "name": "if", "namespace": "SpecialWords.Models", @@ -1375,12 +1890,12 @@ }, "properties": [ { - "$id": "131", + "$id": "174", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "132", + "$id": "175", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1402,7 +1917,7 @@ ] }, { - "$id": "133", + "$id": "176", "kind": "model", "name": "import", "namespace": "SpecialWords.Models", @@ -1416,12 +1931,12 @@ }, "properties": [ { - "$id": "134", + "$id": "177", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "135", + "$id": "178", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1443,7 +1958,7 @@ ] }, { - "$id": "136", + "$id": "179", "kind": "model", "name": "in", "namespace": "SpecialWords.Models", @@ -1457,12 +1972,12 @@ }, "properties": [ { - "$id": "137", + "$id": "180", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "138", + "$id": "181", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1484,7 +1999,7 @@ ] }, { - "$id": "139", + "$id": "182", "kind": "model", "name": "is", "namespace": "SpecialWords.Models", @@ -1498,12 +2013,12 @@ }, "properties": [ { - "$id": "140", + "$id": "183", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "141", + "$id": "184", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1525,7 +2040,7 @@ ] }, { - "$id": "142", + "$id": "185", "kind": "model", "name": "lambda", "namespace": "SpecialWords.Models", @@ -1539,12 +2054,12 @@ }, "properties": [ { - "$id": "143", + "$id": "186", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "144", + "$id": "187", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1566,7 +2081,7 @@ ] }, { - "$id": "145", + "$id": "188", "kind": "model", "name": "not", "namespace": "SpecialWords.Models", @@ -1580,12 +2095,12 @@ }, "properties": [ { - "$id": "146", + "$id": "189", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "147", + "$id": "190", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1607,7 +2122,7 @@ ] }, { - "$id": "148", + "$id": "191", "kind": "model", "name": "or", "namespace": "SpecialWords.Models", @@ -1621,12 +2136,12 @@ }, "properties": [ { - "$id": "149", + "$id": "192", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "150", + "$id": "193", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1648,7 +2163,7 @@ ] }, { - "$id": "151", + "$id": "194", "kind": "model", "name": "pass", "namespace": "SpecialWords.Models", @@ -1662,12 +2177,12 @@ }, "properties": [ { - "$id": "152", + "$id": "195", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "153", + "$id": "196", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1689,7 +2204,7 @@ ] }, { - "$id": "154", + "$id": "197", "kind": "model", "name": "raise", "namespace": "SpecialWords.Models", @@ -1703,12 +2218,12 @@ }, "properties": [ { - "$id": "155", + "$id": "198", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "156", + "$id": "199", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1730,7 +2245,7 @@ ] }, { - "$id": "157", + "$id": "200", "kind": "model", "name": "return", "namespace": "SpecialWords.Models", @@ -1744,12 +2259,12 @@ }, "properties": [ { - "$id": "158", + "$id": "201", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "159", + "$id": "202", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1771,7 +2286,7 @@ ] }, { - "$id": "160", + "$id": "203", "kind": "model", "name": "try", "namespace": "SpecialWords.Models", @@ -1785,12 +2300,12 @@ }, "properties": [ { - "$id": "161", + "$id": "204", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "162", + "$id": "205", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1812,7 +2327,7 @@ ] }, { - "$id": "163", + "$id": "206", "kind": "model", "name": "while", "namespace": "SpecialWords.Models", @@ -1826,12 +2341,12 @@ }, "properties": [ { - "$id": "164", + "$id": "207", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "165", + "$id": "208", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1853,7 +2368,7 @@ ] }, { - "$id": "166", + "$id": "209", "kind": "model", "name": "with", "namespace": "SpecialWords.Models", @@ -1867,12 +2382,12 @@ }, "properties": [ { - "$id": "167", + "$id": "210", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "168", + "$id": "211", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1894,7 +2409,7 @@ ] }, { - "$id": "169", + "$id": "212", "kind": "model", "name": "yield", "namespace": "SpecialWords.Models", @@ -1908,12 +2423,12 @@ }, "properties": [ { - "$id": "170", + "$id": "213", "kind": "property", "name": "name", "serializedName": "name", "type": { - "$id": "171", + "$id": "214", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1935,7 +2450,7 @@ ] }, { - "$id": "172", + "$id": "215", "kind": "model", "name": "SameAsModel", "namespace": "SpecialWords.ModelProperties", @@ -1949,12 +2464,12 @@ }, "properties": [ { - "$id": "173", + "$id": "216", "kind": "property", "name": "SameAsModel", "serializedName": "SameAsModel", "type": { - "$id": "174", + "$id": "217", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -1976,7 +2491,7 @@ ] }, { - "$id": "175", + "$id": "218", "kind": "model", "name": "DictMethods", "namespace": "SpecialWords.ModelProperties", @@ -1990,12 +2505,12 @@ }, "properties": [ { - "$id": "176", + "$id": "219", "kind": "property", "name": "keys", "serializedName": "keys", "type": { - "$id": "177", + "$id": "220", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2015,12 +2530,12 @@ "isHttpMetadata": false }, { - "$id": "178", + "$id": "221", "kind": "property", "name": "items", "serializedName": "items", "type": { - "$id": "179", + "$id": "222", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2040,12 +2555,12 @@ "isHttpMetadata": false }, { - "$id": "180", + "$id": "223", "kind": "property", "name": "values", "serializedName": "values", "type": { - "$id": "181", + "$id": "224", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2065,12 +2580,12 @@ "isHttpMetadata": false }, { - "$id": "182", + "$id": "225", "kind": "property", "name": "popitem", "serializedName": "popitem", "type": { - "$id": "183", + "$id": "226", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2090,12 +2605,12 @@ "isHttpMetadata": false }, { - "$id": "184", + "$id": "227", "kind": "property", "name": "clear", "serializedName": "clear", "type": { - "$id": "185", + "$id": "228", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2115,12 +2630,12 @@ "isHttpMetadata": false }, { - "$id": "186", + "$id": "229", "kind": "property", "name": "update", "serializedName": "update", "type": { - "$id": "187", + "$id": "230", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2140,12 +2655,12 @@ "isHttpMetadata": false }, { - "$id": "188", + "$id": "231", "kind": "property", "name": "setdefault", "serializedName": "setdefault", "type": { - "$id": "189", + "$id": "232", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2165,12 +2680,12 @@ "isHttpMetadata": false }, { - "$id": "190", + "$id": "233", "kind": "property", "name": "pop", "serializedName": "pop", "type": { - "$id": "191", + "$id": "234", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2190,12 +2705,12 @@ "isHttpMetadata": false }, { - "$id": "192", + "$id": "235", "kind": "property", "name": "get", "serializedName": "get", "type": { - "$id": "193", + "$id": "236", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2215,12 +2730,12 @@ "isHttpMetadata": false }, { - "$id": "194", + "$id": "237", "kind": "property", "name": "copy", "serializedName": "copy", "type": { - "$id": "195", + "$id": "238", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2242,7 +2757,7 @@ ] }, { - "$id": "196", + "$id": "239", "kind": "model", "name": "ModelWithList", "namespace": "SpecialWords.ModelProperties", @@ -2256,12 +2771,12 @@ }, "properties": [ { - "$id": "197", + "$id": "240", "kind": "property", "name": "list", "serializedName": "list", "type": { - "$id": "198", + "$id": "241", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -2285,7 +2800,7 @@ ], "clients": [ { - "$id": "199", + "$id": "242", "kind": "client", "name": "SpecialWordsClient", "namespace": "SpecialWords", @@ -2293,13 +2808,13 @@ "methods": [], "parameters": [ { - "$id": "200", + "$id": "243", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "201", + "$id": "244", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -2310,7 +2825,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "202", + "$id": "245", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -2329,32 +2844,32 @@ "apiVersions": [], "children": [ { - "$id": "203", + "$id": "246", "kind": "client", "name": "Models", "namespace": "SpecialWords.Models", "doc": "Verify model names", "methods": [ { - "$id": "204", + "$id": "247", "kind": "basic", "name": "withAnd", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "205", + "$id": "248", "name": "withAnd", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "206", + "$id": "249", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "1" + "$ref": "36" }, "isApiVersion": false, "optional": false, @@ -2365,13 +2880,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAnd.contentType", "methodParameterSegments": [ { - "$id": "207", + "$id": "250", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "1" + "$ref": "36" }, "location": "Header", "isApiVersion": false, @@ -2385,12 +2900,12 @@ ] }, { - "$id": "208", + "$id": "251", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "73" + "$ref": "116" }, "isApiVersion": false, "contentTypes": [ @@ -2404,12 +2919,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAnd.body", "methodParameterSegments": [ { - "$id": "209", + "$id": "252", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "73" + "$ref": "116" }, "location": "Body", "isApiVersion": false, @@ -2447,10 +2962,10 @@ }, "parameters": [ { - "$ref": "209" + "$ref": "252" }, { - "$ref": "207" + "$ref": "250" } ], "response": {}, @@ -2460,25 +2975,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAnd" }, { - "$id": "210", + "$id": "253", "kind": "basic", "name": "withAs", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "211", + "$id": "254", "name": "withAs", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "212", + "$id": "255", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "3" + "$ref": "38" }, "isApiVersion": false, "optional": false, @@ -2489,13 +3004,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAs.contentType", "methodParameterSegments": [ { - "$id": "213", + "$id": "256", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "3" + "$ref": "38" }, "location": "Header", "isApiVersion": false, @@ -2509,12 +3024,12 @@ ] }, { - "$id": "214", + "$id": "257", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "76" + "$ref": "119" }, "isApiVersion": false, "contentTypes": [ @@ -2528,12 +3043,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAs.body", "methodParameterSegments": [ { - "$id": "215", + "$id": "258", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "76" + "$ref": "119" }, "location": "Body", "isApiVersion": false, @@ -2571,10 +3086,10 @@ }, "parameters": [ { - "$ref": "215" + "$ref": "258" }, { - "$ref": "213" + "$ref": "256" } ], "response": {}, @@ -2584,25 +3099,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAs" }, { - "$id": "216", + "$id": "259", "kind": "basic", "name": "withAssert", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "217", + "$id": "260", "name": "withAssert", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "218", + "$id": "261", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "5" + "$ref": "40" }, "isApiVersion": false, "optional": false, @@ -2613,13 +3128,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAssert.contentType", "methodParameterSegments": [ { - "$id": "219", + "$id": "262", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "5" + "$ref": "40" }, "location": "Header", "isApiVersion": false, @@ -2633,12 +3148,12 @@ ] }, { - "$id": "220", + "$id": "263", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "79" + "$ref": "122" }, "isApiVersion": false, "contentTypes": [ @@ -2652,12 +3167,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAssert.body", "methodParameterSegments": [ { - "$id": "221", + "$id": "264", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "79" + "$ref": "122" }, "location": "Body", "isApiVersion": false, @@ -2695,10 +3210,10 @@ }, "parameters": [ { - "$ref": "221" + "$ref": "264" }, { - "$ref": "219" + "$ref": "262" } ], "response": {}, @@ -2708,25 +3223,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAssert" }, { - "$id": "222", + "$id": "265", "kind": "basic", "name": "withAsync", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "223", + "$id": "266", "name": "withAsync", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "224", + "$id": "267", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "7" + "$ref": "42" }, "isApiVersion": false, "optional": false, @@ -2737,13 +3252,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAsync.contentType", "methodParameterSegments": [ { - "$id": "225", + "$id": "268", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "7" + "$ref": "42" }, "location": "Header", "isApiVersion": false, @@ -2757,12 +3272,12 @@ ] }, { - "$id": "226", + "$id": "269", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "82" + "$ref": "125" }, "isApiVersion": false, "contentTypes": [ @@ -2776,12 +3291,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAsync.body", "methodParameterSegments": [ { - "$id": "227", + "$id": "270", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "82" + "$ref": "125" }, "location": "Body", "isApiVersion": false, @@ -2819,10 +3334,10 @@ }, "parameters": [ { - "$ref": "227" + "$ref": "270" }, { - "$ref": "225" + "$ref": "268" } ], "response": {}, @@ -2832,25 +3347,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAsync" }, { - "$id": "228", + "$id": "271", "kind": "basic", "name": "withAwait", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "229", + "$id": "272", "name": "withAwait", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "230", + "$id": "273", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "9" + "$ref": "44" }, "isApiVersion": false, "optional": false, @@ -2861,13 +3376,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAwait.contentType", "methodParameterSegments": [ { - "$id": "231", + "$id": "274", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "9" + "$ref": "44" }, "location": "Header", "isApiVersion": false, @@ -2881,12 +3396,12 @@ ] }, { - "$id": "232", + "$id": "275", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "85" + "$ref": "128" }, "isApiVersion": false, "contentTypes": [ @@ -2900,12 +3415,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAwait.body", "methodParameterSegments": [ { - "$id": "233", + "$id": "276", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "85" + "$ref": "128" }, "location": "Body", "isApiVersion": false, @@ -2943,10 +3458,10 @@ }, "parameters": [ { - "$ref": "233" + "$ref": "276" }, { - "$ref": "231" + "$ref": "274" } ], "response": {}, @@ -2956,25 +3471,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withAwait" }, { - "$id": "234", + "$id": "277", "kind": "basic", "name": "withBreak", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "235", + "$id": "278", "name": "withBreak", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "236", + "$id": "279", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "11" + "$ref": "46" }, "isApiVersion": false, "optional": false, @@ -2985,13 +3500,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withBreak.contentType", "methodParameterSegments": [ { - "$id": "237", + "$id": "280", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "11" + "$ref": "46" }, "location": "Header", "isApiVersion": false, @@ -3005,12 +3520,12 @@ ] }, { - "$id": "238", + "$id": "281", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "88" + "$ref": "131" }, "isApiVersion": false, "contentTypes": [ @@ -3024,12 +3539,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withBreak.body", "methodParameterSegments": [ { - "$id": "239", + "$id": "282", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "88" + "$ref": "131" }, "location": "Body", "isApiVersion": false, @@ -3067,10 +3582,10 @@ }, "parameters": [ { - "$ref": "239" + "$ref": "282" }, { - "$ref": "237" + "$ref": "280" } ], "response": {}, @@ -3080,25 +3595,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withBreak" }, { - "$id": "240", + "$id": "283", "kind": "basic", "name": "withClass", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "241", + "$id": "284", "name": "withClass", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "242", + "$id": "285", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "13" + "$ref": "48" }, "isApiVersion": false, "optional": false, @@ -3109,13 +3624,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withClass.contentType", "methodParameterSegments": [ { - "$id": "243", + "$id": "286", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "13" + "$ref": "48" }, "location": "Header", "isApiVersion": false, @@ -3129,12 +3644,12 @@ ] }, { - "$id": "244", + "$id": "287", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "91" + "$ref": "134" }, "isApiVersion": false, "contentTypes": [ @@ -3148,12 +3663,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withClass.body", "methodParameterSegments": [ { - "$id": "245", + "$id": "288", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "91" + "$ref": "134" }, "location": "Body", "isApiVersion": false, @@ -3191,10 +3706,10 @@ }, "parameters": [ { - "$ref": "245" + "$ref": "288" }, { - "$ref": "243" + "$ref": "286" } ], "response": {}, @@ -3204,25 +3719,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withClass" }, { - "$id": "246", + "$id": "289", "kind": "basic", "name": "withConstructor", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "247", + "$id": "290", "name": "withConstructor", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "248", + "$id": "291", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "15" + "$ref": "50" }, "isApiVersion": false, "optional": false, @@ -3233,13 +3748,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withConstructor.contentType", "methodParameterSegments": [ { - "$id": "249", + "$id": "292", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "15" + "$ref": "50" }, "location": "Header", "isApiVersion": false, @@ -3253,12 +3768,12 @@ ] }, { - "$id": "250", + "$id": "293", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "94" + "$ref": "137" }, "isApiVersion": false, "contentTypes": [ @@ -3272,12 +3787,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withConstructor.body", "methodParameterSegments": [ { - "$id": "251", + "$id": "294", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "94" + "$ref": "137" }, "location": "Body", "isApiVersion": false, @@ -3315,10 +3830,10 @@ }, "parameters": [ { - "$ref": "251" + "$ref": "294" }, { - "$ref": "249" + "$ref": "292" } ], "response": {}, @@ -3328,25 +3843,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withConstructor" }, { - "$id": "252", + "$id": "295", "kind": "basic", "name": "withContinue", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "253", + "$id": "296", "name": "withContinue", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "254", + "$id": "297", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "17" + "$ref": "52" }, "isApiVersion": false, "optional": false, @@ -3357,13 +3872,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withContinue.contentType", "methodParameterSegments": [ { - "$id": "255", + "$id": "298", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "17" + "$ref": "52" }, "location": "Header", "isApiVersion": false, @@ -3377,12 +3892,12 @@ ] }, { - "$id": "256", + "$id": "299", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "97" + "$ref": "140" }, "isApiVersion": false, "contentTypes": [ @@ -3396,12 +3911,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withContinue.body", "methodParameterSegments": [ { - "$id": "257", + "$id": "300", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "97" + "$ref": "140" }, "location": "Body", "isApiVersion": false, @@ -3439,10 +3954,10 @@ }, "parameters": [ { - "$ref": "257" + "$ref": "300" }, { - "$ref": "255" + "$ref": "298" } ], "response": {}, @@ -3452,25 +3967,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withContinue" }, { - "$id": "258", + "$id": "301", "kind": "basic", "name": "withDef", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "259", + "$id": "302", "name": "withDef", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "260", + "$id": "303", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "19" + "$ref": "54" }, "isApiVersion": false, "optional": false, @@ -3481,13 +3996,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withDef.contentType", "methodParameterSegments": [ { - "$id": "261", + "$id": "304", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "19" + "$ref": "54" }, "location": "Header", "isApiVersion": false, @@ -3501,12 +4016,12 @@ ] }, { - "$id": "262", + "$id": "305", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "100" + "$ref": "143" }, "isApiVersion": false, "contentTypes": [ @@ -3520,12 +4035,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withDef.body", "methodParameterSegments": [ { - "$id": "263", + "$id": "306", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "100" + "$ref": "143" }, "location": "Body", "isApiVersion": false, @@ -3563,10 +4078,10 @@ }, "parameters": [ { - "$ref": "263" + "$ref": "306" }, { - "$ref": "261" + "$ref": "304" } ], "response": {}, @@ -3576,25 +4091,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withDef" }, { - "$id": "264", + "$id": "307", "kind": "basic", "name": "withDel", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "265", + "$id": "308", "name": "withDel", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "266", + "$id": "309", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "21" + "$ref": "56" }, "isApiVersion": false, "optional": false, @@ -3605,13 +4120,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withDel.contentType", "methodParameterSegments": [ { - "$id": "267", + "$id": "310", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "21" + "$ref": "56" }, "location": "Header", "isApiVersion": false, @@ -3625,12 +4140,12 @@ ] }, { - "$id": "268", + "$id": "311", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "103" + "$ref": "146" }, "isApiVersion": false, "contentTypes": [ @@ -3644,12 +4159,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withDel.body", "methodParameterSegments": [ { - "$id": "269", + "$id": "312", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "103" + "$ref": "146" }, "location": "Body", "isApiVersion": false, @@ -3687,10 +4202,10 @@ }, "parameters": [ { - "$ref": "269" + "$ref": "312" }, { - "$ref": "267" + "$ref": "310" } ], "response": {}, @@ -3700,25 +4215,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withDel" }, { - "$id": "270", + "$id": "313", "kind": "basic", "name": "withElif", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "271", + "$id": "314", "name": "withElif", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "272", + "$id": "315", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "23" + "$ref": "58" }, "isApiVersion": false, "optional": false, @@ -3729,13 +4244,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withElif.contentType", "methodParameterSegments": [ { - "$id": "273", + "$id": "316", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "23" + "$ref": "58" }, "location": "Header", "isApiVersion": false, @@ -3749,12 +4264,12 @@ ] }, { - "$id": "274", + "$id": "317", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "106" + "$ref": "149" }, "isApiVersion": false, "contentTypes": [ @@ -3768,12 +4283,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withElif.body", "methodParameterSegments": [ { - "$id": "275", + "$id": "318", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "106" + "$ref": "149" }, "location": "Body", "isApiVersion": false, @@ -3811,10 +4326,10 @@ }, "parameters": [ { - "$ref": "275" + "$ref": "318" }, { - "$ref": "273" + "$ref": "316" } ], "response": {}, @@ -3824,25 +4339,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withElif" }, { - "$id": "276", + "$id": "319", "kind": "basic", "name": "withElse", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "277", + "$id": "320", "name": "withElse", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "278", + "$id": "321", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "25" + "$ref": "60" }, "isApiVersion": false, "optional": false, @@ -3853,13 +4368,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withElse.contentType", "methodParameterSegments": [ { - "$id": "279", + "$id": "322", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "25" + "$ref": "60" }, "location": "Header", "isApiVersion": false, @@ -3873,12 +4388,12 @@ ] }, { - "$id": "280", + "$id": "323", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "109" + "$ref": "152" }, "isApiVersion": false, "contentTypes": [ @@ -3892,12 +4407,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withElse.body", "methodParameterSegments": [ { - "$id": "281", + "$id": "324", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "109" + "$ref": "152" }, "location": "Body", "isApiVersion": false, @@ -3935,10 +4450,10 @@ }, "parameters": [ { - "$ref": "281" + "$ref": "324" }, { - "$ref": "279" + "$ref": "322" } ], "response": {}, @@ -3948,25 +4463,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withElse" }, { - "$id": "282", + "$id": "325", "kind": "basic", "name": "withExcept", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "283", + "$id": "326", "name": "withExcept", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "284", + "$id": "327", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "27" + "$ref": "62" }, "isApiVersion": false, "optional": false, @@ -3977,13 +4492,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withExcept.contentType", "methodParameterSegments": [ { - "$id": "285", + "$id": "328", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "27" + "$ref": "62" }, "location": "Header", "isApiVersion": false, @@ -3997,12 +4512,12 @@ ] }, { - "$id": "286", + "$id": "329", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "112" + "$ref": "155" }, "isApiVersion": false, "contentTypes": [ @@ -4016,12 +4531,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withExcept.body", "methodParameterSegments": [ { - "$id": "287", + "$id": "330", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "112" + "$ref": "155" }, "location": "Body", "isApiVersion": false, @@ -4059,10 +4574,10 @@ }, "parameters": [ { - "$ref": "287" + "$ref": "330" }, { - "$ref": "285" + "$ref": "328" } ], "response": {}, @@ -4072,25 +4587,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withExcept" }, { - "$id": "288", + "$id": "331", "kind": "basic", "name": "withExec", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "289", + "$id": "332", "name": "withExec", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "290", + "$id": "333", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "29" + "$ref": "64" }, "isApiVersion": false, "optional": false, @@ -4101,13 +4616,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withExec.contentType", "methodParameterSegments": [ { - "$id": "291", + "$id": "334", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "29" + "$ref": "64" }, "location": "Header", "isApiVersion": false, @@ -4121,12 +4636,12 @@ ] }, { - "$id": "292", + "$id": "335", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "115" + "$ref": "158" }, "isApiVersion": false, "contentTypes": [ @@ -4140,12 +4655,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withExec.body", "methodParameterSegments": [ { - "$id": "293", + "$id": "336", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "115" + "$ref": "158" }, "location": "Body", "isApiVersion": false, @@ -4183,10 +4698,10 @@ }, "parameters": [ { - "$ref": "293" + "$ref": "336" }, { - "$ref": "291" + "$ref": "334" } ], "response": {}, @@ -4196,25 +4711,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withExec" }, { - "$id": "294", + "$id": "337", "kind": "basic", "name": "withFinally", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "295", + "$id": "338", "name": "withFinally", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "296", + "$id": "339", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "31" + "$ref": "66" }, "isApiVersion": false, "optional": false, @@ -4225,13 +4740,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFinally.contentType", "methodParameterSegments": [ { - "$id": "297", + "$id": "340", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "31" + "$ref": "66" }, "location": "Header", "isApiVersion": false, @@ -4245,12 +4760,12 @@ ] }, { - "$id": "298", + "$id": "341", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "118" + "$ref": "161" }, "isApiVersion": false, "contentTypes": [ @@ -4264,12 +4779,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFinally.body", "methodParameterSegments": [ { - "$id": "299", + "$id": "342", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "118" + "$ref": "161" }, "location": "Body", "isApiVersion": false, @@ -4307,10 +4822,10 @@ }, "parameters": [ { - "$ref": "299" + "$ref": "342" }, { - "$ref": "297" + "$ref": "340" } ], "response": {}, @@ -4320,25 +4835,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFinally" }, { - "$id": "300", + "$id": "343", "kind": "basic", "name": "withFor", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "301", + "$id": "344", "name": "withFor", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "302", + "$id": "345", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "33" + "$ref": "68" }, "isApiVersion": false, "optional": false, @@ -4349,13 +4864,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFor.contentType", "methodParameterSegments": [ { - "$id": "303", + "$id": "346", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "33" + "$ref": "68" }, "location": "Header", "isApiVersion": false, @@ -4369,12 +4884,12 @@ ] }, { - "$id": "304", + "$id": "347", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "121" + "$ref": "164" }, "isApiVersion": false, "contentTypes": [ @@ -4388,12 +4903,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFor.body", "methodParameterSegments": [ { - "$id": "305", + "$id": "348", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "121" + "$ref": "164" }, "location": "Body", "isApiVersion": false, @@ -4431,10 +4946,10 @@ }, "parameters": [ { - "$ref": "305" + "$ref": "348" }, { - "$ref": "303" + "$ref": "346" } ], "response": {}, @@ -4444,25 +4959,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFor" }, { - "$id": "306", + "$id": "349", "kind": "basic", "name": "withFrom", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "307", + "$id": "350", "name": "withFrom", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "308", + "$id": "351", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "35" + "$ref": "70" }, "isApiVersion": false, "optional": false, @@ -4473,13 +4988,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFrom.contentType", "methodParameterSegments": [ { - "$id": "309", + "$id": "352", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "35" + "$ref": "70" }, "location": "Header", "isApiVersion": false, @@ -4493,12 +5008,12 @@ ] }, { - "$id": "310", + "$id": "353", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "124" + "$ref": "167" }, "isApiVersion": false, "contentTypes": [ @@ -4512,12 +5027,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFrom.body", "methodParameterSegments": [ { - "$id": "311", + "$id": "354", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "124" + "$ref": "167" }, "location": "Body", "isApiVersion": false, @@ -4555,10 +5070,10 @@ }, "parameters": [ { - "$ref": "311" + "$ref": "354" }, { - "$ref": "309" + "$ref": "352" } ], "response": {}, @@ -4568,25 +5083,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withFrom" }, { - "$id": "312", + "$id": "355", "kind": "basic", "name": "withGlobal", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "313", + "$id": "356", "name": "withGlobal", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "314", + "$id": "357", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "37" + "$ref": "72" }, "isApiVersion": false, "optional": false, @@ -4597,13 +5112,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withGlobal.contentType", "methodParameterSegments": [ { - "$id": "315", + "$id": "358", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "37" + "$ref": "72" }, "location": "Header", "isApiVersion": false, @@ -4617,12 +5132,12 @@ ] }, { - "$id": "316", + "$id": "359", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "127" + "$ref": "170" }, "isApiVersion": false, "contentTypes": [ @@ -4636,12 +5151,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withGlobal.body", "methodParameterSegments": [ { - "$id": "317", + "$id": "360", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "127" + "$ref": "170" }, "location": "Body", "isApiVersion": false, @@ -4679,10 +5194,10 @@ }, "parameters": [ { - "$ref": "317" + "$ref": "360" }, { - "$ref": "315" + "$ref": "358" } ], "response": {}, @@ -4692,25 +5207,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withGlobal" }, { - "$id": "318", + "$id": "361", "kind": "basic", "name": "withIf", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "319", + "$id": "362", "name": "withIf", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "320", + "$id": "363", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "39" + "$ref": "74" }, "isApiVersion": false, "optional": false, @@ -4721,13 +5236,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIf.contentType", "methodParameterSegments": [ { - "$id": "321", + "$id": "364", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "39" + "$ref": "74" }, "location": "Header", "isApiVersion": false, @@ -4741,12 +5256,12 @@ ] }, { - "$id": "322", + "$id": "365", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "130" + "$ref": "173" }, "isApiVersion": false, "contentTypes": [ @@ -4760,12 +5275,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIf.body", "methodParameterSegments": [ { - "$id": "323", + "$id": "366", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "130" + "$ref": "173" }, "location": "Body", "isApiVersion": false, @@ -4803,10 +5318,10 @@ }, "parameters": [ { - "$ref": "323" + "$ref": "366" }, { - "$ref": "321" + "$ref": "364" } ], "response": {}, @@ -4816,25 +5331,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIf" }, { - "$id": "324", + "$id": "367", "kind": "basic", "name": "withImport", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "325", + "$id": "368", "name": "withImport", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "326", + "$id": "369", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "41" + "$ref": "76" }, "isApiVersion": false, "optional": false, @@ -4845,13 +5360,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withImport.contentType", "methodParameterSegments": [ { - "$id": "327", + "$id": "370", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "41" + "$ref": "76" }, "location": "Header", "isApiVersion": false, @@ -4865,12 +5380,12 @@ ] }, { - "$id": "328", + "$id": "371", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "133" + "$ref": "176" }, "isApiVersion": false, "contentTypes": [ @@ -4884,12 +5399,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withImport.body", "methodParameterSegments": [ { - "$id": "329", + "$id": "372", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "133" + "$ref": "176" }, "location": "Body", "isApiVersion": false, @@ -4927,10 +5442,10 @@ }, "parameters": [ { - "$ref": "329" + "$ref": "372" }, { - "$ref": "327" + "$ref": "370" } ], "response": {}, @@ -4940,25 +5455,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withImport" }, { - "$id": "330", + "$id": "373", "kind": "basic", "name": "withIn", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "331", + "$id": "374", "name": "withIn", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "332", + "$id": "375", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "43" + "$ref": "78" }, "isApiVersion": false, "optional": false, @@ -4969,13 +5484,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIn.contentType", "methodParameterSegments": [ { - "$id": "333", + "$id": "376", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "43" + "$ref": "78" }, "location": "Header", "isApiVersion": false, @@ -4989,12 +5504,12 @@ ] }, { - "$id": "334", + "$id": "377", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "136" + "$ref": "179" }, "isApiVersion": false, "contentTypes": [ @@ -5008,12 +5523,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIn.body", "methodParameterSegments": [ { - "$id": "335", + "$id": "378", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "136" + "$ref": "179" }, "location": "Body", "isApiVersion": false, @@ -5051,10 +5566,10 @@ }, "parameters": [ { - "$ref": "335" + "$ref": "378" }, { - "$ref": "333" + "$ref": "376" } ], "response": {}, @@ -5064,25 +5579,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIn" }, { - "$id": "336", + "$id": "379", "kind": "basic", "name": "withIs", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "337", + "$id": "380", "name": "withIs", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "338", + "$id": "381", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "45" + "$ref": "80" }, "isApiVersion": false, "optional": false, @@ -5093,13 +5608,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIs.contentType", "methodParameterSegments": [ { - "$id": "339", + "$id": "382", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "45" + "$ref": "80" }, "location": "Header", "isApiVersion": false, @@ -5113,12 +5628,12 @@ ] }, { - "$id": "340", + "$id": "383", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "139" + "$ref": "182" }, "isApiVersion": false, "contentTypes": [ @@ -5132,12 +5647,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIs.body", "methodParameterSegments": [ { - "$id": "341", + "$id": "384", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "139" + "$ref": "182" }, "location": "Body", "isApiVersion": false, @@ -5175,10 +5690,10 @@ }, "parameters": [ { - "$ref": "341" + "$ref": "384" }, { - "$ref": "339" + "$ref": "382" } ], "response": {}, @@ -5188,25 +5703,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withIs" }, { - "$id": "342", + "$id": "385", "kind": "basic", "name": "withLambda", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "343", + "$id": "386", "name": "withLambda", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "344", + "$id": "387", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "47" + "$ref": "82" }, "isApiVersion": false, "optional": false, @@ -5217,13 +5732,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withLambda.contentType", "methodParameterSegments": [ { - "$id": "345", + "$id": "388", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "47" + "$ref": "82" }, "location": "Header", "isApiVersion": false, @@ -5237,12 +5752,12 @@ ] }, { - "$id": "346", + "$id": "389", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "142" + "$ref": "185" }, "isApiVersion": false, "contentTypes": [ @@ -5256,12 +5771,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withLambda.body", "methodParameterSegments": [ { - "$id": "347", + "$id": "390", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "142" + "$ref": "185" }, "location": "Body", "isApiVersion": false, @@ -5299,10 +5814,10 @@ }, "parameters": [ { - "$ref": "347" + "$ref": "390" }, { - "$ref": "345" + "$ref": "388" } ], "response": {}, @@ -5312,25 +5827,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withLambda" }, { - "$id": "348", + "$id": "391", "kind": "basic", "name": "withNot", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "349", + "$id": "392", "name": "withNot", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "350", + "$id": "393", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "49" + "$ref": "84" }, "isApiVersion": false, "optional": false, @@ -5341,13 +5856,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withNot.contentType", "methodParameterSegments": [ { - "$id": "351", + "$id": "394", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "49" + "$ref": "84" }, "location": "Header", "isApiVersion": false, @@ -5361,12 +5876,12 @@ ] }, { - "$id": "352", + "$id": "395", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "145" + "$ref": "188" }, "isApiVersion": false, "contentTypes": [ @@ -5380,12 +5895,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withNot.body", "methodParameterSegments": [ { - "$id": "353", + "$id": "396", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "145" + "$ref": "188" }, "location": "Body", "isApiVersion": false, @@ -5423,10 +5938,10 @@ }, "parameters": [ { - "$ref": "353" + "$ref": "396" }, { - "$ref": "351" + "$ref": "394" } ], "response": {}, @@ -5436,25 +5951,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withNot" }, { - "$id": "354", + "$id": "397", "kind": "basic", "name": "withOr", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "355", + "$id": "398", "name": "withOr", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "356", + "$id": "399", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "51" + "$ref": "86" }, "isApiVersion": false, "optional": false, @@ -5465,13 +5980,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withOr.contentType", "methodParameterSegments": [ { - "$id": "357", + "$id": "400", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "51" + "$ref": "86" }, "location": "Header", "isApiVersion": false, @@ -5485,12 +6000,12 @@ ] }, { - "$id": "358", + "$id": "401", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "148" + "$ref": "191" }, "isApiVersion": false, "contentTypes": [ @@ -5504,12 +6019,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withOr.body", "methodParameterSegments": [ { - "$id": "359", + "$id": "402", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "148" + "$ref": "191" }, "location": "Body", "isApiVersion": false, @@ -5547,10 +6062,10 @@ }, "parameters": [ { - "$ref": "359" + "$ref": "402" }, { - "$ref": "357" + "$ref": "400" } ], "response": {}, @@ -5560,25 +6075,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withOr" }, { - "$id": "360", + "$id": "403", "kind": "basic", "name": "withPass", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "361", + "$id": "404", "name": "withPass", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "362", + "$id": "405", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "53" + "$ref": "88" }, "isApiVersion": false, "optional": false, @@ -5589,13 +6104,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withPass.contentType", "methodParameterSegments": [ { - "$id": "363", + "$id": "406", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "53" + "$ref": "88" }, "location": "Header", "isApiVersion": false, @@ -5609,12 +6124,12 @@ ] }, { - "$id": "364", + "$id": "407", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "151" + "$ref": "194" }, "isApiVersion": false, "contentTypes": [ @@ -5628,12 +6143,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withPass.body", "methodParameterSegments": [ { - "$id": "365", + "$id": "408", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "151" + "$ref": "194" }, "location": "Body", "isApiVersion": false, @@ -5671,10 +6186,10 @@ }, "parameters": [ { - "$ref": "365" + "$ref": "408" }, { - "$ref": "363" + "$ref": "406" } ], "response": {}, @@ -5684,25 +6199,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withPass" }, { - "$id": "366", + "$id": "409", "kind": "basic", "name": "withRaise", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "367", + "$id": "410", "name": "withRaise", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "368", + "$id": "411", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "55" + "$ref": "90" }, "isApiVersion": false, "optional": false, @@ -5713,13 +6228,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withRaise.contentType", "methodParameterSegments": [ { - "$id": "369", + "$id": "412", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "55" + "$ref": "90" }, "location": "Header", "isApiVersion": false, @@ -5733,12 +6248,12 @@ ] }, { - "$id": "370", + "$id": "413", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "154" + "$ref": "197" }, "isApiVersion": false, "contentTypes": [ @@ -5752,12 +6267,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withRaise.body", "methodParameterSegments": [ { - "$id": "371", + "$id": "414", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "154" + "$ref": "197" }, "location": "Body", "isApiVersion": false, @@ -5795,10 +6310,10 @@ }, "parameters": [ { - "$ref": "371" + "$ref": "414" }, { - "$ref": "369" + "$ref": "412" } ], "response": {}, @@ -5808,25 +6323,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withRaise" }, { - "$id": "372", + "$id": "415", "kind": "basic", "name": "withReturn", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "373", + "$id": "416", "name": "withReturn", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "374", + "$id": "417", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "57" + "$ref": "92" }, "isApiVersion": false, "optional": false, @@ -5837,13 +6352,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withReturn.contentType", "methodParameterSegments": [ { - "$id": "375", + "$id": "418", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "57" + "$ref": "92" }, "location": "Header", "isApiVersion": false, @@ -5857,12 +6372,12 @@ ] }, { - "$id": "376", + "$id": "419", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "157" + "$ref": "200" }, "isApiVersion": false, "contentTypes": [ @@ -5876,12 +6391,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withReturn.body", "methodParameterSegments": [ { - "$id": "377", + "$id": "420", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "157" + "$ref": "200" }, "location": "Body", "isApiVersion": false, @@ -5919,10 +6434,10 @@ }, "parameters": [ { - "$ref": "377" + "$ref": "420" }, { - "$ref": "375" + "$ref": "418" } ], "response": {}, @@ -5932,25 +6447,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withReturn" }, { - "$id": "378", + "$id": "421", "kind": "basic", "name": "withTry", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "379", + "$id": "422", "name": "withTry", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "380", + "$id": "423", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "59" + "$ref": "94" }, "isApiVersion": false, "optional": false, @@ -5961,13 +6476,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withTry.contentType", "methodParameterSegments": [ { - "$id": "381", + "$id": "424", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "59" + "$ref": "94" }, "location": "Header", "isApiVersion": false, @@ -5981,12 +6496,12 @@ ] }, { - "$id": "382", + "$id": "425", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "160" + "$ref": "203" }, "isApiVersion": false, "contentTypes": [ @@ -6000,12 +6515,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withTry.body", "methodParameterSegments": [ { - "$id": "383", + "$id": "426", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "160" + "$ref": "203" }, "location": "Body", "isApiVersion": false, @@ -6043,10 +6558,10 @@ }, "parameters": [ { - "$ref": "383" + "$ref": "426" }, { - "$ref": "381" + "$ref": "424" } ], "response": {}, @@ -6056,25 +6571,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withTry" }, { - "$id": "384", + "$id": "427", "kind": "basic", "name": "withWhile", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "385", + "$id": "428", "name": "withWhile", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "386", + "$id": "429", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "61" + "$ref": "96" }, "isApiVersion": false, "optional": false, @@ -6085,13 +6600,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withWhile.contentType", "methodParameterSegments": [ { - "$id": "387", + "$id": "430", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "61" + "$ref": "96" }, "location": "Header", "isApiVersion": false, @@ -6105,12 +6620,12 @@ ] }, { - "$id": "388", + "$id": "431", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "163" + "$ref": "206" }, "isApiVersion": false, "contentTypes": [ @@ -6124,12 +6639,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withWhile.body", "methodParameterSegments": [ { - "$id": "389", + "$id": "432", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "163" + "$ref": "206" }, "location": "Body", "isApiVersion": false, @@ -6167,10 +6682,10 @@ }, "parameters": [ { - "$ref": "389" + "$ref": "432" }, { - "$ref": "387" + "$ref": "430" } ], "response": {}, @@ -6180,25 +6695,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withWhile" }, { - "$id": "390", + "$id": "433", "kind": "basic", "name": "withWith", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "391", + "$id": "434", "name": "withWith", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "392", + "$id": "435", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "63" + "$ref": "98" }, "isApiVersion": false, "optional": false, @@ -6209,13 +6724,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withWith.contentType", "methodParameterSegments": [ { - "$id": "393", + "$id": "436", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "63" + "$ref": "98" }, "location": "Header", "isApiVersion": false, @@ -6229,12 +6744,12 @@ ] }, { - "$id": "394", + "$id": "437", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "166" + "$ref": "209" }, "isApiVersion": false, "contentTypes": [ @@ -6248,12 +6763,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withWith.body", "methodParameterSegments": [ { - "$id": "395", + "$id": "438", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "166" + "$ref": "209" }, "location": "Body", "isApiVersion": false, @@ -6291,10 +6806,10 @@ }, "parameters": [ { - "$ref": "395" + "$ref": "438" }, { - "$ref": "393" + "$ref": "436" } ], "response": {}, @@ -6304,25 +6819,25 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withWith" }, { - "$id": "396", + "$id": "439", "kind": "basic", "name": "withYield", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "397", + "$id": "440", "name": "withYield", "resourceName": "Models", "accessibility": "public", "parameters": [ { - "$id": "398", + "$id": "441", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "65" + "$ref": "100" }, "isApiVersion": false, "optional": false, @@ -6333,13 +6848,13 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withYield.contentType", "methodParameterSegments": [ { - "$id": "399", + "$id": "442", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "65" + "$ref": "100" }, "location": "Header", "isApiVersion": false, @@ -6353,12 +6868,12 @@ ] }, { - "$id": "400", + "$id": "443", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "169" + "$ref": "212" }, "isApiVersion": false, "contentTypes": [ @@ -6372,12 +6887,12 @@ "crossLanguageDefinitionId": "SpecialWords.Models.withYield.body", "methodParameterSegments": [ { - "$id": "401", + "$id": "444", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "169" + "$ref": "212" }, "location": "Body", "isApiVersion": false, @@ -6415,10 +6930,10 @@ }, "parameters": [ { - "$ref": "401" + "$ref": "444" }, { - "$ref": "399" + "$ref": "442" } ], "response": {}, @@ -6430,13 +6945,13 @@ ], "parameters": [ { - "$id": "402", + "$id": "445", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "403", + "$id": "446", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -6447,7 +6962,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "404", + "$id": "447", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -6465,37 +6980,37 @@ "crossLanguageDefinitionId": "SpecialWords.Models", "apiVersions": [], "parent": { - "$ref": "199" + "$ref": "242" }, "isMultiServiceClient": false }, { - "$id": "405", + "$id": "448", "kind": "client", "name": "ModelProperties", "namespace": "SpecialWords.ModelProperties", "doc": "Verify model names", "methods": [ { - "$id": "406", + "$id": "449", "kind": "basic", "name": "sameAsModel", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "407", + "$id": "450", "name": "sameAsModel", "resourceName": "ModelProperties", "accessibility": "public", "parameters": [ { - "$id": "408", + "$id": "451", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "67" + "$ref": "102" }, "isApiVersion": false, "optional": false, @@ -6506,13 +7021,13 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.sameAsModel.contentType", "methodParameterSegments": [ { - "$id": "409", + "$id": "452", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "67" + "$ref": "102" }, "location": "Header", "isApiVersion": false, @@ -6526,12 +7041,12 @@ ] }, { - "$id": "410", + "$id": "453", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "172" + "$ref": "215" }, "isApiVersion": false, "contentTypes": [ @@ -6545,12 +7060,12 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.sameAsModel.body", "methodParameterSegments": [ { - "$id": "411", + "$id": "454", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "172" + "$ref": "215" }, "location": "Body", "isApiVersion": false, @@ -6588,10 +7103,10 @@ }, "parameters": [ { - "$ref": "411" + "$ref": "454" }, { - "$ref": "409" + "$ref": "452" } ], "response": {}, @@ -6601,25 +7116,25 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.sameAsModel" }, { - "$id": "412", + "$id": "455", "kind": "basic", "name": "dictMethods", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "413", + "$id": "456", "name": "dictMethods", "resourceName": "ModelProperties", "accessibility": "public", "parameters": [ { - "$id": "414", + "$id": "457", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "69" + "$ref": "104" }, "isApiVersion": false, "optional": false, @@ -6630,13 +7145,13 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.dictMethods.contentType", "methodParameterSegments": [ { - "$id": "415", + "$id": "458", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "69" + "$ref": "104" }, "location": "Header", "isApiVersion": false, @@ -6650,12 +7165,12 @@ ] }, { - "$id": "416", + "$id": "459", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "175" + "$ref": "218" }, "isApiVersion": false, "contentTypes": [ @@ -6669,12 +7184,12 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.dictMethods.body", "methodParameterSegments": [ { - "$id": "417", + "$id": "460", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "175" + "$ref": "218" }, "location": "Body", "isApiVersion": false, @@ -6712,10 +7227,10 @@ }, "parameters": [ { - "$ref": "417" + "$ref": "460" }, { - "$ref": "415" + "$ref": "458" } ], "response": {}, @@ -6725,25 +7240,25 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.dictMethods" }, { - "$id": "418", + "$id": "461", "kind": "basic", "name": "withList", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "419", + "$id": "462", "name": "withList", "resourceName": "ModelProperties", "accessibility": "public", "parameters": [ { - "$id": "420", + "$id": "463", "kind": "header", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "71" + "$ref": "106" }, "isApiVersion": false, "optional": false, @@ -6754,13 +7269,13 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.withList.contentType", "methodParameterSegments": [ { - "$id": "421", + "$id": "464", "kind": "method", "name": "contentType", "serializedName": "Content-Type", "doc": "Body parameter's content type. Known values are application/json", "type": { - "$ref": "71" + "$ref": "106" }, "location": "Header", "isApiVersion": false, @@ -6774,12 +7289,12 @@ ] }, { - "$id": "422", + "$id": "465", "kind": "body", "name": "body", "serializedName": "body", "type": { - "$ref": "196" + "$ref": "239" }, "isApiVersion": false, "contentTypes": [ @@ -6793,12 +7308,12 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties.withList.body", "methodParameterSegments": [ { - "$id": "423", + "$id": "466", "kind": "method", "name": "body", "serializedName": "body", "type": { - "$ref": "196" + "$ref": "239" }, "location": "Body", "isApiVersion": false, @@ -6836,10 +7351,10 @@ }, "parameters": [ { - "$ref": "423" + "$ref": "466" }, { - "$ref": "421" + "$ref": "464" } ], "response": {}, @@ -6851,13 +7366,13 @@ ], "parameters": [ { - "$id": "424", + "$id": "467", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "425", + "$id": "468", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -6868,7 +7383,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "426", + "$id": "469", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -6886,25 +7401,252 @@ "crossLanguageDefinitionId": "SpecialWords.ModelProperties", "apiVersions": [], "parent": { - "$ref": "199" + "$ref": "242" + }, + "isMultiServiceClient": false + }, + { + "$id": "470", + "kind": "client", + "name": "ExtensibleStrings", + "namespace": "SpecialWords.ExtensibleStrings", + "doc": "Verify enum member names that are special words.", + "methods": [ + { + "$id": "471", + "kind": "basic", + "name": "putExtensibleStringValue", + "accessibility": "public", + "apiVersions": [], + "operation": { + "$id": "472", + "name": "putExtensibleStringValue", + "resourceName": "ExtensibleStrings", + "accessibility": "public", + "parameters": [ + { + "$id": "473", + "kind": "header", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "108" + }, + "isApiVersion": false, + "optional": false, + "isContentType": true, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue.contentType", + "methodParameterSegments": [ + { + "$id": "474", + "kind": "method", + "name": "contentType", + "serializedName": "Content-Type", + "type": { + "$ref": "108" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue.contentType", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "475", + "kind": "header", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "112" + }, + "isApiVersion": false, + "optional": false, + "isContentType": false, + "scope": "Constant", + "readOnly": false, + "decorators": [], + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue.accept", + "methodParameterSegments": [ + { + "$id": "476", + "kind": "method", + "name": "accept", + "serializedName": "Accept", + "type": { + "$ref": "112" + }, + "location": "Header", + "isApiVersion": false, + "optional": false, + "scope": "Constant", + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue.accept", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + }, + { + "$id": "477", + "kind": "body", + "name": "body", + "serializedName": "body", + "type": { + "$ref": "1" + }, + "isApiVersion": false, + "contentTypes": [ + "application/json" + ], + "defaultContentType": "application/json", + "optional": false, + "scope": "Method", + "decorators": [], + "readOnly": false, + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue.body", + "methodParameterSegments": [ + { + "$id": "478", + "kind": "method", + "name": "body", + "serializedName": "body", + "type": { + "$ref": "1" + }, + "location": "Body", + "isApiVersion": false, + "optional": false, + "scope": "Method", + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue.body", + "readOnly": false, + "access": "public", + "decorators": [] + } + ] + } + ], + "responses": [ + { + "statusCodes": [ + 200 + ], + "bodyType": { + "$ref": "1" + }, + "headers": [ + { + "name": "contentType", + "nameInResponse": "content-type", + "type": { + "$ref": "114" + } + } + ], + "isErrorResponse": false, + "contentTypes": [ + "application/json" + ] + } + ], + "httpMethod": "PUT", + "uri": "{endpoint}", + "path": "/special-words/extensible-strings/string", + "requestMediaTypes": [ + "application/json" + ], + "bufferResponse": true, + "generateProtocolMethod": true, + "generateConvenienceMethod": true, + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue", + "decorators": [], + "namespace": "SpecialWords.ExtensibleStrings" + }, + "parameters": [ + { + "$ref": "474" + }, + { + "$ref": "478" + }, + { + "$ref": "476" + } + ], + "response": { + "type": { + "$ref": "1" + } + }, + "isOverride": false, + "generateConvenient": true, + "generateProtocol": true, + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.putExtensibleStringValue" + } + ], + "parameters": [ + { + "$id": "479", + "kind": "endpoint", + "name": "endpoint", + "serializedName": "endpoint", + "doc": "Service host", + "type": { + "$id": "480", + "kind": "url", + "name": "endpoint", + "crossLanguageDefinitionId": "TypeSpec.url" + }, + "isApiVersion": false, + "optional": false, + "scope": "Client", + "isEndpoint": true, + "defaultValue": { + "type": { + "$id": "481", + "kind": "string", + "name": "string", + "crossLanguageDefinitionId": "TypeSpec.string" + }, + "value": "http://localhost:3000" + }, + "serverUrlTemplate": "{endpoint}", + "skipUrlEncoding": false, + "readOnly": false, + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings.endpoint" + } + ], + "initializedBy": 0, + "decorators": [], + "crossLanguageDefinitionId": "SpecialWords.ExtensibleStrings", + "apiVersions": [], + "parent": { + "$ref": "242" }, "isMultiServiceClient": false }, { - "$id": "427", + "$id": "482", "kind": "client", "name": "Operations", "namespace": "SpecialWords", "doc": "Test reserved words as operation name.", "methods": [ { - "$id": "428", + "$id": "483", "kind": "basic", "name": "and", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "429", + "$id": "484", "name": "and", "resourceName": "Operations", "accessibility": "public", @@ -6936,13 +7678,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.and" }, { - "$id": "430", + "$id": "485", "kind": "basic", "name": "as", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "431", + "$id": "486", "name": "as", "resourceName": "Operations", "accessibility": "public", @@ -6974,13 +7716,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.as" }, { - "$id": "432", + "$id": "487", "kind": "basic", "name": "assert", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "433", + "$id": "488", "name": "assert", "resourceName": "Operations", "accessibility": "public", @@ -7012,13 +7754,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.assert" }, { - "$id": "434", + "$id": "489", "kind": "basic", "name": "async", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "435", + "$id": "490", "name": "async", "resourceName": "Operations", "accessibility": "public", @@ -7050,13 +7792,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.async" }, { - "$id": "436", + "$id": "491", "kind": "basic", "name": "await", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "437", + "$id": "492", "name": "await", "resourceName": "Operations", "accessibility": "public", @@ -7088,13 +7830,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.await" }, { - "$id": "438", + "$id": "493", "kind": "basic", "name": "break", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "439", + "$id": "494", "name": "break", "resourceName": "Operations", "accessibility": "public", @@ -7126,13 +7868,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.break" }, { - "$id": "440", + "$id": "495", "kind": "basic", "name": "class", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "441", + "$id": "496", "name": "class", "resourceName": "Operations", "accessibility": "public", @@ -7164,13 +7906,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.class" }, { - "$id": "442", + "$id": "497", "kind": "basic", "name": "constructor", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "443", + "$id": "498", "name": "constructor", "resourceName": "Operations", "accessibility": "public", @@ -7202,13 +7944,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.constructor" }, { - "$id": "444", + "$id": "499", "kind": "basic", "name": "continue", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "445", + "$id": "500", "name": "continue", "resourceName": "Operations", "accessibility": "public", @@ -7240,13 +7982,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.continue" }, { - "$id": "446", + "$id": "501", "kind": "basic", "name": "def", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "447", + "$id": "502", "name": "def", "resourceName": "Operations", "accessibility": "public", @@ -7278,13 +8020,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.def" }, { - "$id": "448", + "$id": "503", "kind": "basic", "name": "del", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "449", + "$id": "504", "name": "del", "resourceName": "Operations", "accessibility": "public", @@ -7316,13 +8058,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.del" }, { - "$id": "450", + "$id": "505", "kind": "basic", "name": "elif", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "451", + "$id": "506", "name": "elif", "resourceName": "Operations", "accessibility": "public", @@ -7354,13 +8096,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.elif" }, { - "$id": "452", + "$id": "507", "kind": "basic", "name": "else", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "453", + "$id": "508", "name": "else", "resourceName": "Operations", "accessibility": "public", @@ -7392,13 +8134,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.else" }, { - "$id": "454", + "$id": "509", "kind": "basic", "name": "except", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "455", + "$id": "510", "name": "except", "resourceName": "Operations", "accessibility": "public", @@ -7430,13 +8172,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.except" }, { - "$id": "456", + "$id": "511", "kind": "basic", "name": "exec", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "457", + "$id": "512", "name": "exec", "resourceName": "Operations", "accessibility": "public", @@ -7468,13 +8210,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.exec" }, { - "$id": "458", + "$id": "513", "kind": "basic", "name": "finally", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "459", + "$id": "514", "name": "finally", "resourceName": "Operations", "accessibility": "public", @@ -7506,13 +8248,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.finally" }, { - "$id": "460", + "$id": "515", "kind": "basic", "name": "for", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "461", + "$id": "516", "name": "for", "resourceName": "Operations", "accessibility": "public", @@ -7544,13 +8286,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.for" }, { - "$id": "462", + "$id": "517", "kind": "basic", "name": "from", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "463", + "$id": "518", "name": "from", "resourceName": "Operations", "accessibility": "public", @@ -7582,13 +8324,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.from" }, { - "$id": "464", + "$id": "519", "kind": "basic", "name": "global", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "465", + "$id": "520", "name": "global", "resourceName": "Operations", "accessibility": "public", @@ -7620,13 +8362,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.global" }, { - "$id": "466", + "$id": "521", "kind": "basic", "name": "if", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "467", + "$id": "522", "name": "if", "resourceName": "Operations", "accessibility": "public", @@ -7658,13 +8400,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.if" }, { - "$id": "468", + "$id": "523", "kind": "basic", "name": "import", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "469", + "$id": "524", "name": "import", "resourceName": "Operations", "accessibility": "public", @@ -7696,13 +8438,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.import" }, { - "$id": "470", + "$id": "525", "kind": "basic", "name": "in", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "471", + "$id": "526", "name": "in", "resourceName": "Operations", "accessibility": "public", @@ -7734,13 +8476,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.in" }, { - "$id": "472", + "$id": "527", "kind": "basic", "name": "is", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "473", + "$id": "528", "name": "is", "resourceName": "Operations", "accessibility": "public", @@ -7772,13 +8514,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.is" }, { - "$id": "474", + "$id": "529", "kind": "basic", "name": "lambda", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "475", + "$id": "530", "name": "lambda", "resourceName": "Operations", "accessibility": "public", @@ -7810,13 +8552,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.lambda" }, { - "$id": "476", + "$id": "531", "kind": "basic", "name": "not", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "477", + "$id": "532", "name": "not", "resourceName": "Operations", "accessibility": "public", @@ -7848,13 +8590,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.not" }, { - "$id": "478", + "$id": "533", "kind": "basic", "name": "or", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "479", + "$id": "534", "name": "or", "resourceName": "Operations", "accessibility": "public", @@ -7886,13 +8628,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.or" }, { - "$id": "480", + "$id": "535", "kind": "basic", "name": "pass", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "481", + "$id": "536", "name": "pass", "resourceName": "Operations", "accessibility": "public", @@ -7924,13 +8666,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.pass" }, { - "$id": "482", + "$id": "537", "kind": "basic", "name": "raise", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "483", + "$id": "538", "name": "raise", "resourceName": "Operations", "accessibility": "public", @@ -7962,13 +8704,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.raise" }, { - "$id": "484", + "$id": "539", "kind": "basic", "name": "return", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "485", + "$id": "540", "name": "return", "resourceName": "Operations", "accessibility": "public", @@ -8000,13 +8742,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.return" }, { - "$id": "486", + "$id": "541", "kind": "basic", "name": "try", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "487", + "$id": "542", "name": "try", "resourceName": "Operations", "accessibility": "public", @@ -8038,13 +8780,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.try" }, { - "$id": "488", + "$id": "543", "kind": "basic", "name": "while", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "489", + "$id": "544", "name": "while", "resourceName": "Operations", "accessibility": "public", @@ -8076,13 +8818,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.while" }, { - "$id": "490", + "$id": "545", "kind": "basic", "name": "with", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "491", + "$id": "546", "name": "with", "resourceName": "Operations", "accessibility": "public", @@ -8114,13 +8856,13 @@ "crossLanguageDefinitionId": "SpecialWords.Operations.with" }, { - "$id": "492", + "$id": "547", "kind": "basic", "name": "yield", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "493", + "$id": "548", "name": "yield", "resourceName": "Operations", "accessibility": "public", @@ -8154,13 +8896,13 @@ ], "parameters": [ { - "$id": "494", + "$id": "549", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "495", + "$id": "550", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -8171,7 +8913,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "496", + "$id": "551", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -8189,36 +8931,36 @@ "crossLanguageDefinitionId": "SpecialWords.Operations", "apiVersions": [], "parent": { - "$ref": "199" + "$ref": "242" }, "isMultiServiceClient": false }, { - "$id": "497", + "$id": "552", "kind": "client", "name": "Parameters", "namespace": "SpecialWords", "doc": "Verify reserved words as parameter name.", "methods": [ { - "$id": "498", + "$id": "553", "kind": "basic", "name": "withAnd", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "499", + "$id": "554", "name": "withAnd", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "500", + "$id": "555", "kind": "query", "name": "and", "serializedName": "and", "type": { - "$id": "501", + "$id": "556", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8233,12 +8975,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "502", + "$id": "557", "kind": "method", "name": "and", "serializedName": "and", "type": { - "$id": "503", + "$id": "558", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8277,7 +9019,7 @@ }, "parameters": [ { - "$ref": "502" + "$ref": "557" } ], "response": {}, @@ -8287,24 +9029,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withAnd" }, { - "$id": "504", + "$id": "559", "kind": "basic", "name": "withAs", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "505", + "$id": "560", "name": "withAs", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "506", + "$id": "561", "kind": "query", "name": "as", "serializedName": "as", "type": { - "$id": "507", + "$id": "562", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8319,12 +9061,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "508", + "$id": "563", "kind": "method", "name": "as", "serializedName": "as", "type": { - "$id": "509", + "$id": "564", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8363,7 +9105,7 @@ }, "parameters": [ { - "$ref": "508" + "$ref": "563" } ], "response": {}, @@ -8373,24 +9115,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withAs" }, { - "$id": "510", + "$id": "565", "kind": "basic", "name": "withAssert", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "511", + "$id": "566", "name": "withAssert", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "512", + "$id": "567", "kind": "query", "name": "assert", "serializedName": "assert", "type": { - "$id": "513", + "$id": "568", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8405,12 +9147,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "514", + "$id": "569", "kind": "method", "name": "assert", "serializedName": "assert", "type": { - "$id": "515", + "$id": "570", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8449,7 +9191,7 @@ }, "parameters": [ { - "$ref": "514" + "$ref": "569" } ], "response": {}, @@ -8459,24 +9201,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withAssert" }, { - "$id": "516", + "$id": "571", "kind": "basic", "name": "withAsync", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "517", + "$id": "572", "name": "withAsync", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "518", + "$id": "573", "kind": "query", "name": "async", "serializedName": "async", "type": { - "$id": "519", + "$id": "574", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8491,12 +9233,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "520", + "$id": "575", "kind": "method", "name": "async", "serializedName": "async", "type": { - "$id": "521", + "$id": "576", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8535,7 +9277,7 @@ }, "parameters": [ { - "$ref": "520" + "$ref": "575" } ], "response": {}, @@ -8545,24 +9287,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withAsync" }, { - "$id": "522", + "$id": "577", "kind": "basic", "name": "withAwait", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "523", + "$id": "578", "name": "withAwait", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "524", + "$id": "579", "kind": "query", "name": "await", "serializedName": "await", "type": { - "$id": "525", + "$id": "580", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8577,12 +9319,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "526", + "$id": "581", "kind": "method", "name": "await", "serializedName": "await", "type": { - "$id": "527", + "$id": "582", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8621,7 +9363,7 @@ }, "parameters": [ { - "$ref": "526" + "$ref": "581" } ], "response": {}, @@ -8631,24 +9373,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withAwait" }, { - "$id": "528", + "$id": "583", "kind": "basic", "name": "withBreak", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "529", + "$id": "584", "name": "withBreak", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "530", + "$id": "585", "kind": "query", "name": "break", "serializedName": "break", "type": { - "$id": "531", + "$id": "586", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8663,12 +9405,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "532", + "$id": "587", "kind": "method", "name": "break", "serializedName": "break", "type": { - "$id": "533", + "$id": "588", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8707,7 +9449,7 @@ }, "parameters": [ { - "$ref": "532" + "$ref": "587" } ], "response": {}, @@ -8717,24 +9459,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withBreak" }, { - "$id": "534", + "$id": "589", "kind": "basic", "name": "withClass", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "535", + "$id": "590", "name": "withClass", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "536", + "$id": "591", "kind": "query", "name": "class", "serializedName": "class", "type": { - "$id": "537", + "$id": "592", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8749,12 +9491,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "538", + "$id": "593", "kind": "method", "name": "class", "serializedName": "class", "type": { - "$id": "539", + "$id": "594", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8793,7 +9535,7 @@ }, "parameters": [ { - "$ref": "538" + "$ref": "593" } ], "response": {}, @@ -8803,24 +9545,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withClass" }, { - "$id": "540", + "$id": "595", "kind": "basic", "name": "withConstructor", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "541", + "$id": "596", "name": "withConstructor", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "542", + "$id": "597", "kind": "query", "name": "constructor", "serializedName": "constructor", "type": { - "$id": "543", + "$id": "598", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8835,12 +9577,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "544", + "$id": "599", "kind": "method", "name": "constructor", "serializedName": "constructor", "type": { - "$id": "545", + "$id": "600", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8879,7 +9621,7 @@ }, "parameters": [ { - "$ref": "544" + "$ref": "599" } ], "response": {}, @@ -8889,24 +9631,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withConstructor" }, { - "$id": "546", + "$id": "601", "kind": "basic", "name": "withContinue", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "547", + "$id": "602", "name": "withContinue", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "548", + "$id": "603", "kind": "query", "name": "continue", "serializedName": "continue", "type": { - "$id": "549", + "$id": "604", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8921,12 +9663,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "550", + "$id": "605", "kind": "method", "name": "continue", "serializedName": "continue", "type": { - "$id": "551", + "$id": "606", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -8965,7 +9707,7 @@ }, "parameters": [ { - "$ref": "550" + "$ref": "605" } ], "response": {}, @@ -8975,24 +9717,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withContinue" }, { - "$id": "552", + "$id": "607", "kind": "basic", "name": "withDef", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "553", + "$id": "608", "name": "withDef", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "554", + "$id": "609", "kind": "query", "name": "def", "serializedName": "def", "type": { - "$id": "555", + "$id": "610", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9007,12 +9749,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "556", + "$id": "611", "kind": "method", "name": "def", "serializedName": "def", "type": { - "$id": "557", + "$id": "612", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9051,7 +9793,7 @@ }, "parameters": [ { - "$ref": "556" + "$ref": "611" } ], "response": {}, @@ -9061,24 +9803,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withDef" }, { - "$id": "558", + "$id": "613", "kind": "basic", "name": "withDel", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "559", + "$id": "614", "name": "withDel", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "560", + "$id": "615", "kind": "query", "name": "del", "serializedName": "del", "type": { - "$id": "561", + "$id": "616", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9093,12 +9835,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "562", + "$id": "617", "kind": "method", "name": "del", "serializedName": "del", "type": { - "$id": "563", + "$id": "618", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9137,7 +9879,7 @@ }, "parameters": [ { - "$ref": "562" + "$ref": "617" } ], "response": {}, @@ -9147,24 +9889,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withDel" }, { - "$id": "564", + "$id": "619", "kind": "basic", "name": "withElif", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "565", + "$id": "620", "name": "withElif", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "566", + "$id": "621", "kind": "query", "name": "elif", "serializedName": "elif", "type": { - "$id": "567", + "$id": "622", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9179,12 +9921,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "568", + "$id": "623", "kind": "method", "name": "elif", "serializedName": "elif", "type": { - "$id": "569", + "$id": "624", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9223,7 +9965,7 @@ }, "parameters": [ { - "$ref": "568" + "$ref": "623" } ], "response": {}, @@ -9233,24 +9975,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withElif" }, { - "$id": "570", + "$id": "625", "kind": "basic", "name": "withElse", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "571", + "$id": "626", "name": "withElse", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "572", + "$id": "627", "kind": "query", "name": "else", "serializedName": "else", "type": { - "$id": "573", + "$id": "628", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9265,12 +10007,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "574", + "$id": "629", "kind": "method", "name": "else", "serializedName": "else", "type": { - "$id": "575", + "$id": "630", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9309,7 +10051,7 @@ }, "parameters": [ { - "$ref": "574" + "$ref": "629" } ], "response": {}, @@ -9319,24 +10061,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withElse" }, { - "$id": "576", + "$id": "631", "kind": "basic", "name": "withExcept", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "577", + "$id": "632", "name": "withExcept", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "578", + "$id": "633", "kind": "query", "name": "except", "serializedName": "except", "type": { - "$id": "579", + "$id": "634", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9351,12 +10093,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "580", + "$id": "635", "kind": "method", "name": "except", "serializedName": "except", "type": { - "$id": "581", + "$id": "636", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9395,7 +10137,7 @@ }, "parameters": [ { - "$ref": "580" + "$ref": "635" } ], "response": {}, @@ -9405,24 +10147,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withExcept" }, { - "$id": "582", + "$id": "637", "kind": "basic", "name": "withExec", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "583", + "$id": "638", "name": "withExec", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "584", + "$id": "639", "kind": "query", "name": "exec", "serializedName": "exec", "type": { - "$id": "585", + "$id": "640", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9437,12 +10179,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "586", + "$id": "641", "kind": "method", "name": "exec", "serializedName": "exec", "type": { - "$id": "587", + "$id": "642", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9481,7 +10223,7 @@ }, "parameters": [ { - "$ref": "586" + "$ref": "641" } ], "response": {}, @@ -9491,24 +10233,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withExec" }, { - "$id": "588", + "$id": "643", "kind": "basic", "name": "withFinally", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "589", + "$id": "644", "name": "withFinally", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "590", + "$id": "645", "kind": "query", "name": "finally", "serializedName": "finally", "type": { - "$id": "591", + "$id": "646", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9523,12 +10265,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "592", + "$id": "647", "kind": "method", "name": "finally", "serializedName": "finally", "type": { - "$id": "593", + "$id": "648", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9567,7 +10309,7 @@ }, "parameters": [ { - "$ref": "592" + "$ref": "647" } ], "response": {}, @@ -9577,24 +10319,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withFinally" }, { - "$id": "594", + "$id": "649", "kind": "basic", "name": "withFor", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "595", + "$id": "650", "name": "withFor", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "596", + "$id": "651", "kind": "query", "name": "for", "serializedName": "for", "type": { - "$id": "597", + "$id": "652", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9609,12 +10351,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "598", + "$id": "653", "kind": "method", "name": "for", "serializedName": "for", "type": { - "$id": "599", + "$id": "654", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9653,7 +10395,7 @@ }, "parameters": [ { - "$ref": "598" + "$ref": "653" } ], "response": {}, @@ -9663,24 +10405,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withFor" }, { - "$id": "600", + "$id": "655", "kind": "basic", "name": "withFrom", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "601", + "$id": "656", "name": "withFrom", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "602", + "$id": "657", "kind": "query", "name": "from", "serializedName": "from", "type": { - "$id": "603", + "$id": "658", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9695,12 +10437,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "604", + "$id": "659", "kind": "method", "name": "from", "serializedName": "from", "type": { - "$id": "605", + "$id": "660", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9739,7 +10481,7 @@ }, "parameters": [ { - "$ref": "604" + "$ref": "659" } ], "response": {}, @@ -9749,24 +10491,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withFrom" }, { - "$id": "606", + "$id": "661", "kind": "basic", "name": "withGlobal", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "607", + "$id": "662", "name": "withGlobal", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "608", + "$id": "663", "kind": "query", "name": "global", "serializedName": "global", "type": { - "$id": "609", + "$id": "664", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9781,12 +10523,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "610", + "$id": "665", "kind": "method", "name": "global", "serializedName": "global", "type": { - "$id": "611", + "$id": "666", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9825,7 +10567,7 @@ }, "parameters": [ { - "$ref": "610" + "$ref": "665" } ], "response": {}, @@ -9835,24 +10577,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withGlobal" }, { - "$id": "612", + "$id": "667", "kind": "basic", "name": "withIf", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "613", + "$id": "668", "name": "withIf", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "614", + "$id": "669", "kind": "query", "name": "if", "serializedName": "if", "type": { - "$id": "615", + "$id": "670", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9867,12 +10609,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "616", + "$id": "671", "kind": "method", "name": "if", "serializedName": "if", "type": { - "$id": "617", + "$id": "672", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9911,7 +10653,7 @@ }, "parameters": [ { - "$ref": "616" + "$ref": "671" } ], "response": {}, @@ -9921,24 +10663,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withIf" }, { - "$id": "618", + "$id": "673", "kind": "basic", "name": "withImport", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "619", + "$id": "674", "name": "withImport", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "620", + "$id": "675", "kind": "query", "name": "import", "serializedName": "import", "type": { - "$id": "621", + "$id": "676", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9953,12 +10695,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "622", + "$id": "677", "kind": "method", "name": "import", "serializedName": "import", "type": { - "$id": "623", + "$id": "678", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -9997,7 +10739,7 @@ }, "parameters": [ { - "$ref": "622" + "$ref": "677" } ], "response": {}, @@ -10007,24 +10749,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withImport" }, { - "$id": "624", + "$id": "679", "kind": "basic", "name": "withIn", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "625", + "$id": "680", "name": "withIn", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "626", + "$id": "681", "kind": "query", "name": "in", "serializedName": "in", "type": { - "$id": "627", + "$id": "682", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10039,12 +10781,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "628", + "$id": "683", "kind": "method", "name": "in", "serializedName": "in", "type": { - "$id": "629", + "$id": "684", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10083,7 +10825,7 @@ }, "parameters": [ { - "$ref": "628" + "$ref": "683" } ], "response": {}, @@ -10093,24 +10835,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withIn" }, { - "$id": "630", + "$id": "685", "kind": "basic", "name": "withIs", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "631", + "$id": "686", "name": "withIs", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "632", + "$id": "687", "kind": "query", "name": "is", "serializedName": "is", "type": { - "$id": "633", + "$id": "688", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10125,12 +10867,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "634", + "$id": "689", "kind": "method", "name": "is", "serializedName": "is", "type": { - "$id": "635", + "$id": "690", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10169,7 +10911,7 @@ }, "parameters": [ { - "$ref": "634" + "$ref": "689" } ], "response": {}, @@ -10179,24 +10921,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withIs" }, { - "$id": "636", + "$id": "691", "kind": "basic", "name": "withLambda", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "637", + "$id": "692", "name": "withLambda", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "638", + "$id": "693", "kind": "query", "name": "lambda", "serializedName": "lambda", "type": { - "$id": "639", + "$id": "694", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10211,12 +10953,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "640", + "$id": "695", "kind": "method", "name": "lambda", "serializedName": "lambda", "type": { - "$id": "641", + "$id": "696", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10255,7 +10997,7 @@ }, "parameters": [ { - "$ref": "640" + "$ref": "695" } ], "response": {}, @@ -10265,24 +11007,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withLambda" }, { - "$id": "642", + "$id": "697", "kind": "basic", "name": "withNot", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "643", + "$id": "698", "name": "withNot", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "644", + "$id": "699", "kind": "query", "name": "not", "serializedName": "not", "type": { - "$id": "645", + "$id": "700", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10297,12 +11039,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "646", + "$id": "701", "kind": "method", "name": "not", "serializedName": "not", "type": { - "$id": "647", + "$id": "702", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10341,7 +11083,7 @@ }, "parameters": [ { - "$ref": "646" + "$ref": "701" } ], "response": {}, @@ -10351,24 +11093,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withNot" }, { - "$id": "648", + "$id": "703", "kind": "basic", "name": "withOr", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "649", + "$id": "704", "name": "withOr", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "650", + "$id": "705", "kind": "query", "name": "or", "serializedName": "or", "type": { - "$id": "651", + "$id": "706", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10383,12 +11125,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "652", + "$id": "707", "kind": "method", "name": "or", "serializedName": "or", "type": { - "$id": "653", + "$id": "708", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10427,7 +11169,7 @@ }, "parameters": [ { - "$ref": "652" + "$ref": "707" } ], "response": {}, @@ -10437,24 +11179,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withOr" }, { - "$id": "654", + "$id": "709", "kind": "basic", "name": "withPass", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "655", + "$id": "710", "name": "withPass", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "656", + "$id": "711", "kind": "query", "name": "pass", "serializedName": "pass", "type": { - "$id": "657", + "$id": "712", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10469,12 +11211,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "658", + "$id": "713", "kind": "method", "name": "pass", "serializedName": "pass", "type": { - "$id": "659", + "$id": "714", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10513,7 +11255,7 @@ }, "parameters": [ { - "$ref": "658" + "$ref": "713" } ], "response": {}, @@ -10523,24 +11265,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withPass" }, { - "$id": "660", + "$id": "715", "kind": "basic", "name": "withRaise", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "661", + "$id": "716", "name": "withRaise", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "662", + "$id": "717", "kind": "query", "name": "raise", "serializedName": "raise", "type": { - "$id": "663", + "$id": "718", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10555,12 +11297,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "664", + "$id": "719", "kind": "method", "name": "raise", "serializedName": "raise", "type": { - "$id": "665", + "$id": "720", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10599,7 +11341,7 @@ }, "parameters": [ { - "$ref": "664" + "$ref": "719" } ], "response": {}, @@ -10609,24 +11351,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withRaise" }, { - "$id": "666", + "$id": "721", "kind": "basic", "name": "withReturn", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "667", + "$id": "722", "name": "withReturn", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "668", + "$id": "723", "kind": "query", "name": "return", "serializedName": "return", "type": { - "$id": "669", + "$id": "724", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10641,12 +11383,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "670", + "$id": "725", "kind": "method", "name": "return", "serializedName": "return", "type": { - "$id": "671", + "$id": "726", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10685,7 +11427,7 @@ }, "parameters": [ { - "$ref": "670" + "$ref": "725" } ], "response": {}, @@ -10695,24 +11437,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withReturn" }, { - "$id": "672", + "$id": "727", "kind": "basic", "name": "withTry", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "673", + "$id": "728", "name": "withTry", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "674", + "$id": "729", "kind": "query", "name": "try", "serializedName": "try", "type": { - "$id": "675", + "$id": "730", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10727,12 +11469,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "676", + "$id": "731", "kind": "method", "name": "try", "serializedName": "try", "type": { - "$id": "677", + "$id": "732", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10771,7 +11513,7 @@ }, "parameters": [ { - "$ref": "676" + "$ref": "731" } ], "response": {}, @@ -10781,24 +11523,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withTry" }, { - "$id": "678", + "$id": "733", "kind": "basic", "name": "withWhile", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "679", + "$id": "734", "name": "withWhile", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "680", + "$id": "735", "kind": "query", "name": "while", "serializedName": "while", "type": { - "$id": "681", + "$id": "736", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10813,12 +11555,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "682", + "$id": "737", "kind": "method", "name": "while", "serializedName": "while", "type": { - "$id": "683", + "$id": "738", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10857,7 +11599,7 @@ }, "parameters": [ { - "$ref": "682" + "$ref": "737" } ], "response": {}, @@ -10867,24 +11609,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withWhile" }, { - "$id": "684", + "$id": "739", "kind": "basic", "name": "withWith", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "685", + "$id": "740", "name": "withWith", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "686", + "$id": "741", "kind": "query", "name": "with", "serializedName": "with", "type": { - "$id": "687", + "$id": "742", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10899,12 +11641,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "688", + "$id": "743", "kind": "method", "name": "with", "serializedName": "with", "type": { - "$id": "689", + "$id": "744", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10943,7 +11685,7 @@ }, "parameters": [ { - "$ref": "688" + "$ref": "743" } ], "response": {}, @@ -10953,24 +11695,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withWith" }, { - "$id": "690", + "$id": "745", "kind": "basic", "name": "withYield", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "691", + "$id": "746", "name": "withYield", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "692", + "$id": "747", "kind": "query", "name": "yield", "serializedName": "yield", "type": { - "$id": "693", + "$id": "748", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -10985,12 +11727,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "694", + "$id": "749", "kind": "method", "name": "yield", "serializedName": "yield", "type": { - "$id": "695", + "$id": "750", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -11029,7 +11771,7 @@ }, "parameters": [ { - "$ref": "694" + "$ref": "749" } ], "response": {}, @@ -11039,24 +11781,24 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters.withYield" }, { - "$id": "696", + "$id": "751", "kind": "basic", "name": "withCancellationToken", "accessibility": "public", "apiVersions": [], "operation": { - "$id": "697", + "$id": "752", "name": "withCancellationToken", "resourceName": "Parameters", "accessibility": "public", "parameters": [ { - "$id": "698", + "$id": "753", "kind": "query", "name": "cancellationToken", "serializedName": "cancellationToken", "type": { - "$id": "699", + "$id": "754", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -11071,12 +11813,12 @@ "readOnly": false, "methodParameterSegments": [ { - "$id": "700", + "$id": "755", "kind": "method", "name": "cancellationToken", "serializedName": "cancellationToken", "type": { - "$id": "701", + "$id": "756", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string", @@ -11115,7 +11857,7 @@ }, "parameters": [ { - "$ref": "700" + "$ref": "755" } ], "response": {}, @@ -11127,13 +11869,13 @@ ], "parameters": [ { - "$id": "702", + "$id": "757", "kind": "endpoint", "name": "endpoint", "serializedName": "endpoint", "doc": "Service host", "type": { - "$id": "703", + "$id": "758", "kind": "url", "name": "endpoint", "crossLanguageDefinitionId": "TypeSpec.url" @@ -11144,7 +11886,7 @@ "isEndpoint": true, "defaultValue": { "type": { - "$id": "704", + "$id": "759", "kind": "string", "name": "string", "crossLanguageDefinitionId": "TypeSpec.string" @@ -11162,7 +11904,7 @@ "crossLanguageDefinitionId": "SpecialWords.Parameters", "apiVersions": [], "parent": { - "$ref": "199" + "$ref": "242" }, "isMultiServiceClient": false } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..daafccb5cfb --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ArrayClient": { + "type": "object", + "description": "Configuration for ArrayClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/arrayClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "arrayClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.sln deleted file mode 100644 index e4d804fecd2..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Array", "src\Type.Array.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.slnx new file mode 100644 index 00000000000..40326fd109a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/Type.Array.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClient.cs index 515ecb8abaa..1597bfe32fb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type._Array { @@ -11,7 +12,12 @@ public partial class ArrayClient { public ArrayClient() : this(new Uri("http://localhost:3000"), new ArrayClientOptions()) => throw null; - public ArrayClient(Uri endpoint, ArrayClientOptions options) => throw null; + internal ArrayClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ArrayClientOptions options) => throw null; + + public ArrayClient(Uri endpoint, ArrayClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ArrayClient(ArrayClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClientOptions.cs index 90179926109..dc7837266e1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type._Array { public partial class ArrayClientOptions : ClientPipelineOptions { + public ArrayClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ArrayClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClientSettings.cs new file mode 100644 index 00000000000..c315edcc62d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ArrayClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type._Array +{ + [Experimental("SCME0002")] + public partial class ArrayClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ArrayClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/BooleanValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/BooleanValue.cs index 01b3af52309..d290fed4d03 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/BooleanValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/BooleanValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class BooleanValue { protected BooleanValue() => throw null; + internal BooleanValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DatetimeValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DatetimeValue.cs index 720dc85c07b..c7cd4718045 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DatetimeValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DatetimeValue.cs @@ -15,6 +15,8 @@ public partial class DatetimeValue { protected DatetimeValue() => throw null; + internal DatetimeValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DurationValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DurationValue.cs index 2b2696da40c..d41e7956ded 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DurationValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/DurationValue.cs @@ -15,6 +15,8 @@ public partial class DurationValue { protected DurationValue() => throw null; + internal DurationValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Float32Value.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Float32Value.cs index 56b5ffb2f95..139091b980e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Float32Value.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Float32Value.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Float32Value { protected Float32Value() => throw null; + internal Float32Value(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int32Value.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int32Value.cs index 7babbc0f8f9..b38525f6496 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int32Value.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int32Value.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Int32Value { protected Int32Value() => throw null; + internal Int32Value(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int64Value.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int64Value.cs index ba6f600bae1..952fb96e4cc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int64Value.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/Int64Value.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Int64Value { protected Int64Value() => throw null; + internal Int64Value(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ModelValue.cs index d842b2c8829..333dfabdcff 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ModelValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/ModelValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class ModelValue { protected ModelValue() => throw null; + internal ModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableBooleanValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableBooleanValue.cs index 21c9ed002fe..eb0177c832a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableBooleanValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableBooleanValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class NullableBooleanValue { protected NullableBooleanValue() => throw null; + internal NullableBooleanValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableFloatValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableFloatValue.cs index dcfe8553721..ab401bf7739 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableFloatValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableFloatValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class NullableFloatValue { protected NullableFloatValue() => throw null; + internal NullableFloatValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableInt32Value.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableInt32Value.cs index 6aae5a6a603..df168f64ea3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableInt32Value.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableInt32Value.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class NullableInt32Value { protected NullableInt32Value() => throw null; + internal NullableInt32Value(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableModelValue.cs index bb14d5e8e9d..336d4186bd1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableModelValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableModelValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class NullableModelValue { protected NullableModelValue() => throw null; + internal NullableModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableStringValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableStringValue.cs index 490dd4aad6e..f22d0fb8493 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableStringValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/NullableStringValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class NullableStringValue { protected NullableStringValue() => throw null; + internal NullableStringValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/StringValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/StringValue.cs index 7d61138920c..e330fa6ffa4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/StringValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/StringValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class StringValue { protected StringValue() => throw null; + internal StringValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/UnknownValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/UnknownValue.cs index 0fcbbd28461..a049ca8e8b3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/UnknownValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Generated/UnknownValue.cs @@ -15,6 +15,8 @@ public partial class UnknownValue { protected UnknownValue() => throw null; + internal UnknownValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj index 93155a5610c..2a25e1319cc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/array/src/Type.Array.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..62c0abb0cf9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "DictionaryClient": { + "type": "object", + "description": "Configuration for DictionaryClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/dictionaryClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "dictionaryClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.sln deleted file mode 100644 index 2dee9227e1a..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Dictionary", "src\Type.Dictionary.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.slnx new file mode 100644 index 00000000000..d3e5c591f32 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/Type.Dictionary.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/BooleanValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/BooleanValue.cs index 8e54e093f42..f4727e78b82 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/BooleanValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/BooleanValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class BooleanValue { protected BooleanValue() => throw null; + internal BooleanValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DatetimeValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DatetimeValue.cs index 1063eabc942..03241999bc4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DatetimeValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DatetimeValue.cs @@ -15,6 +15,8 @@ public partial class DatetimeValue { protected DatetimeValue() => throw null; + internal DatetimeValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClient.cs index ce6ad9364b3..54d7b564602 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type.Dictionary { @@ -11,7 +12,12 @@ public partial class DictionaryClient { public DictionaryClient() : this(new Uri("http://localhost:3000"), new DictionaryClientOptions()) => throw null; - public DictionaryClient(Uri endpoint, DictionaryClientOptions options) => throw null; + internal DictionaryClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, DictionaryClientOptions options) => throw null; + + public DictionaryClient(Uri endpoint, DictionaryClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public DictionaryClient(DictionaryClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClientOptions.cs index 7cb91a10843..ffc737d6134 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Dictionary { public partial class DictionaryClientOptions : ClientPipelineOptions { + public DictionaryClientOptions() => throw null; + + [Experimental("SCME0002")] + internal DictionaryClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClientSettings.cs new file mode 100644 index 00000000000..2e51cfc2467 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DictionaryClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Dictionary +{ + [Experimental("SCME0002")] + public partial class DictionaryClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public DictionaryClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DurationValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DurationValue.cs index 677f6e3c69f..025fb9260d0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DurationValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/DurationValue.cs @@ -15,6 +15,8 @@ public partial class DurationValue { protected DurationValue() => throw null; + internal DurationValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Float32Value.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Float32Value.cs index 89e188a1dfa..bb5152ac021 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Float32Value.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Float32Value.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Float32Value { protected Float32Value() => throw null; + internal Float32Value(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int32Value.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int32Value.cs index 1746503b91b..943b687f046 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int32Value.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int32Value.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Int32Value { protected Int32Value() => throw null; + internal Int32Value(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int64Value.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int64Value.cs index a86d59c62e2..7963141ea14 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int64Value.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/Int64Value.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Int64Value { protected Int64Value() => throw null; + internal Int64Value(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/ModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/ModelValue.cs index becd3b219d2..58bd7395fb9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/ModelValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/ModelValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class ModelValue { protected ModelValue() => throw null; + internal ModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/NullableFloatValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/NullableFloatValue.cs index bf6a1626799..b1b16591b20 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/NullableFloatValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/NullableFloatValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class NullableFloatValue { protected NullableFloatValue() => throw null; + internal NullableFloatValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/RecursiveModelValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/RecursiveModelValue.cs index 83cced869b4..eb4eac17013 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/RecursiveModelValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/RecursiveModelValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class RecursiveModelValue { protected RecursiveModelValue() => throw null; + internal RecursiveModelValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/StringValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/StringValue.cs index 66b9650148f..7fe039c683c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/StringValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/StringValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class StringValue { protected StringValue() => throw null; + internal StringValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/UnknownValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/UnknownValue.cs index 4106f860d0b..f91e8911853 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/UnknownValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Generated/UnknownValue.cs @@ -15,6 +15,8 @@ public partial class UnknownValue { protected UnknownValue() => throw null; + internal UnknownValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj index 11bf42a6ee9..ea98ba17648 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/dictionary/src/Type.Dictionary.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..0fc3d20c2e0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ExtensibleClient": { + "type": "object", + "description": "Configuration for ExtensibleClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/extensibleClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "extensibleClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.sln deleted file mode 100644 index d5cc5c282de..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Enum.Extensible", "src\Type.Enum.Extensible.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.slnx new file mode 100644 index 00000000000..468d427d3a8 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/Type.Enum.Extensible.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClient.cs index 2d82a8caeb9..25a7ff8aa60 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type._Enum.Extensible { @@ -11,7 +12,12 @@ public partial class ExtensibleClient { public ExtensibleClient() : this(new Uri("http://localhost:3000"), new ExtensibleClientOptions()) => throw null; - public ExtensibleClient(Uri endpoint, ExtensibleClientOptions options) => throw null; + internal ExtensibleClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ExtensibleClientOptions options) => throw null; + + public ExtensibleClient(Uri endpoint, ExtensibleClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ExtensibleClient(ExtensibleClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClientOptions.cs index 525ccf06c11..8abce3f7be1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type._Enum.Extensible { public partial class ExtensibleClientOptions : ClientPipelineOptions { + public ExtensibleClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ExtensibleClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClientSettings.cs new file mode 100644 index 00000000000..feadb885bf8 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/ExtensibleClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type._Enum.Extensible +{ + [Experimental("SCME0002")] + public partial class ExtensibleClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ExtensibleClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/String.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/String.cs index c4aadc25dce..30632b37530 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/String.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Generated/String.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class String { protected String() => throw null; + internal String(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetKnownValue(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj index 4d62e98e5aa..2b969a7821b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/extensible/src/Type.Enum.Extensible.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..3e27428990e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "FixedClient": { + "type": "object", + "description": "Configuration for FixedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/fixedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "fixedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.sln deleted file mode 100644 index 90d62f1d16c..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Enum.Fixed", "src\Type.Enum.Fixed.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.slnx new file mode 100644 index 00000000000..2238609dc02 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/Type.Enum.Fixed.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClient.cs index 3c72b867393..b111aa81947 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type._Enum.Fixed { @@ -11,7 +12,12 @@ public partial class FixedClient { public FixedClient() : this(new Uri("http://localhost:3000"), new FixedClientOptions()) => throw null; - public FixedClient(Uri endpoint, FixedClientOptions options) => throw null; + internal FixedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, FixedClientOptions options) => throw null; + + public FixedClient(Uri endpoint, FixedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public FixedClient(FixedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClientOptions.cs index b3e1ebf26c3..5aa2c9da80c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type._Enum.Fixed { public partial class FixedClientOptions : ClientPipelineOptions { + public FixedClientOptions() => throw null; + + [Experimental("SCME0002")] + internal FixedClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClientSettings.cs new file mode 100644 index 00000000000..4e365e6f6c5 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/FixedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type._Enum.Fixed +{ + [Experimental("SCME0002")] + public partial class FixedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public FixedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/String.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/String.cs index 65c6edb1c24..056c892aa72 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/String.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Generated/String.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class String { protected String() => throw null; + internal String(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetKnownValue(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj index 7a0f3b184b1..fcaba6c305f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/enum/fixed/src/Type.Enum.Fixed.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..ee38e5032d5 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "EmptyClient": { + "type": "object", + "description": "Configuration for EmptyClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/emptyClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "emptyClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.sln deleted file mode 100644 index 5f25ff5e3f4..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Empty", "src\Type.Model.Empty.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.slnx new file mode 100644 index 00000000000..fb923db596a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/Type.Model.Empty.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClient.cs index 70d8023048c..00f7325cbd9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class EmptyClient { public EmptyClient() : this(new Uri("http://localhost:3000"), new EmptyClientOptions()) => throw null; - public EmptyClient(Uri endpoint, EmptyClientOptions options) => throw null; + internal EmptyClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, EmptyClientOptions options) => throw null; + + public EmptyClient(Uri endpoint, EmptyClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public EmptyClient(EmptyClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClientOptions.cs index 56e786c637d..624ba0c0143 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Empty { public partial class EmptyClientOptions : ClientPipelineOptions { + public EmptyClientOptions() => throw null; + + [Experimental("SCME0002")] + internal EmptyClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClientSettings.cs new file mode 100644 index 00000000000..8635789555e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Generated/EmptyClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Empty +{ + [Experimental("SCME0002")] + public partial class EmptyClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public EmptyClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj index a7f9887b0be..7521a83810e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/empty/src/Type.Model.Empty.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..7591f16230a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "EnumDiscriminatorClient": { + "type": "object", + "description": "Configuration for EnumDiscriminatorClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/enumDiscriminatorClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "enumDiscriminatorClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.sln deleted file mode 100644 index dcef5e7a9f6..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Inheritance.EnumDiscriminator", "src\Type.Model.Inheritance.EnumDiscriminator.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.slnx new file mode 100644 index 00000000000..41d13cdd4cf --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/Type.Model.Inheritance.EnumDiscriminator.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClient.cs index 2eec9f2f047..ca37716df88 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class EnumDiscriminatorClient { public EnumDiscriminatorClient() : this(new Uri("http://localhost:3000"), new EnumDiscriminatorClientOptions()) => throw null; - public EnumDiscriminatorClient(Uri endpoint, EnumDiscriminatorClientOptions options) => throw null; + internal EnumDiscriminatorClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, EnumDiscriminatorClientOptions options) => throw null; + + public EnumDiscriminatorClient(Uri endpoint, EnumDiscriminatorClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public EnumDiscriminatorClient(EnumDiscriminatorClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClientOptions.cs index fc64fcba766..3945cd829b8 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Inheritance.EnumDiscriminator { public partial class EnumDiscriminatorClientOptions : ClientPipelineOptions { + public EnumDiscriminatorClientOptions() => throw null; + + [Experimental("SCME0002")] + internal EnumDiscriminatorClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClientSettings.cs new file mode 100644 index 00000000000..fd5914814bd --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Generated/EnumDiscriminatorClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Inheritance.EnumDiscriminator +{ + [Experimental("SCME0002")] + public partial class EnumDiscriminatorClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public EnumDiscriminatorClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj index 35612789efc..0ac970a8693 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/enum-discriminator/src/Type.Model.Inheritance.EnumDiscriminator.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..6b466ad2b16 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "NestedDiscriminatorClient": { + "type": "object", + "description": "Configuration for NestedDiscriminatorClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/nestedDiscriminatorClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "nestedDiscriminatorClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.sln deleted file mode 100644 index a2e743aa191..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Inheritance.NestedDiscriminator", "src\Type.Model.Inheritance.NestedDiscriminator.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.slnx new file mode 100644 index 00000000000..0639b901d73 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/Type.Model.Inheritance.NestedDiscriminator.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClient.cs index 677ad5ba4f3..7e5536731ab 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class NestedDiscriminatorClient { public NestedDiscriminatorClient() : this(new Uri("http://localhost:3000"), new NestedDiscriminatorClientOptions()) => throw null; - public NestedDiscriminatorClient(Uri endpoint, NestedDiscriminatorClientOptions options) => throw null; + internal NestedDiscriminatorClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, NestedDiscriminatorClientOptions options) => throw null; + + public NestedDiscriminatorClient(Uri endpoint, NestedDiscriminatorClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public NestedDiscriminatorClient(NestedDiscriminatorClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClientOptions.cs index 000960d84d9..f6c8cb646ab 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Inheritance.NestedDiscriminator { public partial class NestedDiscriminatorClientOptions : ClientPipelineOptions { + public NestedDiscriminatorClientOptions() => throw null; + + [Experimental("SCME0002")] + internal NestedDiscriminatorClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClientSettings.cs new file mode 100644 index 00000000000..ebb7fd9e0c8 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Generated/NestedDiscriminatorClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Inheritance.NestedDiscriminator +{ + [Experimental("SCME0002")] + public partial class NestedDiscriminatorClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public NestedDiscriminatorClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj index dc43dde34f4..315202455ce 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/nested-discriminator/src/Type.Model.Inheritance.NestedDiscriminator.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..3ef39b513d4 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "NotDiscriminatedClient": { + "type": "object", + "description": "Configuration for NotDiscriminatedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/notDiscriminatedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "notDiscriminatedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.sln deleted file mode 100644 index e69774eeed0..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Inheritance.NotDiscriminated", "src\Type.Model.Inheritance.NotDiscriminated.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.slnx new file mode 100644 index 00000000000..64389cb7479 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/Type.Model.Inheritance.NotDiscriminated.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClient.cs index e573655283f..4a7e240071e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class NotDiscriminatedClient { public NotDiscriminatedClient() : this(new Uri("http://localhost:3000"), new NotDiscriminatedClientOptions()) => throw null; - public NotDiscriminatedClient(Uri endpoint, NotDiscriminatedClientOptions options) => throw null; + internal NotDiscriminatedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, NotDiscriminatedClientOptions options) => throw null; + + public NotDiscriminatedClient(Uri endpoint, NotDiscriminatedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public NotDiscriminatedClient(NotDiscriminatedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClientOptions.cs index c727712c1f8..7b39c39bee2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Inheritance.NotDiscriminated { public partial class NotDiscriminatedClientOptions : ClientPipelineOptions { + public NotDiscriminatedClientOptions() => throw null; + + [Experimental("SCME0002")] + internal NotDiscriminatedClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClientSettings.cs new file mode 100644 index 00000000000..eab881e66bc --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Generated/NotDiscriminatedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Inheritance.NotDiscriminated +{ + [Experimental("SCME0002")] + public partial class NotDiscriminatedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public NotDiscriminatedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj index c3f4519509b..54e293fc407 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/not-discriminated/src/Type.Model.Inheritance.NotDiscriminated.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..5433e73d760 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RecursiveClient": { + "type": "object", + "description": "Configuration for RecursiveClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/recursiveClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "recursiveClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.sln deleted file mode 100644 index f0cfad269e1..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Inheritance.Recursive", "src\Type.Model.Inheritance.Recursive.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.slnx new file mode 100644 index 00000000000..188ae06c000 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/Type.Model.Inheritance.Recursive.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClient.cs index 50140c50d04..1f429a7f058 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class RecursiveClient { public RecursiveClient() : this(new Uri("http://localhost:3000"), new RecursiveClientOptions()) => throw null; - public RecursiveClient(Uri endpoint, RecursiveClientOptions options) => throw null; + internal RecursiveClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RecursiveClientOptions options) => throw null; + + public RecursiveClient(Uri endpoint, RecursiveClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RecursiveClient(RecursiveClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClientOptions.cs index cf994ec31db..3d72ed64ff1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Inheritance.Recursive { public partial class RecursiveClientOptions : ClientPipelineOptions { + public RecursiveClientOptions() => throw null; + + [Experimental("SCME0002")] + internal RecursiveClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClientSettings.cs new file mode 100644 index 00000000000..deaa4e1f167 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Generated/RecursiveClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Inheritance.Recursive +{ + [Experimental("SCME0002")] + public partial class RecursiveClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RecursiveClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj index 8a71cad9164..b2441f862e5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/recursive/src/Type.Model.Inheritance.Recursive.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..d4c2f8f2c9e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "SingleDiscriminatorClient": { + "type": "object", + "description": "Configuration for SingleDiscriminatorClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/singleDiscriminatorClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "singleDiscriminatorClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.sln deleted file mode 100644 index a5bec840080..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Inheritance.SingleDiscriminator", "src\Type.Model.Inheritance.SingleDiscriminator.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.slnx new file mode 100644 index 00000000000..db28f492b19 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/Type.Model.Inheritance.SingleDiscriminator.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClient.cs index 261b93c7665..d6a1a0eb170 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class SingleDiscriminatorClient { public SingleDiscriminatorClient() : this(new Uri("http://localhost:3000"), new SingleDiscriminatorClientOptions()) => throw null; - public SingleDiscriminatorClient(Uri endpoint, SingleDiscriminatorClientOptions options) => throw null; + internal SingleDiscriminatorClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, SingleDiscriminatorClientOptions options) => throw null; + + public SingleDiscriminatorClient(Uri endpoint, SingleDiscriminatorClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public SingleDiscriminatorClient(SingleDiscriminatorClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClientOptions.cs index ab3b42d7150..2b4f31e4023 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Inheritance.SingleDiscriminator { public partial class SingleDiscriminatorClientOptions : ClientPipelineOptions { + public SingleDiscriminatorClientOptions() => throw null; + + [Experimental("SCME0002")] + internal SingleDiscriminatorClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClientSettings.cs new file mode 100644 index 00000000000..ab187bd8d92 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Generated/SingleDiscriminatorClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Inheritance.SingleDiscriminator +{ + [Experimental("SCME0002")] + public partial class SingleDiscriminatorClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public SingleDiscriminatorClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj index 9595f93156b..6682bd9dce1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/inheritance/single-discriminator/src/Type.Model.Inheritance.SingleDiscriminator.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..e442e4b354e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "UsageClient": { + "type": "object", + "description": "Configuration for UsageClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/usageClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "usageClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.sln deleted file mode 100644 index 7acf3dee947..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Usage", "src\Type.Model.Usage.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.slnx new file mode 100644 index 00000000000..19b4cddb9b1 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/Type.Model.Usage.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClient.cs index cd3f6b4c23d..b1571ae1df5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class UsageClient { public UsageClient() : this(new Uri("http://localhost:3000"), new UsageClientOptions()) => throw null; - public UsageClient(Uri endpoint, UsageClientOptions options) => throw null; + internal UsageClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, UsageClientOptions options) => throw null; + + public UsageClient(Uri endpoint, UsageClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public UsageClient(UsageClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClientOptions.cs index 307a5173a35..d5df51bba00 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Usage { public partial class UsageClientOptions : ClientPipelineOptions { + public UsageClientOptions() => throw null; + + [Experimental("SCME0002")] + internal UsageClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClientSettings.cs new file mode 100644 index 00000000000..1d813163af2 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Generated/UsageClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Usage +{ + [Experimental("SCME0002")] + public partial class UsageClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public UsageClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj index e2ed8c43863..d1eb6c72547 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/usage/src/Type.Model.Usage.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..f8b38a4807e --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "VisibilityClient": { + "type": "object", + "description": "Configuration for VisibilityClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/visibilityClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "visibilityClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.sln deleted file mode 100644 index 98f2d813153..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Model.Visibility", "src\Type.Model.Visibility.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.slnx new file mode 100644 index 00000000000..fe0013bedf8 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/Type.Model.Visibility.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClient.cs index 901d82e4098..dfb167036d6 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -14,7 +15,12 @@ public partial class VisibilityClient { public VisibilityClient() : this(new Uri("http://localhost:3000"), new VisibilityClientOptions()) => throw null; - public VisibilityClient(Uri endpoint, VisibilityClientOptions options) => throw null; + internal VisibilityClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, VisibilityClientOptions options) => throw null; + + public VisibilityClient(Uri endpoint, VisibilityClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public VisibilityClient(VisibilityClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClientOptions.cs index a32153c9626..520f19501ba 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Model.Visibility { public partial class VisibilityClientOptions : ClientPipelineOptions { + public VisibilityClientOptions() => throw null; + + [Experimental("SCME0002")] + internal VisibilityClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClientSettings.cs new file mode 100644 index 00000000000..75f60f4f199 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Generated/VisibilityClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Model.Visibility +{ + [Experimental("SCME0002")] + public partial class VisibilityClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public VisibilityClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj index 92cf919ec3a..fd033366bfc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/model/visibility/src/Type.Model.Visibility.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..97c6be67bb3 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "AdditionalPropertiesClient": { + "type": "object", + "description": "Configuration for AdditionalPropertiesClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/additionalPropertiesClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "additionalPropertiesClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.sln deleted file mode 100644 index 7f833d99500..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Property.AdditionalProperties", "src\Type.Property.AdditionalProperties.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.slnx new file mode 100644 index 00000000000..3b2c00a49ed --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/Type.Property.AdditionalProperties.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClient.cs index 86b144da674..237007e44d6 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type.Property.AdditionalProperties { @@ -11,7 +12,12 @@ public partial class AdditionalPropertiesClient { public AdditionalPropertiesClient() : this(new Uri("http://localhost:3000"), new AdditionalPropertiesClientOptions()) => throw null; - public AdditionalPropertiesClient(Uri endpoint, AdditionalPropertiesClientOptions options) => throw null; + internal AdditionalPropertiesClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, AdditionalPropertiesClientOptions options) => throw null; + + public AdditionalPropertiesClient(Uri endpoint, AdditionalPropertiesClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public AdditionalPropertiesClient(AdditionalPropertiesClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClientOptions.cs index 131277df71b..6564b4c3c8b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Property.AdditionalProperties { public partial class AdditionalPropertiesClientOptions : ClientPipelineOptions { + public AdditionalPropertiesClientOptions() => throw null; + + [Experimental("SCME0002")] + internal AdditionalPropertiesClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClientSettings.cs new file mode 100644 index 00000000000..2ecc0cb99b0 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/AdditionalPropertiesClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Property.AdditionalProperties +{ + [Experimental("SCME0002")] + public partial class AdditionalPropertiesClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public AdditionalPropertiesClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadFloat.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadFloat.cs index 3711caec903..aa298158cb9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadFloat.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadFloat.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsDifferentSpreadFloat { protected ExtendsDifferentSpreadFloat() => throw null; + internal ExtendsDifferentSpreadFloat(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModel.cs index 16952422f03..eaf913f4276 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsDifferentSpreadModel { protected ExtendsDifferentSpreadModel() => throw null; + internal ExtendsDifferentSpreadModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModelArray.cs index cafdfaa177b..2aacfeb2d02 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModelArray.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadModelArray.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsDifferentSpreadModelArray { protected ExtendsDifferentSpreadModelArray() => throw null; + internal ExtendsDifferentSpreadModelArray(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadString.cs index 14de43be0c4..3ee0ddc45c5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsDifferentSpreadString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsDifferentSpreadString { protected ExtendsDifferentSpreadString() => throw null; + internal ExtendsDifferentSpreadString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsFloat.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsFloat.cs index db8c90aa883..6f55bee1976 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsFloat.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsFloat.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsFloat { protected ExtendsFloat() => throw null; + internal ExtendsFloat(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModel.cs index fc3605496dc..a3e6a49c40f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsModel { protected ExtendsModel() => throw null; + internal ExtendsModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModelArray.cs index 9fac072dc49..1da8aae31d1 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModelArray.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsModelArray.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsModelArray { protected ExtendsModelArray() => throw null; + internal ExtendsModelArray(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsString.cs index 25a8bce5e84..13a5fbf8c13 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsString { protected ExtendsString() => throw null; + internal ExtendsString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknown.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknown.cs index 3beb5baea3f..6e539221d9b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknown.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknown.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsUnknown { protected ExtendsUnknown() => throw null; + internal ExtendsUnknown(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDerived.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDerived.cs index 1ba9e2819a5..f1636a68905 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDerived.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDerived.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsUnknownDerived { protected ExtendsUnknownDerived() => throw null; + internal ExtendsUnknownDerived(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDiscriminated.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDiscriminated.cs index dddd20125ee..261d9de0a04 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDiscriminated.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/ExtendsUnknownDiscriminated.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtendsUnknownDiscriminated { protected ExtendsUnknownDiscriminated() => throw null; + internal ExtendsUnknownDiscriminated(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsFloat.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsFloat.cs index 74284e4cd58..8be79e2ef26 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsFloat.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsFloat.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IsFloat { protected IsFloat() => throw null; + internal IsFloat(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModel.cs index 035ee852f98..65a3fa72022 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IsModel { protected IsModel() => throw null; + internal IsModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModelArray.cs index cb2785116e5..a4a639ee799 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModelArray.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsModelArray.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IsModelArray { protected IsModelArray() => throw null; + internal IsModelArray(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsString.cs index 6281cebe5bc..10718fca333 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IsString { protected IsString() => throw null; + internal IsString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknown.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknown.cs index 756f70c38ba..19c46424094 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknown.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknown.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IsUnknown { protected IsUnknown() => throw null; + internal IsUnknown(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDerived.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDerived.cs index c60981109bc..50e217613ef 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDerived.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDerived.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IsUnknownDerived { protected IsUnknownDerived() => throw null; + internal IsUnknownDerived(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDiscriminated.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDiscriminated.cs index 3686c8c898c..f6470550016 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDiscriminated.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/IsUnknownDiscriminated.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IsUnknownDiscriminated { protected IsUnknownDiscriminated() => throw null; + internal IsUnknownDiscriminated(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/MultipleSpread.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/MultipleSpread.cs index 9b081a1a362..47355266fd2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/MultipleSpread.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/MultipleSpread.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class MultipleSpread { protected MultipleSpread() => throw null; + internal MultipleSpread(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentFloat.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentFloat.cs index f86ae0c3e6e..33d2e052e33 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentFloat.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentFloat.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadDifferentFloat { protected SpreadDifferentFloat() => throw null; + internal SpreadDifferentFloat(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModel.cs index 0ba5c6d4854..a69132c7526 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadDifferentModel { protected SpreadDifferentModel() => throw null; + internal SpreadDifferentModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModelArray.cs index 0d1cd493e84..5c6d809aa7c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModelArray.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentModelArray.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadDifferentModelArray { protected SpreadDifferentModelArray() => throw null; + internal SpreadDifferentModelArray(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentString.cs index d990d8ba2c3..4123898a1ec 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadDifferentString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadDifferentString { protected SpreadDifferentString() => throw null; + internal SpreadDifferentString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadFloat.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadFloat.cs index a97ea7ff831..a529e2b406f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadFloat.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadFloat.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadFloat { protected SpreadFloat() => throw null; + internal SpreadFloat(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModel.cs index 3db2515a716..002a15917bc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadModel { protected SpreadModel() => throw null; + internal SpreadModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModelArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModelArray.cs index aec0c659e11..bdc347b9941 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModelArray.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadModelArray.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadModelArray { protected SpreadModelArray() => throw null; + internal SpreadModelArray(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion.cs index 89de049334c..dfd6786a0ab 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadRecordNonDiscriminatedUnion { protected SpreadRecordNonDiscriminatedUnion() => throw null; + internal SpreadRecordNonDiscriminatedUnion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion2.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion2.cs index e78b2929cd9..d33e1a547dc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion2.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion2.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadRecordNonDiscriminatedUnion2 { protected SpreadRecordNonDiscriminatedUnion2() => throw null; + internal SpreadRecordNonDiscriminatedUnion2(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion3.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion3.cs index ecb9285fa4e..76b3cf8b1fe 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion3.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordNonDiscriminatedUnion3.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadRecordNonDiscriminatedUnion3 { protected SpreadRecordNonDiscriminatedUnion3() => throw null; + internal SpreadRecordNonDiscriminatedUnion3(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordUnion.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordUnion.cs index 7cc11db7439..97de92c85f4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordUnion.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadRecordUnion.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadRecordUnion { protected SpreadRecordUnion() => throw null; + internal SpreadRecordUnion(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadString.cs index 2c4d33288de..4864d532e5a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Generated/SpreadString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class SpreadString { protected SpreadString() => throw null; + internal SpreadString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj index 0d612975af4..5300a4b5bbe 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/additional-properties/src/Type.Property.AdditionalProperties.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..706088c678c --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "NullableClient": { + "type": "object", + "description": "Configuration for NullableClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/nullableClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "nullableClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.sln deleted file mode 100644 index eb4002143d4..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Property.Nullable", "src\Type.Property.Nullable.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.slnx new file mode 100644 index 00000000000..465bd6383dd --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/Type.Property.Nullable.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Bytes.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Bytes.cs index eacf8814b15..4e6ff0b6f10 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Bytes.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Bytes.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Bytes { protected Bytes() => throw null; + internal Bytes(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetNonNull(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsByte.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsByte.cs index ad2cd996943..147ed22adef 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsByte.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsByte.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsByte { protected CollectionsByte() => throw null; + internal CollectionsByte(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetNonNull(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsModel.cs index a424dcc6309..a2cb3752dd3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsModel { protected CollectionsModel() => throw null; + internal CollectionsModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetNonNull(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsString.cs index 3481b5221d5..9ebdb4ed447 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/CollectionsString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsString { protected CollectionsString() => throw null; + internal CollectionsString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetNonNull(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Datetime.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Datetime.cs index 2d316f989b4..65fd66ab449 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Datetime.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Datetime.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Datetime { protected Datetime() => throw null; + internal Datetime(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetNonNull(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Duration.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Duration.cs index 5436a4fda27..d1091acfe3d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Duration.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/Duration.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Duration { protected Duration() => throw null; + internal Duration(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetNonNull(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClient.cs index 96329118412..af9921af400 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type.Property.Nullable { @@ -11,7 +12,12 @@ public partial class NullableClient { public NullableClient() : this(new Uri("http://localhost:3000"), new NullableClientOptions()) => throw null; - public NullableClient(Uri endpoint, NullableClientOptions options) => throw null; + internal NullableClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, NullableClientOptions options) => throw null; + + public NullableClient(Uri endpoint, NullableClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public NullableClient(NullableClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClientOptions.cs index d4939dbbb1f..4e33d510c38 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Property.Nullable { public partial class NullableClientOptions : ClientPipelineOptions { + public NullableClientOptions() => throw null; + + [Experimental("SCME0002")] + internal NullableClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClientSettings.cs new file mode 100644 index 00000000000..738504eba24 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/NullableClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Property.Nullable +{ + [Experimental("SCME0002")] + public partial class NullableClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public NullableClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/String.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/String.cs index 461ad9d615b..786c381fb0b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/String.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Generated/String.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class String { protected String() => throw null; + internal String(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetNonNull(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj index 1b4cc3f50c5..7c66e997909 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/nullable/src/Type.Property.Nullable.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..0bc6d6dae33 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "OptionalClient": { + "type": "object", + "description": "Configuration for OptionalClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/optionalClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "optionalClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.sln deleted file mode 100644 index 4ef05d27fbe..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Property.Optional", "src\Type.Property.Optional.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.slnx new file mode 100644 index 00000000000..a643d32ee3b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/Type.Property.Optional.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/BooleanLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/BooleanLiteral.cs index 593e92d4244..6dca0711f46 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/BooleanLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/BooleanLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class BooleanLiteral { protected BooleanLiteral() => throw null; + internal BooleanLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Bytes.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Bytes.cs index b4d7e3788e8..44c535cc253 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Bytes.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Bytes.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Bytes { protected Bytes() => throw null; + internal Bytes(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsByte.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsByte.cs index 706f6515fc5..808a6ca8b49 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsByte.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsByte.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsByte { protected CollectionsByte() => throw null; + internal CollectionsByte(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsModel.cs index dfe28feac96..00be1dcec43 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/CollectionsModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsModel { protected CollectionsModel() => throw null; + internal CollectionsModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Datetime.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Datetime.cs index 5e578c2da19..3b2e4f0017b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Datetime.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Datetime.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Datetime { protected Datetime() => throw null; + internal Datetime(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Duration.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Duration.cs index 03d2758ff8a..9a9c63ae762 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Duration.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/Duration.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Duration { protected Duration() => throw null; + internal Duration(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/FloatLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/FloatLiteral.cs index 7d71a102cd8..f7504a61cf2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/FloatLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/FloatLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class FloatLiteral { protected FloatLiteral() => throw null; + internal FloatLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/IntLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/IntLiteral.cs index 5f5db298391..3309e35bfe2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/IntLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/IntLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IntLiteral { protected IntLiteral() => throw null; + internal IntLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClient.cs index 6f67bdc1b3a..359640c4a3f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type.Property.Optional { @@ -11,7 +12,12 @@ public partial class OptionalClient { public OptionalClient() : this(new Uri("http://localhost:3000"), new OptionalClientOptions()) => throw null; - public OptionalClient(Uri endpoint, OptionalClientOptions options) => throw null; + internal OptionalClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, OptionalClientOptions options) => throw null; + + public OptionalClient(Uri endpoint, OptionalClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public OptionalClient(OptionalClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClientOptions.cs index a9ffaadfe8f..822e91c77df 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Property.Optional { public partial class OptionalClientOptions : ClientPipelineOptions { + public OptionalClientOptions() => throw null; + + [Experimental("SCME0002")] + internal OptionalClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClientSettings.cs new file mode 100644 index 00000000000..b6de9fdd7d6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/OptionalClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Property.Optional +{ + [Experimental("SCME0002")] + public partial class OptionalClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public OptionalClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainDate.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainDate.cs index 27c9d8c861b..f95ec369404 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainDate.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainDate.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class PlainDate { protected PlainDate() => throw null; + internal PlainDate(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainTime.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainTime.cs index 733f618e280..91c30419caf 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainTime.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/PlainTime.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class PlainTime { protected PlainTime() => throw null; + internal PlainTime(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/RequiredAndOptional.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/RequiredAndOptional.cs index 94bf40cd0f3..3253e5b109d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/RequiredAndOptional.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/RequiredAndOptional.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class RequiredAndOptional { protected RequiredAndOptional() => throw null; + internal RequiredAndOptional(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/String.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/String.cs index 223187bfb1e..def30985883 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/String.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/String.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class String { protected String() => throw null; + internal String(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/StringLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/StringLiteral.cs index d6fca1040c1..a60ba46a07e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/StringLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/StringLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class StringLiteral { protected StringLiteral() => throw null; + internal StringLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionFloatLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionFloatLiteral.cs index aa088f014e9..9471446beff 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionFloatLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionFloatLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnionFloatLiteral { protected UnionFloatLiteral() => throw null; + internal UnionFloatLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionIntLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionIntLiteral.cs index 65a65dc54ce..45324fc4c4d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionIntLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionIntLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnionIntLiteral { protected UnionIntLiteral() => throw null; + internal UnionIntLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionStringLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionStringLiteral.cs index 1041ae1cf99..4a44db8c460 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionStringLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Generated/UnionStringLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnionStringLiteral { protected UnionStringLiteral() => throw null; + internal UnionStringLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult GetAll(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj index 67f8b6664e2..6b53ec32395 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/optionality/src/Type.Property.Optional.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..ac2ba5078ef --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ValueTypesClient": { + "type": "object", + "description": "Configuration for ValueTypesClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/valueTypesClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "valueTypesClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.sln deleted file mode 100644 index f87a00fca3f..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Property.ValueTypes", "src\Type.Property.ValueTypes.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.slnx new file mode 100644 index 00000000000..93de877c438 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/Type.Property.ValueTypes.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Boolean.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Boolean.cs index 3f6b9d2df7c..f4e93d97aa5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Boolean.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Boolean.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Boolean { protected Boolean() => throw null; + internal Boolean(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/BooleanLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/BooleanLiteral.cs index 679f7a738e3..e2bdc72c983 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/BooleanLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/BooleanLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class BooleanLiteral { protected BooleanLiteral() => throw null; + internal BooleanLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Bytes.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Bytes.cs index b0a807a9c6d..428e3397974 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Bytes.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Bytes.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Bytes { protected Bytes() => throw null; + internal Bytes(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsInt.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsInt.cs index 3e6cc227cf5..f49bb79df44 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsInt.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsInt.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsInt { protected CollectionsInt() => throw null; + internal CollectionsInt(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsModel.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsModel.cs index 2a9ffb958a8..e40359c230c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsModel.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsModel.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsModel { protected CollectionsModel() => throw null; + internal CollectionsModel(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsString.cs index c1dd5d23c45..18a7083e450 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/CollectionsString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class CollectionsString { protected CollectionsString() => throw null; + internal CollectionsString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Datetime.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Datetime.cs index b8f6983712b..9b6385a11da 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Datetime.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Datetime.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Datetime { protected Datetime() => throw null; + internal Datetime(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal.cs index cfc5fa3fc48..90ac68ab77b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Decimal { protected Decimal() => throw null; + internal Decimal(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal128.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal128.cs index 553501b9bdd..06b87e33722 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal128.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Decimal128.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Decimal128 { protected Decimal128() => throw null; + internal Decimal128(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/DictionaryString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/DictionaryString.cs index 0da288b589b..d1d5dc8e06e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/DictionaryString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/DictionaryString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class DictionaryString { protected DictionaryString() => throw null; + internal DictionaryString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Duration.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Duration.cs index fb81d1ff2de..304ea7ce05e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Duration.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Duration.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Duration { protected Duration() => throw null; + internal Duration(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Enum.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Enum.cs index 082585a6b1b..6ee002b6a38 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Enum.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Enum.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Enum { protected Enum() => throw null; + internal Enum(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ExtensibleEnum.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ExtensibleEnum.cs index 1d39d6232b2..05e0b19b4c5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ExtensibleEnum.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ExtensibleEnum.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class ExtensibleEnum { protected ExtensibleEnum() => throw null; + internal ExtensibleEnum(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Float.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Float.cs index 89917bd0d67..31ca39d2378 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Float.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Float.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Float { protected Float() => throw null; + internal Float(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/FloatLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/FloatLiteral.cs index 89f86508d9d..272147c3f79 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/FloatLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/FloatLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class FloatLiteral { protected FloatLiteral() => throw null; + internal FloatLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Int.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Int.cs index e4e359014ea..42d5cab9109 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Int.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Int.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Int { protected Int() => throw null; + internal Int(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/IntLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/IntLiteral.cs index 75851545805..1504957189f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/IntLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/IntLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IntLiteral { protected IntLiteral() => throw null; + internal IntLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Model.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Model.cs index 83467e85608..1c306e46d07 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Model.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Model.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Model { protected Model() => throw null; + internal Model(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Never.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Never.cs index 92ff671d14a..8e08e0fa31e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Never.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/Never.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Never { protected Never() => throw null; + internal Never(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/String.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/String.cs index 750373bbcfc..c49f8856b95 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/String.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/String.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class String { protected String() => throw null; + internal String(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/StringLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/StringLiteral.cs index d02b76d3dd6..4e4108e032f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/StringLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/StringLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class StringLiteral { protected StringLiteral() => throw null; + internal StringLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionEnumValue.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionEnumValue.cs index 69962b5cd3f..bc5592782ce 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionEnumValue.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionEnumValue.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnionEnumValue { protected UnionEnumValue() => throw null; + internal UnionEnumValue(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionFloatLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionFloatLiteral.cs index 620ccef7d9d..b722ec14e86 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionFloatLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionFloatLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnionFloatLiteral { protected UnionFloatLiteral() => throw null; + internal UnionFloatLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionIntLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionIntLiteral.cs index 64b2d1651f8..32e42a85f40 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionIntLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionIntLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnionIntLiteral { protected UnionIntLiteral() => throw null; + internal UnionIntLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionStringLiteral.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionStringLiteral.cs index 8dbaa7dec43..fde1c748c4d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionStringLiteral.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnionStringLiteral.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnionStringLiteral { protected UnionStringLiteral() => throw null; + internal UnionStringLiteral(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownArray.cs index b8e85f2c700..f40c76b820a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownArray.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownArray.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnknownArray { protected UnknownArray() => throw null; + internal UnknownArray(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownDict.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownDict.cs index 6c050d94eff..81fdff22645 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownDict.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownDict.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnknownDict { protected UnknownDict() => throw null; + internal UnknownDict(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownInt.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownInt.cs index 222c28277e7..fb2f59c1cc5 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownInt.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownInt.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnknownInt { protected UnknownInt() => throw null; + internal UnknownInt(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownString.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownString.cs index 2af9c5e7276..bb587ae7036 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownString.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/UnknownString.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class UnknownString { protected UnknownString() => throw null; + internal UnknownString(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClient.cs index 2d928c3bb26..f0d9d59fb35 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type.Property.ValueTypes { @@ -11,7 +12,12 @@ public partial class ValueTypesClient { public ValueTypesClient() : this(new Uri("http://localhost:3000"), new ValueTypesClientOptions()) => throw null; - public ValueTypesClient(Uri endpoint, ValueTypesClientOptions options) => throw null; + internal ValueTypesClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ValueTypesClientOptions options) => throw null; + + public ValueTypesClient(Uri endpoint, ValueTypesClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ValueTypesClient(ValueTypesClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClientOptions.cs index ecfa4e24e2a..2a908e1bd20 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Property.ValueTypes { public partial class ValueTypesClientOptions : ClientPipelineOptions { + public ValueTypesClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ValueTypesClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClientSettings.cs new file mode 100644 index 00000000000..804ef7bdb0c --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Generated/ValueTypesClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Property.ValueTypes +{ + [Experimental("SCME0002")] + public partial class ValueTypesClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ValueTypesClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj index baf7b168641..659d3bd4a6b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/property/value-types/src/Type.Property.ValueTypes.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..a5186dcd3fe --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ScalarClient": { + "type": "object", + "description": "Configuration for ScalarClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/scalarClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "scalarClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.sln deleted file mode 100644 index 6b75b4bfc6f..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Scalar", "src\Type.Scalar.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.slnx new file mode 100644 index 00000000000..802e7971500 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/Type.Scalar.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Boolean.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Boolean.cs index 12a173aba7d..f3a074a4c57 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Boolean.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Boolean.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Boolean { protected Boolean() => throw null; + internal Boolean(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Type.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Type.cs index 941ee7e41dc..6e3566ea66a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Type.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Type.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class Decimal128Type { protected Decimal128Type() => throw null; + internal Decimal128Type(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult ResponseBody(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Verify.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Verify.cs index 01200f453d3..11e138c5ac3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Verify.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Decimal128Verify.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class Decimal128Verify { protected Decimal128Verify() => throw null; + internal Decimal128Verify(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult PrepareVerify(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalType.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalType.cs index 281338de6ca..c225451e654 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalType.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalType.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class DecimalType { protected DecimalType() => throw null; + internal DecimalType(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult ResponseBody(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalVerify.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalVerify.cs index 3c38a946f65..6b00b6964ac 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalVerify.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/DecimalVerify.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Collections.Generic; @@ -14,6 +15,8 @@ public partial class DecimalVerify { protected DecimalVerify() => throw null; + internal DecimalVerify(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult PrepareVerify(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClient.cs index 7a2ab78771c..c446fb20afc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type.Scalar { @@ -11,7 +12,12 @@ public partial class ScalarClient { public ScalarClient() : this(new Uri("http://localhost:3000"), new ScalarClientOptions()) => throw null; - public ScalarClient(Uri endpoint, ScalarClientOptions options) => throw null; + internal ScalarClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ScalarClientOptions options) => throw null; + + public ScalarClient(Uri endpoint, ScalarClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ScalarClient(ScalarClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClientOptions.cs index 315778f0dfa..16a42e8a09c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Scalar { public partial class ScalarClientOptions : ClientPipelineOptions { + public ScalarClientOptions() => throw null; + + [Experimental("SCME0002")] + internal ScalarClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClientSettings.cs new file mode 100644 index 00000000000..c16448023ec --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/ScalarClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Scalar +{ + [Experimental("SCME0002")] + public partial class ScalarClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ScalarClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/String.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/String.cs index b1b7388d369..e58e6a99949 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/String.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/String.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class String { protected String() => throw null; + internal String(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Unknown.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Unknown.cs index 39e08fd7025..ad255b77e27 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Unknown.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Generated/Unknown.cs @@ -14,6 +14,8 @@ public partial class Unknown { protected Unknown() => throw null; + internal Unknown(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj index 133ae6e4c0b..561732ea7a0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/scalar/src/Type.Scalar.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..370dae5b9f1 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "UnionClient": { + "type": "object", + "description": "Configuration for UnionClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/unionClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "unionClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.sln deleted file mode 100644 index 6a26d957b85..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Type.Union", "src\Type.Union.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.slnx new file mode 100644 index 00000000000..fd96604e37b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/Type.Union.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/EnumsOnly.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/EnumsOnly.cs index 5ea24aef091..326e87184ee 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/EnumsOnly.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/EnumsOnly.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class EnumsOnly { protected EnumsOnly() => throw null; + internal EnumsOnly(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/FloatsOnly.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/FloatsOnly.cs index 6165e15eb36..687ca26b9d4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/FloatsOnly.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/FloatsOnly.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class FloatsOnly { protected FloatsOnly() => throw null; + internal FloatsOnly(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/IntsOnly.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/IntsOnly.cs index abb9c25fba4..d9e64843d11 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/IntsOnly.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/IntsOnly.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class IntsOnly { protected IntsOnly() => throw null; + internal IntsOnly(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedLiterals.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedLiterals.cs index dc60eb0f3ab..7ee7a6ee49c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedLiterals.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedLiterals.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class MixedLiterals { protected MixedLiterals() => throw null; + internal MixedLiterals(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedTypes.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedTypes.cs index 72608045240..b7ae1cff2e4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedTypes.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/MixedTypes.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class MixedTypes { protected MixedTypes() => throw null; + internal MixedTypes(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/ModelsOnly.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/ModelsOnly.cs index 9d638303f32..ebb37812dc0 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/ModelsOnly.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/ModelsOnly.cs @@ -14,6 +14,8 @@ public partial class ModelsOnly { protected ModelsOnly() => throw null; + internal ModelsOnly(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringAndArray.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringAndArray.cs index 914985be3eb..0a470dd358d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringAndArray.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringAndArray.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class StringAndArray { protected StringAndArray() => throw null; + internal StringAndArray(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensible.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensible.cs index 04035a679a9..c6d886ad068 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensible.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensible.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class StringExtensible { protected StringExtensible() => throw null; + internal StringExtensible(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensibleNamed.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensibleNamed.cs index e4299a80a88..85a4d399263 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensibleNamed.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringExtensibleNamed.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class StringExtensibleNamed { protected StringExtensibleNamed() => throw null; + internal StringExtensibleNamed(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringsOnly.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringsOnly.cs index e94cb73e42f..fb8ec122f24 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringsOnly.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/StringsOnly.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class StringsOnly { protected StringsOnly() => throw null; + internal StringsOnly(ClientPipeline pipeline, Uri endpoint) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult Get(RequestOptions options) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClient.cs index d8169c7677e..48df18bf7cc 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClient.cs @@ -4,6 +4,7 @@ using System; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; namespace _Type.Union { @@ -11,7 +12,12 @@ public partial class UnionClient { public UnionClient() : this(new Uri("http://localhost:3000"), new UnionClientOptions()) => throw null; - public UnionClient(Uri endpoint, UnionClientOptions options) => throw null; + internal UnionClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, UnionClientOptions options) => throw null; + + public UnionClient(Uri endpoint, UnionClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public UnionClient(UnionClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClientOptions.cs index e5f6e387e74..9352bd0c9c3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClientOptions.cs @@ -3,10 +3,16 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace _Type.Union { public partial class UnionClientOptions : ClientPipelineOptions { + public UnionClientOptions() => throw null; + + [Experimental("SCME0002")] + internal UnionClientOptions(IConfigurationSection section) : base(section) => throw null; } } diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClientSettings.cs new file mode 100644 index 00000000000..71defed8463 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Generated/UnionClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace _Type.Union +{ + [Experimental("SCME0002")] + public partial class UnionClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public UnionClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj index f429a3e55fe..13c9ea7cc69 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/src/Type.Union.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/tspCodeModel.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/tspCodeModel.json index 7b5c6d926d3..2c21b31efe3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/tspCodeModel.json +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/type/union/tspCodeModel.json @@ -394,7 +394,7 @@ { "$id": "34", "kind": "constant", - "name": "MixedLiteralsCasesStringLiteral1", + "name": "GetResponseProp5", "namespace": "", "usage": "None", "valueType": { @@ -410,7 +410,7 @@ { "$id": "36", "kind": "constant", - "name": "MixedLiteralsCasesStringLiteral2", + "name": "GetResponseProp6", "namespace": "", "usage": "None", "valueType": { @@ -426,7 +426,7 @@ { "$id": "38", "kind": "constant", - "name": "MixedLiteralsCasesStringLiteral3", + "name": "GetResponseProp7", "namespace": "", "usage": "None", "valueType": { @@ -442,7 +442,7 @@ { "$id": "40", "kind": "constant", - "name": "MixedLiteralsCasesStringLiteral4", + "name": "MixedLiteralsCasesStringLiteral1", "namespace": "", "usage": "None", "valueType": { @@ -458,7 +458,7 @@ { "$id": "42", "kind": "constant", - "name": "MixedLiteralsCasesStringLiteral11", + "name": "GetResponseProp51", "namespace": "", "usage": "None", "valueType": { diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..d1b35cb7f82 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "AddedClient": { + "type": "object", + "description": "Configuration for AddedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/addedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "addedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.sln deleted file mode 100644 index 9f918bb4c53..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.Added.V1", "src\Versioning.Added.V1.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.slnx new file mode 100644 index 00000000000..566df32e0f5 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/Versioning.Added.V1.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClient.cs index 4f240a760b1..d3cfcb5aa70 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class AddedClient public AddedClient(Uri endpoint) : this(endpoint, new AddedClientOptions()) => throw null; - public AddedClient(Uri endpoint, AddedClientOptions options) => throw null; + internal AddedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, AddedClientOptions options) => throw null; + + public AddedClient(Uri endpoint, AddedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public AddedClient(AddedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClientOptions.cs index 773ddd6c34e..b7fbe47ed89 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.Added { @@ -12,6 +14,9 @@ public partial class AddedClientOptions : ClientPipelineOptions public AddedClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal AddedClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClientSettings.cs new file mode 100644 index 00000000000..de45b556cb9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Generated/AddedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.Added +{ + [Experimental("SCME0002")] + public partial class AddedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public AddedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj index b471f07704f..0ed1430ba64 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v1/src/Versioning.Added.V1.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..d1b35cb7f82 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "AddedClient": { + "type": "object", + "description": "Configuration for AddedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/addedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "addedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.sln deleted file mode 100644 index 9545f9dc8da..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.Added.V2", "src\Versioning.Added.V2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.slnx new file mode 100644 index 00000000000..51aaeabab83 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/Versioning.Added.V2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClient.cs index 15c9f8e666d..6f27070b32e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class AddedClient public AddedClient(Uri endpoint) : this(endpoint, new AddedClientOptions()) => throw null; - public AddedClient(Uri endpoint, AddedClientOptions options) => throw null; + internal AddedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, AddedClientOptions options) => throw null; + + public AddedClient(Uri endpoint, AddedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public AddedClient(AddedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClientOptions.cs index e2f29f0a557..9719d90a137 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.Added { @@ -12,6 +14,9 @@ public partial class AddedClientOptions : ClientPipelineOptions public AddedClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal AddedClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClientSettings.cs new file mode 100644 index 00000000000..de45b556cb9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/AddedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.Added +{ + [Experimental("SCME0002")] + public partial class AddedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public AddedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/InterfaceV2.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/InterfaceV2.cs index cef6e78f45d..09e38898e24 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/InterfaceV2.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Generated/InterfaceV2.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class InterfaceV2 { protected InterfaceV2() => throw null; + internal InterfaceV2(ClientPipeline pipeline, Uri endpoint, string version) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult V2InInterface(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj index 49a8c9fd26c..c8710de28ca 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/added/v2/src/Versioning.Added.V2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..a54478f80e9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "MadeOptionalClient": { + "type": "object", + "description": "Configuration for MadeOptionalClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/madeOptionalClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "madeOptionalClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.sln deleted file mode 100644 index e1a07648f71..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.MadeOptional.V1", "src\Versioning.MadeOptional.V1.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.slnx new file mode 100644 index 00000000000..463c6802af7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/Versioning.MadeOptional.V1.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClient.cs index 8594bc90f75..d78e1fe494b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class MadeOptionalClient public MadeOptionalClient(Uri endpoint) : this(endpoint, new MadeOptionalClientOptions()) => throw null; - public MadeOptionalClient(Uri endpoint, MadeOptionalClientOptions options) => throw null; + internal MadeOptionalClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, MadeOptionalClientOptions options) => throw null; + + public MadeOptionalClient(Uri endpoint, MadeOptionalClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public MadeOptionalClient(MadeOptionalClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClientOptions.cs index 3eefb1ff588..d26fc936f07 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.MadeOptional { @@ -12,6 +14,9 @@ public partial class MadeOptionalClientOptions : ClientPipelineOptions public MadeOptionalClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal MadeOptionalClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClientSettings.cs new file mode 100644 index 00000000000..4773765707d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Generated/MadeOptionalClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.MadeOptional +{ + [Experimental("SCME0002")] + public partial class MadeOptionalClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public MadeOptionalClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj index 10434fd7525..6a063928b6a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v1/src/Versioning.MadeOptional.V1.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..a54478f80e9 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "MadeOptionalClient": { + "type": "object", + "description": "Configuration for MadeOptionalClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/madeOptionalClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "madeOptionalClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.sln deleted file mode 100644 index c4c66349611..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.MadeOptional.V2", "src\Versioning.MadeOptional.V2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.slnx new file mode 100644 index 00000000000..8f00bb1d3b7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/Versioning.MadeOptional.V2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClient.cs index a78a2f47210..a7c5df86c22 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class MadeOptionalClient public MadeOptionalClient(Uri endpoint) : this(endpoint, new MadeOptionalClientOptions()) => throw null; - public MadeOptionalClient(Uri endpoint, MadeOptionalClientOptions options) => throw null; + internal MadeOptionalClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, MadeOptionalClientOptions options) => throw null; + + public MadeOptionalClient(Uri endpoint, MadeOptionalClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public MadeOptionalClient(MadeOptionalClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClientOptions.cs index f328701bf0d..61493a2cdce 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.MadeOptional { @@ -12,6 +14,9 @@ public partial class MadeOptionalClientOptions : ClientPipelineOptions public MadeOptionalClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal MadeOptionalClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClientSettings.cs new file mode 100644 index 00000000000..4773765707d --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Generated/MadeOptionalClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.MadeOptional +{ + [Experimental("SCME0002")] + public partial class MadeOptionalClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public MadeOptionalClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj index a2e225d396b..d9239f7a630 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/madeOptional/v2/src/Versioning.MadeOptional.V2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..b634f506a23 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RemovedClient": { + "type": "object", + "description": "Configuration for RemovedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/removedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "removedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.sln deleted file mode 100644 index 271032d847a..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.Removed.V1", "src\Versioning.Removed.V1.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.slnx new file mode 100644 index 00000000000..e4245dc647b --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/Versioning.Removed.V1.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/InterfaceV1.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/InterfaceV1.cs index d3656e7c8d6..65f7690e6d9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/InterfaceV1.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/InterfaceV1.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class InterfaceV1 { protected InterfaceV1() => throw null; + internal InterfaceV1(ClientPipeline pipeline, Uri endpoint, string version) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult V1InInterface(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClient.cs index 9d7b39f1c89..3dfd35529a9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class RemovedClient public RemovedClient(Uri endpoint) : this(endpoint, new RemovedClientOptions()) => throw null; - public RemovedClient(Uri endpoint, RemovedClientOptions options) => throw null; + internal RemovedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RemovedClientOptions options) => throw null; + + public RemovedClient(Uri endpoint, RemovedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RemovedClient(RemovedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClientOptions.cs index 6389ac97d10..e72954e373d 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.Removed { @@ -12,6 +14,9 @@ public partial class RemovedClientOptions : ClientPipelineOptions public RemovedClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal RemovedClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClientSettings.cs new file mode 100644 index 00000000000..ff06e89e8df --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Generated/RemovedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.Removed +{ + [Experimental("SCME0002")] + public partial class RemovedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RemovedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj index 5162390039b..9e69b204cf9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v1/src/Versioning.Removed.V1.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..b634f506a23 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RemovedClient": { + "type": "object", + "description": "Configuration for RemovedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/removedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "removedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.sln deleted file mode 100644 index d256a70bfb1..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.Removed.V2", "src\Versioning.Removed.V2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.slnx new file mode 100644 index 00000000000..36b029c53ac --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/Versioning.Removed.V2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClient.cs index febf2295a42..d07a44fd254 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class RemovedClient public RemovedClient(Uri endpoint) : this(endpoint, new RemovedClientOptions()) => throw null; - public RemovedClient(Uri endpoint, RemovedClientOptions options) => throw null; + internal RemovedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RemovedClientOptions options) => throw null; + + public RemovedClient(Uri endpoint, RemovedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RemovedClient(RemovedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClientOptions.cs index 4925a16b6eb..f2256cfd36c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.Removed { @@ -12,6 +14,9 @@ public partial class RemovedClientOptions : ClientPipelineOptions public RemovedClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal RemovedClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClientSettings.cs new file mode 100644 index 00000000000..ff06e89e8df --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Generated/RemovedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.Removed +{ + [Experimental("SCME0002")] + public partial class RemovedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RemovedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj index 6930b51c625..60dce52797f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2/src/Versioning.Removed.V2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..b634f506a23 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RemovedClient": { + "type": "object", + "description": "Configuration for RemovedClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/removedClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "removedClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.sln deleted file mode 100644 index af3ab49c7c6..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.Removed.V2Preview", "src\Versioning.Removed.V2Preview.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.slnx new file mode 100644 index 00000000000..8efee14c338 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/Versioning.Removed.V2Preview.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/InterfaceV1.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/InterfaceV1.cs index d3656e7c8d6..65f7690e6d9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/InterfaceV1.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/InterfaceV1.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class InterfaceV1 { protected InterfaceV1() => throw null; + internal InterfaceV1(ClientPipeline pipeline, Uri endpoint, string version) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult V1InInterface(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClient.cs index 9d7b39f1c89..3dfd35529a9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class RemovedClient public RemovedClient(Uri endpoint) : this(endpoint, new RemovedClientOptions()) => throw null; - public RemovedClient(Uri endpoint, RemovedClientOptions options) => throw null; + internal RemovedClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RemovedClientOptions options) => throw null; + + public RemovedClient(Uri endpoint, RemovedClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RemovedClient(RemovedClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClientOptions.cs index 43faac8d671..f7d8d97afa9 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.Removed { @@ -12,6 +14,9 @@ public partial class RemovedClientOptions : ClientPipelineOptions public RemovedClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal RemovedClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClientSettings.cs new file mode 100644 index 00000000000..ff06e89e8df --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Generated/RemovedClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.Removed +{ + [Experimental("SCME0002")] + public partial class RemovedClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RemovedClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj index ff8716ad107..75461886517 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/removed/v2Preview/src/Versioning.Removed.V2Preview.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..6eacb332a72 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RenamedFromClient": { + "type": "object", + "description": "Configuration for RenamedFromClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/renamedFromClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "renamedFromClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.sln deleted file mode 100644 index dcf64ffbfc5..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.RenamedFrom.V1", "src\Versioning.RenamedFrom.V1.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.slnx new file mode 100644 index 00000000000..123e4f9154a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/Versioning.RenamedFrom.V1.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/OldInterface.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/OldInterface.cs index 27d6fdcc629..165af44a376 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/OldInterface.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/OldInterface.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class OldInterface { protected OldInterface() => throw null; + internal OldInterface(ClientPipeline pipeline, Uri endpoint, string version) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult NewOpInNewInterface(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClient.cs index d65af3f3675..936e395e08f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class RenamedFromClient public RenamedFromClient(Uri endpoint) : this(endpoint, new RenamedFromClientOptions()) => throw null; - public RenamedFromClient(Uri endpoint, RenamedFromClientOptions options) => throw null; + internal RenamedFromClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RenamedFromClientOptions options) => throw null; + + public RenamedFromClient(Uri endpoint, RenamedFromClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RenamedFromClient(RenamedFromClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClientOptions.cs index 079e9e380f8..3119ae73302 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.RenamedFrom { @@ -12,6 +14,9 @@ public partial class RenamedFromClientOptions : ClientPipelineOptions public RenamedFromClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal RenamedFromClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClientSettings.cs new file mode 100644 index 00000000000..da511564820 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Generated/RenamedFromClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.RenamedFrom +{ + [Experimental("SCME0002")] + public partial class RenamedFromClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RenamedFromClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj index 6d4c62fae46..e9c80186542 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v1/src/Versioning.RenamedFrom.V1.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..6eacb332a72 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "RenamedFromClient": { + "type": "object", + "description": "Configuration for RenamedFromClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/renamedFromClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "renamedFromClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.sln deleted file mode 100644 index 7e7c7e72c2a..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.RenamedFrom.V2", "src\Versioning.RenamedFrom.V2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.slnx new file mode 100644 index 00000000000..f73c2701fb6 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/Versioning.RenamedFrom.V2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/NewInterface.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/NewInterface.cs index 959c7a48106..5a2e1c3333e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/NewInterface.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/NewInterface.cs @@ -2,6 +2,7 @@ #nullable disable +using System; using System.ClientModel; using System.ClientModel.Primitives; using System.Threading; @@ -13,6 +14,8 @@ public partial class NewInterface { protected NewInterface() => throw null; + internal NewInterface(ClientPipeline pipeline, Uri endpoint, string version) => throw null; + public ClientPipeline Pipeline => throw null; public virtual ClientResult NewOpInNewInterface(BinaryContent content, RequestOptions options = null) => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClient.cs index 6c6eb4de56b..18dab03d399 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class RenamedFromClient public RenamedFromClient(Uri endpoint) : this(endpoint, new RenamedFromClientOptions()) => throw null; - public RenamedFromClient(Uri endpoint, RenamedFromClientOptions options) => throw null; + internal RenamedFromClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, RenamedFromClientOptions options) => throw null; + + public RenamedFromClient(Uri endpoint, RenamedFromClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public RenamedFromClient(RenamedFromClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClientOptions.cs index 7d99ad1eb2f..6079b82ab55 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.RenamedFrom { @@ -12,6 +14,9 @@ public partial class RenamedFromClientOptions : ClientPipelineOptions public RenamedFromClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal RenamedFromClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClientSettings.cs new file mode 100644 index 00000000000..da511564820 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Generated/RenamedFromClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.RenamedFrom +{ + [Experimental("SCME0002")] + public partial class RenamedFromClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public RenamedFromClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj index eda07072a69..9c47fb00259 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/renamedFrom/v2/src/Versioning.RenamedFrom.V2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..4a3087ec9b7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ReturnTypeChangedFromClient": { + "type": "object", + "description": "Configuration for ReturnTypeChangedFromClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/returnTypeChangedFromClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "returnTypeChangedFromClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.sln deleted file mode 100644 index f9b4ad8b7f4..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.ReturnTypeChangedFrom.V1", "src\Versioning.ReturnTypeChangedFrom.V1.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.slnx new file mode 100644 index 00000000000..ceeafabe302 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/Versioning.ReturnTypeChangedFrom.V1.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClient.cs index aa02fb0c6aa..60b54b0ab97 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class ReturnTypeChangedFromClient public ReturnTypeChangedFromClient(Uri endpoint) : this(endpoint, new ReturnTypeChangedFromClientOptions()) => throw null; - public ReturnTypeChangedFromClient(Uri endpoint, ReturnTypeChangedFromClientOptions options) => throw null; + internal ReturnTypeChangedFromClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ReturnTypeChangedFromClientOptions options) => throw null; + + public ReturnTypeChangedFromClient(Uri endpoint, ReturnTypeChangedFromClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ReturnTypeChangedFromClient(ReturnTypeChangedFromClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClientOptions.cs index e8bee0a6323..fd2f1ec452c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.ReturnTypeChangedFrom { @@ -12,6 +14,9 @@ public partial class ReturnTypeChangedFromClientOptions : ClientPipelineOptions public ReturnTypeChangedFromClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal ReturnTypeChangedFromClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClientSettings.cs new file mode 100644 index 00000000000..d8b043ada18 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Generated/ReturnTypeChangedFromClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.ReturnTypeChangedFrom +{ + [Experimental("SCME0002")] + public partial class ReturnTypeChangedFromClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ReturnTypeChangedFromClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj index da2e5ca050a..5c7638126c2 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v1/src/Versioning.ReturnTypeChangedFrom.V1.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..4a3087ec9b7 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "ReturnTypeChangedFromClient": { + "type": "object", + "description": "Configuration for ReturnTypeChangedFromClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/returnTypeChangedFromClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "returnTypeChangedFromClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.sln deleted file mode 100644 index 2691b9cbaa2..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.ReturnTypeChangedFrom.V2", "src\Versioning.ReturnTypeChangedFrom.V2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.slnx new file mode 100644 index 00000000000..81e8937bc12 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/Versioning.ReturnTypeChangedFrom.V2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClient.cs index 59f110a0c55..5a20ae37bc3 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class ReturnTypeChangedFromClient public ReturnTypeChangedFromClient(Uri endpoint) : this(endpoint, new ReturnTypeChangedFromClientOptions()) => throw null; - public ReturnTypeChangedFromClient(Uri endpoint, ReturnTypeChangedFromClientOptions options) => throw null; + internal ReturnTypeChangedFromClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, ReturnTypeChangedFromClientOptions options) => throw null; + + public ReturnTypeChangedFromClient(Uri endpoint, ReturnTypeChangedFromClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public ReturnTypeChangedFromClient(ReturnTypeChangedFromClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClientOptions.cs index b6d5d3ef543..6c62310339f 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.ReturnTypeChangedFrom { @@ -12,6 +14,9 @@ public partial class ReturnTypeChangedFromClientOptions : ClientPipelineOptions public ReturnTypeChangedFromClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal ReturnTypeChangedFromClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClientSettings.cs new file mode 100644 index 00000000000..d8b043ada18 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Generated/ReturnTypeChangedFromClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.ReturnTypeChangedFrom +{ + [Experimental("SCME0002")] + public partial class ReturnTypeChangedFromClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public ReturnTypeChangedFromClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj index 72f0f79253b..5196830b4c4 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/returnTypeChangedFrom/v2/src/Versioning.ReturnTypeChangedFrom.V2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..7ff9d4a9b8a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "TypeChangedFromClient": { + "type": "object", + "description": "Configuration for TypeChangedFromClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/typeChangedFromClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "typeChangedFromClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.sln deleted file mode 100644 index bb3e53b2816..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.TypeChangedFrom.V1", "src\Versioning.TypeChangedFrom.V1.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.slnx new file mode 100644 index 00000000000..b415be4987f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/Versioning.TypeChangedFrom.V1.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClient.cs index cd3284b715d..fc0dde04309 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class TypeChangedFromClient public TypeChangedFromClient(Uri endpoint) : this(endpoint, new TypeChangedFromClientOptions()) => throw null; - public TypeChangedFromClient(Uri endpoint, TypeChangedFromClientOptions options) => throw null; + internal TypeChangedFromClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, TypeChangedFromClientOptions options) => throw null; + + public TypeChangedFromClient(Uri endpoint, TypeChangedFromClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public TypeChangedFromClient(TypeChangedFromClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClientOptions.cs index e335851e9c0..2fd14057077 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.TypeChangedFrom { @@ -12,6 +14,9 @@ public partial class TypeChangedFromClientOptions : ClientPipelineOptions public TypeChangedFromClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal TypeChangedFromClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClientSettings.cs new file mode 100644 index 00000000000..51180632a28 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Generated/TypeChangedFromClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.TypeChangedFrom +{ + [Experimental("SCME0002")] + public partial class TypeChangedFromClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public TypeChangedFromClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj index 76f51f1faa3..b0ef8e1aa5e 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v1/src/Versioning.TypeChangedFrom.V1.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Generated/schema/ConfigurationSchema.json b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Generated/schema/ConfigurationSchema.json new file mode 100644 index 00000000000..7ff9d4a9b8a --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Generated/schema/ConfigurationSchema.json @@ -0,0 +1,40 @@ +{ + "type": "object", + "properties": { + "Clients": { + "type": "object", + "properties": { + "TypeChangedFromClient": { + "type": "object", + "description": "Configuration for TypeChangedFromClient.", + "properties": { + "Endpoint": { + "type": "string", + "format": "uri", + "description": "Gets or sets the Endpoint." + }, + "Credential": { + "$ref": "#/definitions/credential" + }, + "Options": { + "$ref": "#/definitions/typeChangedFromClientOptions" + } + } + } + }, + "additionalProperties": { + "type": "object", + "description": "Configuration for a named client instance." + } + } + }, + "definitions": { + "typeChangedFromClientOptions": { + "allOf": [ + { + "$ref": "#/definitions/options" + } + ] + } + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.NuGet.targets b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.NuGet.targets new file mode 100644 index 00000000000..9df53f09f6f --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.NuGet.targets @@ -0,0 +1,6 @@ + + + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.sln b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.sln deleted file mode 100644 index a1763d2d4e3..00000000000 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.sln +++ /dev/null @@ -1,48 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Versioning.TypeChangedFrom.V2", "src\Versioning.TypeChangedFrom.V2.csproj", "{28FF4005-4467-4E36-92E7-DEA27DEB1519}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0C276D1-2930-4887-B29A-D1A33E7009A2}.Release|Any CPU.Build.0 = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E9A77AC-792A-4432-8320-ACFD46730401}.Release|Any CPU.Build.0 = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A4241C1F-A53D-474C-9E4E-075054407E74}.Release|Any CPU.Build.0 = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA8BD3F1-8616-47B6-974C-7576CDF4717E}.Release|Any CPU.Build.0 = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85677AD3-C214-42FA-AE6E-49B956CAC8DC}.Release|Any CPU.Build.0 = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28FF4005-4467-4E36-92E7-DEA27DEB1519}.Release|Any CPU.Build.0 = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1F1CD1D4-9932-4B73-99D8-C252A67D4B46}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A97F4B90-2591-4689-B1F8-5F21FE6D6CAE} - EndGlobalSection -EndGlobal diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.slnx b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.slnx new file mode 100644 index 00000000000..0fbaa935f88 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/Versioning.TypeChangedFrom.V2.slnx @@ -0,0 +1,3 @@ + + + diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClient.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClient.cs index 4ac83f56d47..bbb62a54e1a 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClient.cs @@ -5,6 +5,7 @@ using System; using System.ClientModel; using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -16,7 +17,12 @@ public partial class TypeChangedFromClient public TypeChangedFromClient(Uri endpoint) : this(endpoint, new TypeChangedFromClientOptions()) => throw null; - public TypeChangedFromClient(Uri endpoint, TypeChangedFromClientOptions options) => throw null; + internal TypeChangedFromClient(AuthenticationPolicy authenticationPolicy, Uri endpoint, TypeChangedFromClientOptions options) => throw null; + + public TypeChangedFromClient(Uri endpoint, TypeChangedFromClientOptions options) : this(null, endpoint, options) => throw null; + + [Experimental("SCME0002")] + public TypeChangedFromClient(TypeChangedFromClientSettings settings) : this(AuthenticationPolicy.Create(settings), settings?.Endpoint, settings?.Options) => throw null; public ClientPipeline Pipeline => throw null; diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClientOptions.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClientOptions.cs index bd3fa375597..7ecdd66c06b 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClientOptions.cs +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClientOptions.cs @@ -3,6 +3,8 @@ #nullable disable using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; namespace Versioning.TypeChangedFrom { @@ -12,6 +14,9 @@ public partial class TypeChangedFromClientOptions : ClientPipelineOptions public TypeChangedFromClientOptions(ServiceVersion version = LatestVersion) => throw null; + [Experimental("SCME0002")] + internal TypeChangedFromClientOptions(IConfigurationSection section) : base(section) => throw null; + public enum ServiceVersion { /// The version v1. diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClientSettings.cs b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClientSettings.cs new file mode 100644 index 00000000000..51180632a28 --- /dev/null +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Generated/TypeChangedFromClientSettings.cs @@ -0,0 +1,29 @@ +// + +#nullable disable + +using System; +using System.ClientModel.Primitives; +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Configuration; + +namespace Versioning.TypeChangedFrom +{ + [Experimental("SCME0002")] + public partial class TypeChangedFromClientSettings : ClientSettings + { + public Uri Endpoint + { + get => throw null; + set => throw null; + } + + public TypeChangedFromClientOptions Options + { + get => throw null; + set => throw null; + } + + protected override void BindCore(IConfigurationSection section) => throw null; + } +} diff --git a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj index 62153305eab..3f003acf02c 100644 --- a/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj +++ b/packages/http-client-csharp/generator/TestProjects/Spector/http/versioning/typeChangedFrom/v2/src/Versioning.TypeChangedFrom.V2.csproj @@ -10,6 +10,11 @@ - + + + + + + diff --git a/packages/http-client-csharp/package-lock.json b/packages/http-client-csharp/package-lock.json index d1bee3386db..0291e11aba4 100644 --- a/packages/http-client-csharp/package-lock.json +++ b/packages/http-client-csharp/package-lock.json @@ -9,24 +9,24 @@ "version": "1.0.0", "license": "MIT", "devDependencies": { - "@azure-tools/azure-http-specs": "0.1.0-alpha.37", - "@azure-tools/typespec-azure-core": "0.65.0", - "@azure-tools/typespec-client-generator-core": "0.65.4", + "@azure-tools/azure-http-specs": "0.1.0-alpha.38", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", "@microsoft/api-extractor": "^7.52.2", "@types/node": "~22.12.0", - "@typespec/compiler": "1.9.0", - "@typespec/http": "1.9.0", - "@typespec/http-specs": "0.1.0-alpha.32", - "@typespec/json-schema": "1.9.0", - "@typespec/library-linter": "0.79.0", - "@typespec/openapi": "1.9.0", - "@typespec/rest": "0.79.0", - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/sse": "0.79.0", - "@typespec/streams": "0.79.0", - "@typespec/tspd": "0.73.1", - "@typespec/versioning": "0.79.0", - "@typespec/xml": "0.79.0", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/http-specs": "0.1.0-alpha.35", + "@typespec/json-schema": "1.10.0", + "@typespec/library-linter": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/sse": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/tspd": "0.74.1", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", "@vitest/coverage-v8": "^3.0.5", "@vitest/ui": "^3.0.5", "c8": "^10.1.2", @@ -35,20 +35,20 @@ "vitest": "^3.0.5" }, "peerDependencies": { - "@azure-tools/typespec-client-generator-core": ">=0.65.4 < 0.66.0 || ~0.66.0-0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": ">=0.79.0 <0.80.0 || ~0.80.0-0", - "@typespec/sse": ">=0.79.0 <0.80.0 || ~0.80.0-0", - "@typespec/streams": ">=0.79.0 <0.80.0 || ~0.80.0-0", - "@typespec/versioning": ">=0.79.0 <0.80.0 || ~0.80.0-0" + "@azure-tools/typespec-client-generator-core": ">=0.66.3 <0.67.0 || ~0.67.0-0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": ">=0.80.0 <0.81.0 || ~0.81.0-0", + "@typespec/sse": ">=0.80.0 <0.81.0 || ~0.81.0-0", + "@typespec/streams": ">=0.80.0 <0.81.0 || ~0.81.0-0", + "@typespec/versioning": ">=0.80.0 <0.81.0 || ~0.81.0-0" } }, "node_modules/@alloy-js/core": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@alloy-js/core/-/core-0.21.0.tgz", - "integrity": "sha512-eIBllm+Lgk/AcV6QdipZAVlYPIp6RHmgz046GXBQeXZnTZXmPHURVFI18/FVuaK7K+uUt0eriPXIYXs4/Ja5rQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@alloy-js/core/-/core-0.22.0.tgz", + "integrity": "sha512-cqa6CL2m3zfPXF64Zr7WIqOpSWyqFi7ojQJVzpMjOsb1zJhoQzKt28/FCI6++Na4QDeSynOmWGEvHZ7CDYXn4w==", "dev": true, "license": "MIT", "dependencies": { @@ -60,24 +60,24 @@ } }, "node_modules/@alloy-js/markdown": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@alloy-js/markdown/-/markdown-0.21.0.tgz", - "integrity": "sha512-Er2aqWdolajWUrHxeqZoiK/Grdet2zaEr8ZtIbvv/M0sMz975p0ltijZNF3OnMde0wFlk1Jg14hkiitI9wFVgQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@alloy-js/markdown/-/markdown-0.22.0.tgz", + "integrity": "sha512-VslLzyk9780MaEAKH/9LE7dPcxIxHEx/V3+MsoZ8nHK+rvpmnTblxFJpbkLvmhUf8Oq2hmgsvfv7jIauBGI0rQ==", "dev": true, "license": "MIT", "dependencies": { - "@alloy-js/core": "~0.21.0", + "@alloy-js/core": "~0.22.0", "yaml": "^2.7.1" } }, "node_modules/@alloy-js/typescript": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@alloy-js/typescript/-/typescript-0.21.0.tgz", - "integrity": "sha512-SsxdYkXhrP8jjO2gENav9bHPHaonNrreW469RaOot3cRqhsHPA1RmBrzNPJov37YknzTg4Wlk0JsEFT4Qibgfg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@alloy-js/typescript/-/typescript-0.22.0.tgz", + "integrity": "sha512-jARBNxAA5aEhysleFFd7cGfjckkEXLCH9kDaJSH5xBOu4cU0v7q5TvAqgPlEIkhfOh2983XLX0nVtZu01p0UjQ==", "dev": true, "license": "MIT", "dependencies": { - "@alloy-js/core": "~0.21.0", + "@alloy-js/core": "~0.22.0", "change-case": "^5.4.4", "pathe": "^2.0.3" } @@ -97,46 +97,46 @@ } }, "node_modules/@azure-tools/azure-http-specs": { - "version": "0.1.0-alpha.37", - "resolved": "https://registry.npmjs.org/@azure-tools/azure-http-specs/-/azure-http-specs-0.1.0-alpha.37.tgz", - "integrity": "sha512-oMo0f14FGn2pg4epJQM7W86W6PNTIgtFUCmBGNUXUcffaZIMnzreR9M488ynyuAP4lbsOiu0uFcE2skDXip2Eg==", + "version": "0.1.0-alpha.38", + "resolved": "https://registry.npmjs.org/@azure-tools/azure-http-specs/-/azure-http-specs-0.1.0-alpha.38.tgz", + "integrity": "sha512-OkwmMhmSNOV4PO4UA4Tm4ufyA0UPcOrWgZuhybQjWzUq0bbryW9y5ODyknvUV0Z0IOAInW1dUJQ2wRX9pLqNCA==", "dev": true, "license": "MIT", "dependencies": { - "@typespec/spec-api": "^0.1.0-alpha.12", - "@typespec/spector": "^0.1.0-alpha.23" + "@typespec/spec-api": "^0.1.0-alpha.13", + "@typespec/spector": "^0.1.0-alpha.24" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/versioning": "^0.79.0", - "@typespec/xml": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" } }, "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.65.0.tgz", - "integrity": "sha512-dYgHtt0CY0Q9AimdIsMV41jHKLmAT4r++TLwyxAHRbxdiRG+Sll1UKJzOIIoq45Bq64wCfEltu5OOnyPA01/sQ==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.66.0.tgz", + "integrity": "sha512-OBKxRN7AucK3snh+GtLKSDdcZTz08IgcSZlIO3c4KSlmcR5twT1NMyqf1+V8SAhyOdZimndb+ikzrkkgab+GpA==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0" } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.65.4", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.65.4.tgz", - "integrity": "sha512-p+MZU/nEmU3ciLEuNbqQtAybPxUKo/fKeKT9feh+tZLVpDDFO5DTefYoN4cteZQkPu/xyzxhjeUnKKvyVQxd6A==", + "version": "0.66.3", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.66.3.tgz", + "integrity": "sha512-sNetQ6igxAp/vL6X2kEIy715ToDTqoJeb+OL59GEUtOW/3KBSi5tsxvDdCwSfEoaNEmv/FYjh/gJDwAWCJdFJg==", "dev": true, "license": "MIT", "dependencies": { @@ -148,16 +148,16 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/events": "^0.79.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/sse": "^0.79.0", - "@typespec/streams": "^0.79.0", - "@typespec/versioning": "^0.79.0", - "@typespec/xml": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.0", + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/sse": "^0.80.0", + "@typespec/streams": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" } }, "node_modules/@azure/abort-controller": { @@ -254,9 +254,9 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", - "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", + "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -265,7 +265,7 @@ "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.0", + "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" }, "engines": { @@ -352,22 +352,22 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.28.2.tgz", - "integrity": "sha512-6vYUMvs6kJxJgxaCmHn/F8VxjLHNh7i9wzfwPGf8kyBJ8Gg2yvBXx175Uev8LdrD1F5C4o7qHa2CC4IrhGE1XQ==", + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.29.0.tgz", + "integrity": "sha512-/f3eHkSNUTl6DLQHm+bKecjBKcRQxbd/XLx8lvSYp8Nl/HRyPuIPOijt9Dt0sH50/SxOwQ62RnFCmFlGK+bR/w==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.14.2" + "@azure/msal-common": "15.15.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.14.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.14.2.tgz", - "integrity": "sha512-n8RBJEUmd5QotoqbZfd+eGBkzuFI1KX6jw2b3WcpSyGjwmzoeI/Jb99opIBPHpb8y312NB+B6+FGi2ZVSR8yfA==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.15.0.tgz", + "integrity": "sha512-/n+bN0AKlVa+AOcETkJSKj38+bvFs78BaP4rNtv3MJCmPH0YrHiskMRe74OhyZ5DZjGISlFyxqvf9/4QVEi2tw==", "dev": true, "license": "MIT", "engines": { @@ -375,13 +375,13 @@ } }, "node_modules/@azure/msal-node": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.7.tgz", - "integrity": "sha512-a+Xnrae+uwLnlw68bplS1X4kuJ9F/7K6afuMFyRkNIskhjgDezl5Fhrx+1pmAlDmC0VaaAxjRQMp1OmcqVwkIg==", + "version": "3.8.8", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.8.tgz", + "integrity": "sha512-+f1VrJH1iI517t4zgmuhqORja0bL6LDQXfBqkjuMmfTYXTQQnh1EvwwxO3UbKLT05N0obF72SRHFrC1RBDv5Gg==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.14.2", + "@azure/msal-common": "15.15.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -390,9 +390,9 @@ } }, "node_modules/@azure/storage-blob": { - "version": "12.30.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.30.0.tgz", - "integrity": "sha512-peDCR8blSqhsAKDbpSP/o55S4sheNwSrblvCaHUZ5xUI73XA7ieUGGwrONgD/Fng0EoDe1VOa3fAQ7+WGB3Ocg==", + "version": "12.31.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.31.0.tgz", + "integrity": "sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg==", "dev": true, "license": "MIT", "dependencies": { @@ -407,7 +407,7 @@ "@azure/core-util": "^1.11.0", "@azure/core-xml": "^1.4.5", "@azure/logger": "^1.1.4", - "@azure/storage-common": "^12.2.0", + "@azure/storage-common": "^12.3.0", "events": "^3.0.0", "tslib": "^2.8.1" }, @@ -437,9 +437,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", - "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { @@ -1322,29 +1322,6 @@ } } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", @@ -1418,22 +1395,22 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.56.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.56.3.tgz", - "integrity": "sha512-fRqok4aRNq5GpgGBv2fKlSSKbirPKTJ75vQefthB5x9dwt4Zz+AezUzdc1p/AG4wUBIgmhjcEwn/Rj+N4Wh4Mw==", + "version": "7.57.7", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.7.tgz", + "integrity": "sha512-kmnmVs32MFWbV5X6BInC1/TfCs7y1ugwxv1xHsAIj/DyUfoe7vtO0alRUgbQa57+yRGHBBjlNcEk33SCAt5/dA==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.32.2", + "@microsoft/api-extractor-model": "7.33.4", "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.1", - "@rushstack/rig-package": "0.6.0", - "@rushstack/terminal": "0.21.0", - "@rushstack/ts-command-line": "5.2.0", + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/rig-package": "0.7.2", + "@rushstack/terminal": "0.22.3", + "@rushstack/ts-command-line": "5.3.3", "diff": "~8.0.2", "lodash": "~4.17.23", - "minimatch": "10.1.2", + "minimatch": "10.2.3", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", @@ -1444,15 +1421,15 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.32.2.tgz", - "integrity": "sha512-Ussc25rAalc+4JJs9HNQE7TuO9y6jpYQX9nWD1DhqUzYPBr3Lr7O9intf+ZY8kD5HnIqeIRJX7ccCT0QyBy2Ww==", + "version": "7.33.4", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.4.tgz", + "integrity": "sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "~0.16.0", - "@microsoft/tsdoc-config": "~0.18.0", - "@rushstack/node-core-library": "5.19.1" + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3" } }, "node_modules/@microsoft/api-extractor/node_modules/typescript": { @@ -1477,14 +1454,14 @@ "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.0.tgz", - "integrity": "sha512-8N/vClYyfOH+l4fLkkr9+myAoR6M7akc8ntBJ4DJdWH2b09uVfr71+LTMpNyG19fNqWDg8KEDZhx5wxuqHyGjw==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", + "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.16.0", - "ajv": "~8.12.0", + "ajv": "~8.18.0", "jju": "~1.4.0", "resolve": "~1.22.2" } @@ -1896,13 +1873,13 @@ ] }, "node_modules/@rushstack/node-core-library": { - "version": "5.19.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.19.1.tgz", - "integrity": "sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==", + "version": "5.20.3", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", + "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "~8.13.0", + "ajv": "~8.18.0", "ajv-draft-04": "~1.0.0", "ajv-formats": "~3.0.1", "fs-extra": "~11.3.0", @@ -1920,27 +1897,10 @@ } } }, - "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@rushstack/problem-matcher": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.1.1.tgz", - "integrity": "sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", + "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1953,9 +1913,9 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.6.0.tgz", - "integrity": "sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz", + "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==", "dev": true, "license": "MIT", "dependencies": { @@ -1964,14 +1924,14 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.21.0.tgz", - "integrity": "sha512-cLaI4HwCNYmknM5ns4G+drqdEB6q3dCPV423+d3TZeBusYSSm09+nR7CnhzJMjJqeRcdMAaLnrA4M/3xDz4R3w==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", + "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.19.1", - "@rushstack/problem-matcher": "0.1.1", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, "peerDependencies": { @@ -1984,13 +1944,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.2.0.tgz", - "integrity": "sha512-lYxCX0nDdkDtCkVpvF0m25ymf66SaMWuppbD6b7MdkIzvGXKBXNIVZlwBH/C0YfkanrupnICWf2n4z3AKSfaHw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", + "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.21.0", + "@rushstack/terminal": "0.22.3", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -2117,6 +2077,13 @@ "undici-types": "~6.20.0" } }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -2125,30 +2092,30 @@ "license": "MIT" }, "node_modules/@typespec/asset-emitter": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/asset-emitter/-/asset-emitter-0.79.0.tgz", - "integrity": "sha512-pNMtfSSwgmTQ2ex6bd1l6BUW2RLjSFnWQO5C5bNSleV62YEH5jMLn3THWDU9oUB0JoiBjgomV8cPqNRTJ+iV9w==", + "version": "0.79.1", + "resolved": "https://registry.npmjs.org/@typespec/asset-emitter/-/asset-emitter-0.79.1.tgz", + "integrity": "sha512-53s3GLu5BwNkl7Itr/OizfhymTV2u7k5/cwjUOAt03AUDfiKlwbsp+iCIsq1vccJuoDOiXOceJOfL8rAf4/9LQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/compiler": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.9.0.tgz", - "integrity": "sha512-Rz9fFWQSTJSnhBfZvtA/bDIuO82fknYdtyMsL9lZNJE82rquC6JByHPFsnbGH1VXA0HhMj9L7Oqyp3f0m/BTOA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.10.0.tgz", + "integrity": "sha512-R6BATDkughntPpaxeESJF+wxma5PEjgmnnKvH0/ByqUH8VyhIckQWE9kkP0Uc/EJ0o0VYhe8qCwWQvV70k5lTw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.28.6", + "@babel/code-frame": "~7.29.0", "@inquirer/prompts": "^8.0.1", - "ajv": "~8.17.1", + "ajv": "~8.18.0", "change-case": "~5.4.4", - "env-paths": "^3.0.0", + "env-paths": "^4.0.0", "globby": "~16.1.0", "is-unicode-supported": "^2.1.0", "mustache": "~4.2.0", @@ -2170,23 +2137,6 @@ "node": ">=20.0.0" } }, - "node_modules/@typespec/compiler/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@typespec/compiler/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -2201,9 +2151,9 @@ } }, "node_modules/@typespec/events": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.79.0.tgz", - "integrity": "sha512-41R2jA7k21uMArjyUdvnqYzVnPPaSEcGi40dLMiRVP79m6XgnD3INuTdlMblaS1i+5jJ1BtS1o4QhBBuS/5/qg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.80.0.tgz", + "integrity": "sha512-FrWEUwxhDNbE2YN4fyqV5Qrz9qFJbvPoiKrJM7dexkb7eyhepq3dbc5zZgAm/qFBQ+XxGQQVJ4swXxKT+338fw==", "dev": true, "license": "MIT", "peer": true, @@ -2211,21 +2161,21 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/http": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.9.0.tgz", - "integrity": "sha512-JzlZZsgCo71f2KhWbf4BLOz5e+dVLj7gJJ4kvXvrmuG9QHoT41VaGPpCQamYgpZLMz2LQbsOtw34AmpovhuJSw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.10.0.tgz", + "integrity": "sha512-/fj55fmUj4m/FmNdfH0V52menVrmS2r5Xj9d1H+pnjQbxvvaxS906RSRcoF8kbg3PvlibP/Py5u82TAk53AyqA==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/streams": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/streams": "^0.80.0" }, "peerDependenciesMeta": { "@typespec/streams": { @@ -2234,89 +2184,89 @@ } }, "node_modules/@typespec/http-specs": { - "version": "0.1.0-alpha.32", - "resolved": "https://registry.npmjs.org/@typespec/http-specs/-/http-specs-0.1.0-alpha.32.tgz", - "integrity": "sha512-a5kOR6M6H23+w4cmYyprh/2Oa5bmPmz6wOQKc9cKfXH8f2sFJ4ViIHBMovyAl5HsSaDAY4VvVz1vmEWA+OWj8g==", + "version": "0.1.0-alpha.35", + "resolved": "https://registry.npmjs.org/@typespec/http-specs/-/http-specs-0.1.0-alpha.35.tgz", + "integrity": "sha512-xLQUmldKvO0TTOf/wpYLbj2dIuXiQfw3gGKN0ZblD3Q3VGHOXEYEALdQ7lQWn3l2lV33cKgEfC3fX/q/p9N/ug==", "dev": true, "license": "MIT", "dependencies": { - "@typespec/spec-api": "^0.1.0-alpha.12", - "@typespec/spector": "^0.1.0-alpha.23", - "deep-equal": "^2.2.0" + "@typespec/spec-api": "^0.1.0-alpha.13", + "@typespec/spector": "^0.1.0-alpha.24", + "deep-equal": "^2.2.3" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/versioning": "^0.79.0", - "@typespec/xml": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" } }, "node_modules/@typespec/json-schema": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/json-schema/-/json-schema-1.9.0.tgz", - "integrity": "sha512-splP6YL1CWPtBDenOeaVEs058TBqSzMDZyX4h9A39Q5qwmhyQ00DPXdnmJWRP96IWVAlHnN806GJWc/yttzSVg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/json-schema/-/json-schema-1.10.0.tgz", + "integrity": "sha512-FZTJvZoIqMbe/4qi17e8q3KF/2VDSyXiiF8QYwH4lar5dtEDGgwrw9ShLeLNiEZh8Ph3GjrQQV5qdpheDFJJvw==", "dev": true, "license": "MIT", "dependencies": { - "@typespec/asset-emitter": "^0.79.0", + "@typespec/asset-emitter": "^0.79.1", "yaml": "~2.8.2" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/library-linter": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/library-linter/-/library-linter-0.79.0.tgz", - "integrity": "sha512-TIqag9XoBwuKMjs3ZGTpbt9QGUxaHaKp8jswzsvEW4J85APCX5UGrPZYdOCjyjdSigieu7/YoBXCVm6i8EWioQ==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/library-linter/-/library-linter-0.80.0.tgz", + "integrity": "sha512-7J0jkd6v3360nP/WS9xOPaLIwanaJH/YRkUja7FoOIPyCYem6qnjd/kaCHPo2tV5yZUwvlgE0OkvKTuUHvF/tw==", "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/openapi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.9.0.tgz", - "integrity": "sha512-5ieXCWRLcyFLv3IFk26ena/RW/NxvT5KiHaoNVFRd79J0XZjFcE0Od6Lxxqj4dWmCo3C8oKtOwFoQuie18G3lQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.10.0.tgz", + "integrity": "sha512-tukmyp+c9CFlA2FdF61XfT9eTe5WXWz6J8pOrJ9+IYg0BcBwhJkvDj6BYpDD6SjxbRr1wO5ZL2Whe6MequsyVw==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" } }, "node_modules/@typespec/rest": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.79.0.tgz", - "integrity": "sha512-6QIX7oaUGy/z4rseUrC86LjHxZn8rAAY4fXvGnlPRce6GhEdTb9S9OQPmlPeWngXwCx/07P2+FCR915APqmZxg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.80.0.tgz", + "integrity": "sha512-xczXLoB2akSIDner41gQYTS9CG6TdCN0QHYvXBT6ZrYEnBh+pMvdymW//5CSOTamZLOGo9AOJVJaFfwbFA4vQQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" } }, "node_modules/@typespec/spec-api": { - "version": "0.1.0-alpha.12", - "resolved": "https://registry.npmjs.org/@typespec/spec-api/-/spec-api-0.1.0-alpha.12.tgz", - "integrity": "sha512-cAJ1vj6qk2Vw5g1uesohBItA6fl8KqrTRIwj0DdpPaBtQeaUS7yRJZgGQQz/JLeqDj2B+8z2pooLuvEBtnS+jA==", + "version": "0.1.0-alpha.13", + "resolved": "https://registry.npmjs.org/@typespec/spec-api/-/spec-api-0.1.0-alpha.13.tgz", + "integrity": "sha512-ed0qqGM92vKuangmENUYMeDQZpSlsEMYdeH7+wMl+bIgXzfZ7yv07fNwcmROzSEJd0CzdCTgz+Hp+ifmR4USNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2329,52 +2279,67 @@ } }, "node_modules/@typespec/spec-coverage-sdk": { - "version": "0.1.0-alpha.15", - "resolved": "https://registry.npmjs.org/@typespec/spec-coverage-sdk/-/spec-coverage-sdk-0.1.0-alpha.15.tgz", - "integrity": "sha512-Y7SxNBEouGBlMIw5nD+skCYX8FkM2v1CxW79VjqX+iigJQsh2ML0F/G1Zh551l2Dr7zuMv+0qiPrmOC5v3yEgQ==", + "version": "0.1.0-alpha.16", + "resolved": "https://registry.npmjs.org/@typespec/spec-coverage-sdk/-/spec-coverage-sdk-0.1.0-alpha.16.tgz", + "integrity": "sha512-qwSnuE+CXjv4mn2uhioTVlaO4GjypR4ZtbkSoLmWA677ggYmoAjIDpyNgT1tjsc1lDKVtSiPvGhM9XFKExVmbQ==", "dev": true, "license": "MIT", "dependencies": { "@azure/identity": "~4.13.0", - "@azure/storage-blob": "~12.30.0", - "@types/node": "~25.0.2" + "@azure/storage-blob": "~12.31.0", + "@types/node": "~25.3.0", + "@types/semver": "^7.5.8", + "semver": "^7.7.1" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@typespec/spec-coverage-sdk/node_modules/@types/node": { - "version": "25.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", - "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" + } + }, + "node_modules/@typespec/spec-coverage-sdk/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typespec/spec-coverage-sdk/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, "node_modules/@typespec/spector": { - "version": "0.1.0-alpha.23", - "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.23.tgz", - "integrity": "sha512-z5ORR/HnaLKYcTL2a73sUfC4LmuOqlCRmSPF8h5NtUNDpER3s4aLlFu4DgcaVYTgHruiBLMkLyHpfNPxKDzY7g==", + "version": "0.1.0-alpha.24", + "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.24.tgz", + "integrity": "sha512-POUSFunRZ4UbPEs+YLz0vE9tDoc6chQ/61moyiWO/k4hD2R1KTH0qlRHhuKW8/Y2wa8Jbuex39Ft/O3reHZSTQ==", "dev": true, "license": "MIT", "dependencies": { "@azure/identity": "~4.13.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/spec-api": "^0.1.0-alpha.12", - "@typespec/spec-coverage-sdk": "^0.1.0-alpha.15", - "@typespec/versioning": "^0.79.0", - "ajv": "~8.17.1", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/spec-api": "^0.1.0-alpha.13", + "@typespec/spec-coverage-sdk": "^0.1.0-alpha.16", + "@typespec/versioning": "^0.80.0", + "ajv": "~8.18.0", "body-parser": "^2.2.0", "deep-equal": "^2.2.0", "express": "^5.2.1", @@ -2395,56 +2360,39 @@ "node": ">=16.0.0" } }, - "node_modules/@typespec/spector/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@typespec/sse": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.79.0.tgz", - "integrity": "sha512-YQYlDWCNBza75S360jc51emwntWXMZfkvqXKng+etKP4iCuogJfTX1J8h1yd8tZwkuUNBcklEPCuz3O/+psopg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.80.0.tgz", + "integrity": "sha512-/lxYgMaxgEcjBVhep9tf/VnFD2wnkZlkmjUHLeZL8Cuf+qip61Ren6Ml91YtNnnIFYsuuymDzRclrA073ZBR6Q==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/events": "^0.79.0", - "@typespec/http": "^1.9.0", - "@typespec/streams": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/streams": "^0.80.0" } }, "node_modules/@typespec/streams": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.79.0.tgz", - "integrity": "sha512-nOXpLcEYNdWvLY/6WJ16rD6hGs7bKSmkH+WwgyVwdRON5KJ559quw56pns2DSANw+NaV0lJxJq/8ek5xKCGD6g==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.80.0.tgz", + "integrity": "sha512-lNvzrvX/ZRIxRpxIBZu90XNsT+uWsMbLtxHd9edspHAiID3c9WKZbl2fnLcPqdR/60odqKve4yGzB9gF58GUDQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.3.tgz", - "integrity": "sha512-91fp6CAAJSRtH5ja95T1FHSKa8aPW9/Zw6cta81jlZTUw/+Vq8jM/AfF/14h2b71wwR84JUTW/3Y8QPhDAawFA==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.4.tgz", + "integrity": "sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2457,25 +2405,25 @@ } }, "node_modules/@typespec/tspd": { - "version": "0.73.1", - "resolved": "https://registry.npmjs.org/@typespec/tspd/-/tspd-0.73.1.tgz", - "integrity": "sha512-Dh6iVxLNGvYObj4x8hhL9bkSHFG7ijwLjisUmcV3EaLjEPD4nc2yV1j/H2fNe3a0TpiZQ0F6c6uogzaKwAk2kg==", + "version": "0.74.1", + "resolved": "https://registry.npmjs.org/@typespec/tspd/-/tspd-0.74.1.tgz", + "integrity": "sha512-0padEJ3gQNkhYtihA+NVZwjiRfJuZDlj7dy4pofoeBcBPRQtb+7Rr3ejSadhOT2kp7+GwhlXzcfMxOw6hRildA==", "dev": true, "license": "MIT", "dependencies": { - "@alloy-js/core": "^0.21.0", - "@alloy-js/markdown": "^0.21.0", - "@alloy-js/typescript": "^0.21.0", - "@microsoft/api-extractor": "^7.52.1", - "@microsoft/api-extractor-model": "^7.30.6", - "@microsoft/tsdoc": "^0.15.1", - "@microsoft/tsdoc-config": "^0.17.1", - "@typespec/compiler": "^1.6.0", + "@alloy-js/core": "^0.22.0", + "@alloy-js/markdown": "^0.22.0", + "@alloy-js/typescript": "^0.22.0", + "@microsoft/api-extractor": "^7.57.4", + "@microsoft/api-extractor-model": "^7.33.2", + "@microsoft/tsdoc": "^0.16.0", + "@microsoft/tsdoc-config": "^0.18.0", + "@typespec/compiler": "^1.10.0", "picocolors": "~1.1.1", - "prettier": "~3.6.2", + "prettier": "~3.8.0", "typedoc": "^0.28.1", "typedoc-plugin-markdown": "^4.5.2", - "yaml": "~2.8.0", + "yaml": "~2.8.2", "yargs": "~18.0.0" }, "bin": { @@ -2485,66 +2433,30 @@ "node": ">=20.0.0" } }, - "node_modules/@typespec/tspd/node_modules/@microsoft/tsdoc": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", - "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typespec/tspd/node_modules/@microsoft/tsdoc-config": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", - "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/tsdoc": "0.15.1", - "ajv": "~8.12.0", - "jju": "~1.4.0", - "resolve": "~1.22.2" - } - }, - "node_modules/@typespec/tspd/node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@typespec/versioning": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.79.0.tgz", - "integrity": "sha512-mk65zpKNm+ARyHASnre/lp3o3FKzb0P8Nj96ji182JUy7ShrVCCF0u+bC+ZXQ8ZTRza1d0xBjRC/Xr4iM+Uwag==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.80.0.tgz", + "integrity": "sha512-WQCT0jN2lSRfwOy+Cd1KUYzenpKR5TdoX0uW6zQdvxQ9nQZIXoaSaReh9/ldhmSV4xv3p2dqF9oq1cdbVGfJTg==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/xml": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.79.0.tgz", - "integrity": "sha512-BqbbtkL9xuiAhehHKKUCMtRg0a1vjSvoiAOanvTIuoFq3N8PbKVV3dKTcyI/oS3iCCkJErdu11HQcAoD/VsIsA==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.80.0.tgz", + "integrity": "sha512-Qfy5eyCcOF3xYOU/dejhpmmeY75U1Q9C8XBE+GvSZ3lakRfKBIpT+X6Q07qmKSAbGYJZKYLWCIAy/dgCuu/OAA==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@vitest/coverage-v8": { @@ -2719,19 +2631,19 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.28", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.28.tgz", - "integrity": "sha512-gr5hEsxvn+RNyu9/9o1WtdYdwDjg5FgjUSBEkZWqgTKlo/fvwZ2+8W6AfKsc9YN2k/+iHYdS9vZYAhpi10kNaw==", + "version": "3.5.30", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.30.tgz", + "integrity": "sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==", "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "3.5.28" + "@vue/shared": "3.5.30" } }, "node_modules/@vue/shared": { - "version": "3.5.28", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.28.tgz", - "integrity": "sha512-cfWa1fCGBxrvaHRhvV3Is0MgmrbSCxYTXCSCau2I0a1Xw1N1pHAvkWCiXPRAqjvToILvguNyEwjevUqAuBQWvQ==", + "version": "3.5.30", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.30.tgz", + "integrity": "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==", "dev": true, "license": "MIT" }, @@ -2760,16 +2672,16 @@ } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -3678,13 +3590,16 @@ } }, "node_modules/env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", "dev": true, "license": "MIT", + "dependencies": { + "is-safe-filename": "^0.1.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3935,10 +3850,26 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, "node_modules/fast-xml-parser": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.6.tgz", - "integrity": "sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==", + "version": "5.5.7", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.7.tgz", + "integrity": "sha512-LteOsISQ2GEiDHZch6L9hB0+MLoYVLToR7xotrzU0opCICBkxOPgHAy1HxAvtxfJNXDJpgAsQN30mkrfpO2Prg==", "dev": true, "funding": [ { @@ -3948,7 +3879,9 @@ ], "license": "MIT", "dependencies": { - "strnum": "^2.1.2" + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.1.3", + "strnum": "^2.2.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -4084,9 +4017,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dev": true, "license": "MIT", "dependencies": { @@ -4738,6 +4671,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-safe-filename": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", + "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -4846,9 +4792,9 @@ } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -5299,29 +5245,42 @@ } }, "node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/minimatch/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/minipass": { @@ -5347,19 +5306,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/morgan": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", @@ -5425,22 +5371,23 @@ "license": "MIT" }, "node_modules/multer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", - "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", "dev": true, "license": "MIT", "dependencies": { "append-field": "^1.0.0", "busboy": "^1.6.0", "concat-stream": "^2.0.0", - "mkdirp": "^0.5.6", - "object-assign": "^4.1.1", - "type-is": "^1.6.18", - "xtend": "^4.0.2" + "type-is": "^1.6.18" }, "engines": { "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/multer/node_modules/media-typer": { @@ -5539,16 +5486,6 @@ "node": ">= 0.6" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -5721,6 +5658,22 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz", + "integrity": "sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -5791,9 +5744,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -5882,16 +5835,6 @@ "node": ">= 0.10" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -6219,9 +6162,9 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz", + "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -6696,9 +6639,9 @@ "license": "MIT" }, "node_modules/strnum": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", - "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", "dev": true, "funding": [ { @@ -7004,9 +6947,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7222,16 +7165,6 @@ "node": ">= 0.8" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -7391,9 +7324,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7477,9 +7410,9 @@ } }, "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7785,16 +7718,6 @@ "node": ">=4.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/packages/http-client-csharp/package.json b/packages/http-client-csharp/package.json index d8911171f90..d7e2d7198c4 100644 --- a/packages/http-client-csharp/package.json +++ b/packages/http-client-csharp/package.json @@ -43,7 +43,7 @@ "lint:fix": "eslint . --fix", "format": "pnpm -w format:dir packages/http-client-csharp", "extract-api": "npx api-extractor run --local --verbose", - "regen-docs": "npm run build:emitter && tspd doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/emitters/clients/http-client-csharp/reference --skip-js" + "regen-docs": "npm run build:emitter && tspd doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/emitters/clients/http-client-csharp/reference --skip-js && npx prettier --write docs/ readme.md ../../website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/" }, "files": [ "dist/emitter/src/**", @@ -52,34 +52,34 @@ "emitter/lib/*.tsp" ], "peerDependencies": { - "@azure-tools/typespec-client-generator-core": ">=0.65.4 < 0.66.0 || ~0.66.0-0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": ">=0.79.0 <0.80.0 || ~0.80.0-0", - "@typespec/sse": ">=0.79.0 <0.80.0 || ~0.80.0-0", - "@typespec/streams": ">=0.79.0 <0.80.0 || ~0.80.0-0", - "@typespec/versioning": ">=0.79.0 <0.80.0 || ~0.80.0-0" + "@azure-tools/typespec-client-generator-core": ">=0.66.3 <0.67.0 || ~0.67.0-0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": ">=0.80.0 <0.81.0 || ~0.81.0-0", + "@typespec/sse": ">=0.80.0 <0.81.0 || ~0.81.0-0", + "@typespec/streams": ">=0.80.0 <0.81.0 || ~0.81.0-0", + "@typespec/versioning": ">=0.80.0 <0.81.0 || ~0.81.0-0" }, "devDependencies": { - "@azure-tools/azure-http-specs": "0.1.0-alpha.37", - "@azure-tools/typespec-azure-core": "0.65.0", - "@azure-tools/typespec-client-generator-core": "0.65.4", + "@azure-tools/azure-http-specs": "0.1.0-alpha.38", + "@azure-tools/typespec-azure-core": "0.66.0", + "@azure-tools/typespec-client-generator-core": "0.66.3", "@microsoft/api-extractor": "^7.52.2", "@types/node": "~22.12.0", - "@typespec/compiler": "1.9.0", - "@typespec/http": "1.9.0", - "@typespec/http-specs": "0.1.0-alpha.32", - "@typespec/json-schema": "1.9.0", - "@typespec/library-linter": "0.79.0", - "@typespec/openapi": "1.9.0", - "@typespec/rest": "0.79.0", - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/sse": "0.79.0", - "@typespec/streams": "0.79.0", - "@typespec/tspd": "0.73.1", - "@typespec/versioning": "0.79.0", - "@typespec/xml": "0.79.0", + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/http-specs": "0.1.0-alpha.35", + "@typespec/json-schema": "1.10.0", + "@typespec/library-linter": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/sse": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/tspd": "0.74.1", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", "@vitest/coverage-v8": "^3.0.5", "@vitest/ui": "^3.0.5", "c8": "^10.1.2", diff --git a/packages/http-client-csharp/readme.md b/packages/http-client-csharp/readme.md index 77f8efc84b9..2acc3d7cbaf 100644 --- a/packages/http-client-csharp/readme.md +++ b/packages/http-client-csharp/readme.md @@ -125,11 +125,11 @@ The name of the generator. By default this is set to `ScmCodeModelGenerator`. Ge Allows emitter authors to specify the path to a custom emitter package, allowing you to extend the emitter behavior. This should be set to `import.meta.url` if you are using a custom emitter. -### `update-code-model` +### `plugins` -**Type:** `object` +**Type:** `array` -Allows emitter authors to specify a custom function to modify the generated code model before emitting. This is useful for modifying the code model before it is passed to the generator. +Paths to generator plugin assemblies (DLLs) or directories containing plugin assemblies. Each plugin must contain a class that extends GeneratorPlugin. ### `license` diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index ed6fe2a8480..d7fe98b6fc8 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -506,6 +506,14 @@ export class CodeModelBuilder { this.trackSchemaUsage(schema, { usage: [SchemaContext.Public], }); + if (schema instanceof ObjectSchema && schema.usage) { + const schemaUsage: SchemaContext[] | undefined = schema.usage; + // And, remove the Paged, as we assume customer explicitly asks Public + const index = schemaUsage.indexOf(SchemaContext.Paged); + if (index >= 0) { + schemaUsage.splice(index, 1); + } + } } else if (access === "internal") { const schema = this.processSchema(model, model.name); @@ -1713,7 +1721,7 @@ export class CodeModelBuilder { name: string, description: string | undefined = undefined, ): GroupSchema { - // the "GroupSchema" is simliar to "ObjectSchema", but the process is different + // the "GroupSchema" is similar to "ObjectSchema", but the process is different if (type && this.schemaCache.has(type)) { return this.schemaCache.get(type) as GroupSchema; @@ -1886,9 +1894,7 @@ export class CodeModelBuilder { // group schema - // TODO: double check this suppression - // eslint-disable-next-line no-useless-assignment - let coreNamespace = this.namespace; + let coreNamespace; if (this.isAzureV1()) { coreNamespace = "com.azure.core.http"; } else { @@ -2015,7 +2021,25 @@ export class CodeModelBuilder { // binary/file schema = this.processBinarySchema(sdkType); } else { - schema = this.processSchema(getNonNullSdkType(sdkType), sdkBody.name); + if ( + !requestBodyIsFile && + sdkBody.contentTypes.length === 1 && + sdkBody.contentTypes[0] === "text/plain" && + sdkType.kind === "enum" + ) { + // handle a common definition error of string based scalar type as body, without content-type + reportDiagnostic(this.program, { + code: "type-not-supported-on-text-plain", + format: { + operationName: op.language.default.name, + payloadKind: "request body", + }, + target: sdkMethod.__raw ?? NoTarget, + }); + schema = this.stringSchema; + } else { + schema = this.processSchema(getNonNullSdkType(sdkType), sdkBody.name); + } } const parameterName = sdkBody.name; @@ -2288,13 +2312,32 @@ export class CodeModelBuilder { }, }); } else if (bodyType) { - // schema (usually JSON) - let schema: Schema | undefined = undefined; if (longRunning) { // LRO uses the LroMetadata for poll/final result, not the response of activation request + // hence the schema below is not tracked for convenience API trackConvenienceApi = false; } - if (!schema) { + + // schema (usually JSON) + let schema: Schema | undefined; + if ( + !responseBodyIsFile && + sdkResponse.contentTypes && + sdkResponse.contentTypes.length === 1 && + sdkResponse.contentTypes[0] === "text/plain" && + bodyType?.kind === "enum" + ) { + // handle a common definition error of string based scalar type as body, without content-type + reportDiagnostic(this.program, { + code: "type-not-supported-on-text-plain", + format: { + operationName: op.language.default.name, + payloadKind: "response body", + }, + target: NoTarget, + }); + schema = this.stringSchema; + } else { schema = this.processSchema(bodyType, op.language.default.name + "Response"); } response = new SchemaResponse(schema, { @@ -2794,13 +2837,15 @@ export class CodeModelBuilder { } // discriminator - if (type.discriminatedSubtypes && type.discriminatorProperty) { + if (type.discriminatorProperty) { objectSchema.discriminator = new Discriminator( this.processModelProperty(type.discriminatorProperty), ); - for (const discriminatorValue in type.discriminatedSubtypes) { - const subType = type.discriminatedSubtypes[discriminatorValue]; - this.processSchema(subType, subType.name); + if (type.discriminatedSubtypes) { + for (const discriminatorValue in type.discriminatedSubtypes) { + const subType = type.discriminatedSubtypes[discriminatorValue]; + this.processSchema(subType, subType.name); + } } } @@ -3042,14 +3087,14 @@ export class CodeModelBuilder { case "Enum": return pascalCase(type.name); case "Model": - if (isArrayModelType(this.program, type)) { + if (isArrayModelType(type)) { ++option.depth; if (option.depth === 1) { return this.getUnionVariantName(type.indexer.value, option) + "List"; } else { return "ListOf" + this.getUnionVariantName(type.indexer.value, option); } - } else if (isRecordModelType(this.program, type)) { + } else if (isRecordModelType(type)) { ++option.depth; if (option.depth === 1) { return this.getUnionVariantName(type.indexer.value, option) + "Map"; diff --git a/packages/http-client-java/emitter/src/common/formats/xml.ts b/packages/http-client-java/emitter/src/common/formats/xml.ts index 0a6c16bda73..4b05d8cc1ec 100644 --- a/packages/http-client-java/emitter/src/common/formats/xml.ts +++ b/packages/http-client-java/emitter/src/common/formats/xml.ts @@ -7,4 +7,8 @@ export interface XmlSerializationFormat extends SerializationFormat { attribute: boolean; wrapped: boolean; text: boolean; + // name/namespace/prefix on items, when wrapped=true (this type is an array) + itemsName?: string; + itemsNamespace?: string; + itemsPrefix?: string; } diff --git a/packages/http-client-java/emitter/src/emitter.ts b/packages/http-client-java/emitter/src/emitter.ts index 4e75b7d4bf0..5efbb6b138e 100644 --- a/packages/http-client-java/emitter/src/emitter.ts +++ b/packages/http-client-java/emitter/src/emitter.ts @@ -185,20 +185,23 @@ function reportJarOutput(program: Program, jarOutput: string) { } // trace or report the logs, according to log level + const typeSpecPluginPrefix = "com.microsoft.typespec.http.client.generator."; + const errorPrefix = "ERROR " + typeSpecPluginPrefix; + const warnPrefix = "WARN " + typeSpecPluginPrefix; for (const log of logs) { - if (log.startsWith("ERROR ")) { + if (log.startsWith(errorPrefix)) { reportDiagnostic(program, { code: "generator-error", format: { - errorMessage: log.substring(6), + errorMessage: log.substring(errorPrefix.length), }, target: NoTarget, }); - } else if (log.startsWith("WARN ")) { + } else if (log.startsWith(warnPrefix)) { reportDiagnostic(program, { code: "generator-warning", format: { - warningMessage: log.substring(5), + warningMessage: log.substring(warnPrefix.length), }, target: NoTarget, }); diff --git a/packages/http-client-java/emitter/src/lib.ts b/packages/http-client-java/emitter/src/lib.ts index 9ffcee2adf5..9c0aff4db7b 100644 --- a/packages/http-client-java/emitter/src/lib.ts +++ b/packages/http-client-java/emitter/src/lib.ts @@ -126,6 +126,12 @@ export const $lib = createTypeSpecLibrary({ "Spread JSON merge-patch payload is not supported. The reason is that a property in JSON merge-patch payload class can: set a value; not set so that value does not change; set to null to remove the value. A parameter on method cannot distinguish the latter 2 cases.", }, }, + "type-not-supported-on-text-plain": { + severity: "warning", + messages: { + default: paramMessage`Complex SDK type is not supported for "text/plain" content-type. Emitter would use string type on '${"operationName"}' ${"payloadKind"}.`, + }, + }, }, emitter: { options: EmitterOptionsSchema, diff --git a/packages/http-client-java/emitter/src/operation-utils.ts b/packages/http-client-java/emitter/src/operation-utils.ts index 38c4d532b09..1b130748324 100644 --- a/packages/http-client-java/emitter/src/operation-utils.ts +++ b/packages/http-client-java/emitter/src/operation-utils.ts @@ -224,6 +224,13 @@ export function findResponsePropertySegments( const propertyArray: Property[] = []; let currentSchemaProperties: Property[] | undefined = schema.properties; + if (currentSchemaProperties && schema.parents && schema.parents.all) { + for (const parent of schema.parents.all) { + if (parent instanceof ObjectSchema && parent.properties) { + currentSchemaProperties = currentSchemaProperties.concat(parent.properties); + } + } + } for (const propertySegment of propertySegments) { // abort if no properties in current schema. this should not happen though if (!currentSchemaProperties) { diff --git a/packages/http-client-java/emitter/src/type-utils.ts b/packages/http-client-java/emitter/src/type-utils.ts index 0ce5e07a444..e9df7d9cbfd 100644 --- a/packages/http-client-java/emitter/src/type-utils.ts +++ b/packages/http-client-java/emitter/src/type-utils.ts @@ -403,6 +403,9 @@ export function getXmlSerializationFormat( attribute: type.serializationOptions.xml.attribute ?? false, wrapped: propertyTypeIsArray ? !(type.serializationOptions.xml.unwrapped ?? true) : false, text: propertyTypeIsText ? (type.serializationOptions.xml.unwrapped ?? false) : false, + itemsName: type.serializationOptions.xml.itemsName ?? undefined, + itemsNamespace: type.serializationOptions.xml.itemsNs?.namespace ?? undefined, + itemsPrefix: type.serializationOptions.xml.itemsNs?.prefix ?? undefined, }; } diff --git a/packages/http-client-java/emitter/src/versioning-utils.ts b/packages/http-client-java/emitter/src/versioning-utils.ts index 0497a7d9869..02e0c98f424 100644 --- a/packages/http-client-java/emitter/src/versioning-utils.ts +++ b/packages/http-client-java/emitter/src/versioning-utils.ts @@ -34,15 +34,19 @@ export function getServiceApiVersions( ): Version[] | InconsistentVersions { // TODO: use client.apiVersions + const rawServices: Namespace | Namespace[] | undefined = + client.__raw.services ?? (client.__raw as any).service; + const serviceList = Array.isArray(rawServices) ? rawServices : rawServices ? [rawServices] : []; + let apiVersions: Version[] | InconsistentVersions; // TCGC 0.63+ supports multiple api-version in a single client - if (Array.isArray(client.__raw.service)) { + if (serviceList.length > 1) { // here, we treat a versioned client with multiple service as client of mixed versions apiVersions = isSdkClientVersioned(client) ? InconsistentVersions.MixedVersions : InconsistentVersions.NotVersioned; - } else { - const serviceNamespace = client.__raw.service; + } else if (serviceList.length === 1) { + const serviceNamespace = serviceList[0]; const versionedNamespace: Namespace | undefined = findVersionedNamespace( program, serviceNamespace, @@ -54,6 +58,8 @@ export function getServiceApiVersions( } else { apiVersions = InconsistentVersions.NotVersioned; } + } else { + apiVersions = InconsistentVersions.NotVersioned; } return apiVersions; } diff --git a/packages/http-client-java/eng/scripts/Build-Packages.ps1 b/packages/http-client-java/eng/scripts/Build-Packages.ps1 index d2063811459..1a2e3172bf2 100644 --- a/packages/http-client-java/eng/scripts/Build-Packages.ps1 +++ b/packages/http-client-java/eng/scripts/Build-Packages.ps1 @@ -93,7 +93,7 @@ finally { } if ($PublishType -eq "internal") { - $feedUrl = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest/npm/registry" + $feedUrl = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry" $overrides = @{ "@typespec/http-client-java" = "$feedUrl/@typespec/http-client-java/-/http-client-java-$emitterVersion.tgz" diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json b/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json index 900ccd89eb2..1b3fa3ebf80 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/package.json @@ -12,27 +12,27 @@ "spector-stop": "tsp-spector server stop" }, "dependencies": { - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/spec-api": "0.1.0-alpha.12", - "@typespec/http-specs": "0.1.0-alpha.32", - "@typespec/json-schema": "1.9.0", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/spec-api": "0.1.0-alpha.13", + "@typespec/http-specs": "0.1.0-alpha.35", + "@typespec/json-schema": "1.10.0", "@typespec/http-client-java": "file:../../typespec-http-client-java-0.7.0.tgz", "@typespec/http-client-java-tests": "file:" }, "overrides": { - "@typespec/compiler": "1.9.0", - "@typespec/http": "1.9.1", - "@typespec/rest": "0.79.0", - "@typespec/versioning": "0.79.0", - "@typespec/openapi": "1.9.0", - "@typespec/xml": "0.79.0", - "@typespec/events": "0.79.0", - "@typespec/sse": "0.79.0", - "@typespec/streams": "0.79.0", - "@azure-tools/typespec-azure-core": "0.65.0", - "@azure-tools/typespec-client-generator-core": "0.65.4", - "@azure-tools/typespec-azure-resource-manager": "0.65.0", - "@azure-tools/typespec-autorest": "0.65.0" + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/xml": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/sse": "0.80.0", + "@typespec/streams": "0.80.0", + "@azure-tools/typespec-azure-core": "0.66.1", + "@azure-tools/typespec-client-generator-core": "0.66.4", + "@azure-tools/typespec-azure-resource-manager": "0.66.1", + "@azure-tools/typespec-autorest": "0.66.2" }, "private": true } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/PageableClientBuilder.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/PageableClientBuilder.java index ef831f93d4e..5685b81069d 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/PageableClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/PageableClientBuilder.java @@ -34,6 +34,7 @@ @ServiceClientBuilder( serviceClients = { ServerDrivenPaginationClient.class, + ServerDrivenPaginationAlternateInitialVerbClient.class, ServerDrivenPaginationContinuationTokenClient.class, PageSizeClient.class, XmlPaginationClient.class }) @@ -239,6 +240,18 @@ public ServerDrivenPaginationClient buildServerDrivenPaginationClient() { innerClient.getInstrumentation()); } + /** + * Builds an instance of ServerDrivenPaginationAlternateInitialVerbClient class. + * + * @return an instance of ServerDrivenPaginationAlternateInitialVerbClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ServerDrivenPaginationAlternateInitialVerbClient buildServerDrivenPaginationAlternateInitialVerbClient() { + PageableClientImpl innerClient = buildInnerClient(); + return new ServerDrivenPaginationAlternateInitialVerbClient( + innerClient.getServerDrivenPaginationAlternateInitialVerbs(), innerClient.getInstrumentation()); + } + /** * Builds an instance of ServerDrivenPaginationContinuationTokenClient class. * diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/ServerDrivenPaginationAlternateInitialVerbClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/ServerDrivenPaginationAlternateInitialVerbClient.java new file mode 100644 index 00000000000..bd88c989471 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/ServerDrivenPaginationAlternateInitialVerbClient.java @@ -0,0 +1,68 @@ +package payload.pageable; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.paging.PagedIterable; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.pageable.implementation.ServerDrivenPaginationAlternateInitialVerbsImpl; +import payload.pageable.serverdrivenpagination.alternateinitialverb.Filter; + +/** + * Initializes a new instance of the synchronous PageableClient type. + */ +@ServiceClient(builder = PageableClientBuilder.class) +public final class ServerDrivenPaginationAlternateInitialVerbClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ServerDrivenPaginationAlternateInitialVerbsImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ServerDrivenPaginationAlternateInitialVerbClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ServerDrivenPaginationAlternateInitialVerbClient(ServerDrivenPaginationAlternateInitialVerbsImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable post(Filter body) { + return post(body, RequestContext.none()); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable post(Filter body, RequestContext requestContext) { + return this.serviceClient.post(body, requestContext); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/implementation/PageableClientImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/implementation/PageableClientImpl.java index 8fbf04923c5..5daf053a968 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/implementation/PageableClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/implementation/PageableClientImpl.java @@ -63,6 +63,20 @@ public ServerDrivenPaginationsImpl getServerDrivenPaginations() { return this.serverDrivenPaginations; } + /** + * The ServerDrivenPaginationAlternateInitialVerbsImpl object to access its operations. + */ + private final ServerDrivenPaginationAlternateInitialVerbsImpl serverDrivenPaginationAlternateInitialVerbs; + + /** + * Gets the ServerDrivenPaginationAlternateInitialVerbsImpl object to access its operations. + * + * @return the ServerDrivenPaginationAlternateInitialVerbsImpl object. + */ + public ServerDrivenPaginationAlternateInitialVerbsImpl getServerDrivenPaginationAlternateInitialVerbs() { + return this.serverDrivenPaginationAlternateInitialVerbs; + } + /** * The ServerDrivenPaginationContinuationTokensImpl object to access its operations. */ @@ -117,6 +131,7 @@ public PageableClientImpl(HttpPipeline httpPipeline, Instrumentation instrumenta this.instrumentation = instrumentation; this.endpoint = endpoint; this.serverDrivenPaginations = new ServerDrivenPaginationsImpl(this); + this.serverDrivenPaginationAlternateInitialVerbs = new ServerDrivenPaginationAlternateInitialVerbsImpl(this); this.serverDrivenPaginationContinuationTokens = new ServerDrivenPaginationContinuationTokensImpl(this); this.pageSizes = new PageSizesImpl(this); this.xmlPaginations = new XmlPaginationsImpl(this); diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/implementation/ServerDrivenPaginationAlternateInitialVerbsImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/implementation/ServerDrivenPaginationAlternateInitialVerbsImpl.java new file mode 100644 index 00000000000..6b712ffdde3 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/implementation/ServerDrivenPaginationAlternateInitialVerbsImpl.java @@ -0,0 +1,265 @@ +package payload.pageable.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.PathParam; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.paging.PagedIterable; +import io.clientcore.core.http.paging.PagedResponse; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import io.clientcore.core.instrumentation.logging.ClientLogger; +import java.lang.reflect.InvocationTargetException; +import payload.pageable.Pet; +import payload.pageable.serverdrivenpagination.alternateinitialverb.Filter; +import payload.pageable.serverdrivenpagination.alternateinitialverb.implementation.PostResponse; + +/** + * An instance of this class provides access to all the operations defined in + * ServerDrivenPaginationAlternateInitialVerbs. + */ +public final class ServerDrivenPaginationAlternateInitialVerbsImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ServerDrivenPaginationAlternateInitialVerbsService service; + + /** + * The service client containing this operation class. + */ + private final PageableClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ServerDrivenPaginationAlternateInitialVerbsImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ServerDrivenPaginationAlternateInitialVerbsImpl(PageableClientImpl client) { + this.service = ServerDrivenPaginationAlternateInitialVerbsService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for PageableClientServerDrivenPaginationAlternateInitialVerbs to be used + * by the proxy service to perform REST calls. + */ + @ServiceInterface(name = "PageableClientServerDrivenPaginationAlternateInitialVerbs", host = "{endpoint}") + public interface ServerDrivenPaginationAlternateInitialVerbsService { + static ServerDrivenPaginationAlternateInitialVerbsService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class + .forName("payload.pageable.implementation.ServerDrivenPaginationAlternateInitialVerbsServiceImpl"); + return (ServerDrivenPaginationAlternateInitialVerbsService) clazz + .getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.POST, + path = "/payload/pageable/server-driven-pagination/link/initial-post", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response post(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + @BodyParam("application/json") Filter body, RequestContext requestContext); + + @HttpRequestInformation(method = HttpMethod.GET, path = "{nextLink}", expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response postNext(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + RequestContext requestContext); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public PagedResponse postSinglePage(Filter body) { + return this.instrumentation.instrumentWithResponse( + "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post", RequestContext.none(), + updatedContext -> { + final String accept = "application/json"; + Response res = service.post(this.client.getEndpoint(), accept, body, updatedContext); + return new PagedResponse<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + res.getValue().getPets(), null, res.getValue().getNext() != null ? res.getValue().getNext() : null, + null, null, null); + }); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public PagedResponse postSinglePage(Filter body, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post", requestContext, updatedContext -> { + final String accept = "application/json"; + Response res = service.post(this.client.getEndpoint(), accept, body, updatedContext); + return new PagedResponse<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + res.getValue().getPets(), null, res.getValue().getNext() != null ? res.getValue().getNext() : null, + null, null, null); + }); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable post(Filter body) { + return new PagedIterable<>((pagingOptions) -> { + if (pagingOptions.getOffset() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "offset") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + if (pagingOptions.getPageSize() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "pageSize") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + if (pagingOptions.getPageIndex() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "pageIndex") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + if (pagingOptions.getContinuationToken() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "continuationToken") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + return postSinglePage(body); + }, (pagingOptions, nextLink) -> postNextSinglePage(nextLink)); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable post(Filter body, RequestContext requestContext) { + RequestContext requestContextForNextPage = requestContext != null ? requestContext : RequestContext.none(); + return new PagedIterable<>((pagingOptions) -> { + if (pagingOptions.getOffset() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "offset") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + if (pagingOptions.getPageSize() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "pageSize") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + if (pagingOptions.getPageIndex() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "pageIndex") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + if (pagingOptions.getContinuationToken() != null) { + throw LOGGER.throwableAtError() + .addKeyValue("propertyName", "continuationToken") + .addKeyValue("methodName", "post") + .log("Not a supported paging option in this API", IllegalArgumentException::new); + } + return postSinglePage(body, requestContext); + }, (pagingOptions, nextLink) -> postNextSinglePage(nextLink, requestContextForNextPage)); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public PagedResponse postNextSinglePage(String nextLink) { + return this.instrumentation.instrumentWithResponse( + "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post", RequestContext.none(), + updatedContext -> { + final String accept = "application/json"; + Response res + = service.postNext(nextLink, this.client.getEndpoint(), accept, updatedContext); + return new PagedResponse<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + res.getValue().getPets(), null, res.getValue().getNext() != null ? res.getValue().getNext() : null, + null, null, null); + }); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public PagedResponse postNextSinglePage(String nextLink, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post", requestContext, updatedContext -> { + final String accept = "application/json"; + Response res + = service.postNext(nextLink, this.client.getEndpoint(), accept, updatedContext); + return new PagedResponse<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + res.getValue().getPets(), null, res.getValue().getNext() != null ? res.getValue().getNext() : null, + null, null, null); + }); + } + + private static final ClientLogger LOGGER = new ClientLogger(ServerDrivenPaginationAlternateInitialVerbsImpl.class); +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/Filter.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/Filter.java new file mode 100644 index 00000000000..968e10461af --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/Filter.java @@ -0,0 +1,79 @@ +package payload.pageable.serverdrivenpagination.alternateinitialverb; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.json.JsonReader; +import io.clientcore.core.serialization.json.JsonSerializable; +import io.clientcore.core.serialization.json.JsonToken; +import io.clientcore.core.serialization.json.JsonWriter; +import java.io.IOException; + +/** + * The Filter model. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class Filter implements JsonSerializable { + /* + * The filter property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String filter; + + /** + * Creates an instance of Filter class. + * + * @param filter the filter value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public Filter(String filter) { + this.filter = filter; + } + + /** + * Get the filter property: The filter property. + * + * @return the filter value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getFilter() { + return this.filter; + } + + /** + * {@inheritDoc} + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("filter", this.filter); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of Filter from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of Filter if the JsonReader was pointing to an instance of it, or null if it was pointing to + * JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the Filter. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Filter fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String filter = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("filter".equals(fieldName)) { + filter = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new Filter(filter); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/PostResponse.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/PostResponse.java new file mode 100644 index 00000000000..bd2013d7d53 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/PostResponse.java @@ -0,0 +1,104 @@ +package payload.pageable.serverdrivenpagination.alternateinitialverb.implementation; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.json.JsonReader; +import io.clientcore.core.serialization.json.JsonSerializable; +import io.clientcore.core.serialization.json.JsonToken; +import io.clientcore.core.serialization.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import payload.pageable.Pet; + +/** + * The PostResponse model. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class PostResponse implements JsonSerializable { + /* + * The pets property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final List pets; + + /* + * The next property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private String next; + + /** + * Creates an instance of PostResponse class. + * + * @param pets the pets value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private PostResponse(List pets) { + this.pets = pets; + } + + /** + * Get the pets property: The pets property. + * + * @return the pets value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public List getPets() { + return this.pets; + } + + /** + * Get the next property: The next property. + * + * @return the next value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getNext() { + return this.next; + } + + /** + * {@inheritDoc} + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("pets", this.pets, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("next", this.next); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PostResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PostResponse if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the PostResponse. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static PostResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List pets = null; + String next = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("pets".equals(fieldName)) { + pets = reader.readArray(reader1 -> Pet.fromJson(reader1)); + } else if ("next".equals(fieldName)) { + next = reader.getString(); + } else { + reader.skipChildren(); + } + } + PostResponse deserializedPostResponse = new PostResponse(pets); + deserializedPostResponse.next = next; + + return deserializedPostResponse; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/package-info.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/package-info.java new file mode 100644 index 00000000000..f3483f4acde --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/package-info.java @@ -0,0 +1,5 @@ +/** + * Package containing the data models for Pageable. + * Test for pageable payload. + */ +package payload.pageable.serverdrivenpagination.alternateinitialverb.implementation; diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/package-info.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/package-info.java new file mode 100644 index 00000000000..e18e01d730d --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/package-info.java @@ -0,0 +1,5 @@ +/** + * Package containing the data models for Pageable. + * Test for pageable payload. + */ +package payload.pageable.serverdrivenpagination.alternateinitialverb; diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Author.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Author.java new file mode 100644 index 00000000000..2abf05a5e9d --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Author.java @@ -0,0 +1,101 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * Author model with a custom XML name. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class Author implements XmlSerializable { + /* + * The name property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String name; + + /** + * Creates an instance of Author class. + * + * @param name the name value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public Author(String name) { + this.name = name; + } + + /** + * Get the name property: The name property. + * + * @return the name value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getName() { + return this.name; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() ? "XmlAuthor" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeStringElement("name", this.name); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of Author from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of Author if the XmlReader was pointing to an instance of it, or null if it was pointing to + * XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the Author. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Author fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of Author from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of Author if the XmlReader was pointing to an instance of it, or null if it was pointing to + * XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the Author. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Author fromXml(XmlReader xmlReader, String rootElementName) throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "XmlAuthor" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + String name = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("name".equals(elementName.getLocalPart())) { + name = reader.getStringElement(); + } else { + reader.skipElement(); + } + } + return new Author(name); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Book.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Book.java new file mode 100644 index 00000000000..b6a1b07592d --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Book.java @@ -0,0 +1,101 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * Book model with a custom XML name. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class Book implements XmlSerializable { + /* + * The title property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String title; + + /** + * Creates an instance of Book class. + * + * @param title the title value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public Book(String title) { + this.title = title; + } + + /** + * Get the title property: The title property. + * + * @return the title value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getTitle() { + return this.title; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() ? "XmlBook" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeStringElement("title", this.title); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of Book from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of Book if the XmlReader was pointing to an instance of it, or null if it was pointing to XML + * null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the Book. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Book fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of Book from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of Book if the XmlReader was pointing to an instance of it, or null if it was pointing to XML + * null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the Book. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Book fromXml(XmlReader xmlReader, String rootElementName) throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "XmlBook" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + String title = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("title".equals(elementName.getLocalPart())) { + title = reader.getStringElement(); + } else { + reader.skipElement(); + } + } + return new Book(title); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModel.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModel.java index 9a7272bf216..c47976a3e00 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModel.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModel.java @@ -12,7 +12,7 @@ import javax.xml.stream.XMLStreamException; /** - * Contains an array of models. + * §4.1 — Contains an array of models. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class ModelWithArrayOfModel implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModelValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModelValueClient.java index ceed78c57ef..50e8096cf0d 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModelValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithArrayOfModelValueClient.java @@ -40,7 +40,7 @@ public final class ModelWithArrayOfModelValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains an array of models along with {@link Response}. + * @return §4.1 — Contains an array of models along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -54,7 +54,7 @@ public Response getWithResponse(RequestContext requestCon * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains an array of models. + * @return §4.1 — Contains an array of models. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributes.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributes.java index c584856a910..3dc261eb287 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributes.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributes.java @@ -10,7 +10,7 @@ import javax.xml.stream.XMLStreamException; /** - * Contains fields that are XML attributes. + * §5.1 — Contains fields that are XML attributes. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class ModelWithAttributes implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributesValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributesValueClient.java index 55f0f798d96..211384df9f0 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributesValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithAttributesValueClient.java @@ -40,7 +40,7 @@ public final class ModelWithAttributesValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields that are XML attributes along with {@link Response}. + * @return §5.1 — Contains fields that are XML attributes along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -54,7 +54,7 @@ public Response getWithResponse(RequestContext requestConte * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields that are XML attributes. + * @return §5.1 — Contains fields that are XML attributes. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithDatetime.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithDatetime.java new file mode 100644 index 00000000000..5c0cabd0e8c --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithDatetime.java @@ -0,0 +1,138 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import io.clientcore.core.utils.DateTimeRfc1123; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Objects; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * Contains datetime properties with different encodings. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithDatetime implements XmlSerializable { + /* + * DateTime value with rfc3339 encoding. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final OffsetDateTime rfc3339; + + /* + * DateTime value with rfc7231 encoding. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final DateTimeRfc1123 rfc7231; + + /** + * Creates an instance of ModelWithDatetime class. + * + * @param rfc3339 the rfc3339 value to set. + * @param rfc7231 the rfc7231 value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithDatetime(OffsetDateTime rfc3339, OffsetDateTime rfc7231) { + this.rfc3339 = rfc3339; + if (rfc7231 == null) { + this.rfc7231 = null; + } else { + this.rfc7231 = new DateTimeRfc1123(rfc7231); + } + } + + /** + * Get the rfc3339 property: DateTime value with rfc3339 encoding. + * + * @return the rfc3339 value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public OffsetDateTime getRfc3339() { + return this.rfc3339; + } + + /** + * Get the rfc7231 property: DateTime value with rfc7231 encoding. + * + * @return the rfc7231 value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public OffsetDateTime getRfc7231() { + if (this.rfc7231 == null) { + return null; + } + return this.rfc7231.getDateTime(); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() ? "ModelWithDatetime" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeStringElement("rfc3339", + this.rfc3339 == null ? null : DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(this.rfc3339)); + xmlWriter.writeStringElement("rfc7231", Objects.toString(this.rfc7231, null)); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithDatetime from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithDatetime if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithDatetime. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithDatetime fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithDatetime from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithDatetime if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithDatetime. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithDatetime fromXml(XmlReader xmlReader, String rootElementName) throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithDatetime" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + OffsetDateTime rfc3339 = null; + OffsetDateTime rfc7231 = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("rfc3339".equals(elementName.getLocalPart())) { + rfc3339 = reader.getNullableElement(dateString -> OffsetDateTime.parse(dateString)); + } else if ("rfc7231".equals(elementName.getLocalPart())) { + DateTimeRfc1123 rfc7231Holder = reader.getNullableElement(DateTimeRfc1123::new); + if (rfc7231Holder != null) { + rfc7231 = rfc7231Holder.getDateTime(); + } + } else { + reader.skipElement(); + } + } + return new ModelWithDatetime(rfc3339, rfc7231); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithDatetimeValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithDatetimeValueClient.java new file mode 100644 index 00000000000..7800490c498 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithDatetimeValueClient.java @@ -0,0 +1,95 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithDatetimeValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithDatetimeValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithDatetimeValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithDatetimeValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithDatetimeValueClient(ModelWithDatetimeValuesImpl serviceClient, Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return contains datetime properties with different encodings along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithDatetimeValue.get", requestContext, + updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return contains datetime properties with different encodings. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithDatetime get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithDatetime input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithDatetimeValue.put", requestContext, + updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithDatetime input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithEnum.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithEnum.java new file mode 100644 index 00000000000..176301e6f79 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithEnum.java @@ -0,0 +1,101 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * Contains a single property with an enum value. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithEnum implements XmlSerializable { + /* + * The status property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final Status status; + + /** + * Creates an instance of ModelWithEnum class. + * + * @param status the status value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithEnum(Status status) { + this.status = status; + } + + /** + * Get the status property: The status property. + * + * @return the status value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public Status getStatus() { + return this.status; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() ? "ModelWithEnum" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeStringElement("status", this.status == null ? null : this.status.getValue()); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithEnum from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithEnum if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithEnum. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithEnum fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithEnum from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithEnum if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithEnum. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithEnum fromXml(XmlReader xmlReader, String rootElementName) throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithEnum" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + Status status = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("status".equals(elementName.getLocalPart())) { + status = Status.fromValue(reader.getStringElement()); + } else { + reader.skipElement(); + } + } + return new ModelWithEnum(status); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithEnumValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithEnumValueClient.java new file mode 100644 index 00000000000..a0fe35c3f8e --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithEnumValueClient.java @@ -0,0 +1,95 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithEnumValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithEnumValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithEnumValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithEnumValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithEnumValueClient(ModelWithEnumValuesImpl serviceClient, Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return contains a single property with an enum value along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithEnumValue.get", requestContext, + updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return contains a single property with an enum value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithEnum get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithEnum input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithEnumValue.put", requestContext, + updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithEnum input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespace.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespace.java new file mode 100644 index 00000000000..6cd2cb14061 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespace.java @@ -0,0 +1,126 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §6.1, §7.1 — Contains fields with XML namespace on the model. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithNamespace implements XmlSerializable { + private static final String EXAMPLE_COM__SCHEMA = "http://example.com/schema"; + + /* + * The id property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final int id; + + /* + * The title property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String title; + + /** + * Creates an instance of ModelWithNamespace class. + * + * @param id the id value to set. + * @param title the title value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithNamespace(int id, String title) { + this.id = id; + this.title = title; + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public int getId() { + return this.id; + } + + /** + * Get the title property: The title property. + * + * @return the title value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getTitle() { + return this.title; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() ? "ModelWithNamespace" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeNamespace(EXAMPLE_COM__SCHEMA); + xmlWriter.writeIntElement("id", this.id); + xmlWriter.writeStringElement("title", this.title); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithNamespace from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithNamespace if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithNamespace. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithNamespace fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithNamespace from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithNamespace if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithNamespace. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithNamespace fromXml(XmlReader xmlReader, String rootElementName) throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithNamespace" : rootElementName; + return xmlReader.readObject(EXAMPLE_COM__SCHEMA, finalRootElementName, reader -> { + int id = 0; + String title = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("id".equals(elementName.getLocalPart())) { + id = reader.getIntElement(); + } else if ("title".equals(elementName.getLocalPart())) { + title = reader.getStringElement(); + } else { + reader.skipElement(); + } + } + return new ModelWithNamespace(id, title); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceOnProperties.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceOnProperties.java new file mode 100644 index 00000000000..a463536c8a8 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceOnProperties.java @@ -0,0 +1,156 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §6.2, §7.2 — Contains fields with different XML namespaces on individual properties. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithNamespaceOnProperties implements XmlSerializable { + private static final String EXAMPLE_COM__SCHEMA = "http://example.com/schema"; + + private static final String EXAMPLE_COM__NS2 = "http://example.com/ns2"; + + /* + * The id property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final int id; + + /* + * The title property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String title; + + /* + * The author property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String author; + + /** + * Creates an instance of ModelWithNamespaceOnProperties class. + * + * @param id the id value to set. + * @param title the title value to set. + * @param author the author value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithNamespaceOnProperties(int id, String title, String author) { + this.id = id; + this.title = title; + this.author = author; + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public int getId() { + return this.id; + } + + /** + * Get the title property: The title property. + * + * @return the title value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getTitle() { + return this.title; + } + + /** + * Get the author property: The author property. + * + * @return the author value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getAuthor() { + return this.author; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithNamespaceOnProperties" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeNamespace(EXAMPLE_COM__SCHEMA); + xmlWriter.writeNamespace("smp", EXAMPLE_COM__SCHEMA); + xmlWriter.writeNamespace("ns2", EXAMPLE_COM__NS2); + xmlWriter.writeIntElement("id", this.id); + xmlWriter.writeStringElement(EXAMPLE_COM__SCHEMA, "title", this.title); + xmlWriter.writeStringElement(EXAMPLE_COM__NS2, "author", this.author); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithNamespaceOnProperties from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithNamespaceOnProperties if the XmlReader was pointing to an instance of it, or null + * if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithNamespaceOnProperties. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithNamespaceOnProperties fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithNamespaceOnProperties from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithNamespaceOnProperties if the XmlReader was pointing to an instance of it, or null + * if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithNamespaceOnProperties. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithNamespaceOnProperties fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithNamespaceOnProperties" : rootElementName; + return xmlReader.readObject(EXAMPLE_COM__SCHEMA, finalRootElementName, reader -> { + int id = 0; + String title = null; + String author = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("id".equals(elementName.getLocalPart())) { + id = reader.getIntElement(); + } else if ("title".equals(elementName.getLocalPart()) + && EXAMPLE_COM__SCHEMA.equals(elementName.getNamespaceURI())) { + title = reader.getStringElement(); + } else if ("author".equals(elementName.getLocalPart()) + && EXAMPLE_COM__NS2.equals(elementName.getNamespaceURI())) { + author = reader.getStringElement(); + } else { + reader.skipElement(); + } + } + return new ModelWithNamespaceOnProperties(id, title, author); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceOnPropertiesValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceOnPropertiesValueClient.java new file mode 100644 index 00000000000..a1406378bef --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceOnPropertiesValueClient.java @@ -0,0 +1,97 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithNamespaceOnPropertiesValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithNamespaceOnPropertiesValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithNamespaceOnPropertiesValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithNamespaceOnPropertiesValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithNamespaceOnPropertiesValueClient(ModelWithNamespaceOnPropertiesValuesImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §6.2, §7.2 — Contains fields with different XML namespaces on individual properties along with + * {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceOnPropertiesValue.get", + requestContext, updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §6.2, §7.2 — Contains fields with different XML namespaces on individual properties. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithNamespaceOnProperties get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithNamespaceOnProperties input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceOnPropertiesValue.put", + requestContext, updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithNamespaceOnProperties input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceValueClient.java new file mode 100644 index 00000000000..7252d78891f --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNamespaceValueClient.java @@ -0,0 +1,95 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithNamespaceValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithNamespaceValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithNamespaceValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithNamespaceValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithNamespaceValueClient(ModelWithNamespaceValuesImpl serviceClient, Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §6.1, §7.1 — Contains fields with XML namespace on the model along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceValue.get", requestContext, + updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §6.1, §7.1 — Contains fields with XML namespace on the model. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithNamespace get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithNamespace input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceValue.put", requestContext, + updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithNamespace input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNestedModel.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNestedModel.java new file mode 100644 index 00000000000..abd318497dd --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNestedModel.java @@ -0,0 +1,102 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §2.1 — Contains a property that references another model. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithNestedModel implements XmlSerializable { + /* + * The nested property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final SimpleModel nested; + + /** + * Creates an instance of ModelWithNestedModel class. + * + * @param nested the nested value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithNestedModel(SimpleModel nested) { + this.nested = nested; + } + + /** + * Get the nested property: The nested property. + * + * @return the nested value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public SimpleModel getNested() { + return this.nested; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithNestedModel" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeXml(this.nested, "nested"); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithNestedModel from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithNestedModel if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithNestedModel. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithNestedModel fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithNestedModel from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithNestedModel if the XmlReader was pointing to an instance of it, or null if it was + * pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithNestedModel. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithNestedModel fromXml(XmlReader xmlReader, String rootElementName) throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithNestedModel" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + SimpleModel nested = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("nested".equals(elementName.getLocalPart())) { + nested = SimpleModel.fromXml(reader, "nested"); + } else { + reader.skipElement(); + } + } + return new ModelWithNestedModel(nested); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNestedModelValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNestedModelValueClient.java new file mode 100644 index 00000000000..f1e1387ed15 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithNestedModelValueClient.java @@ -0,0 +1,95 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithNestedModelValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithNestedModelValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithNestedModelValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithNestedModelValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithNestedModelValueClient(ModelWithNestedModelValuesImpl serviceClient, Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §2.1 — Contains a property that references another model along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNestedModelValue.get", requestContext, + updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §2.1 — Contains a property that references another model. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithNestedModel get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithNestedModel input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNestedModelValue.put", requestContext, + updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithNestedModel input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArrays.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArrays.java index 89b759092b7..bfb82143e26 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArrays.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArrays.java @@ -12,7 +12,8 @@ import javax.xml.stream.XMLStreamException; /** - * Contains fields of wrapped and unwrapped arrays of primitive types that have different XML representations. + * §3.3, §3.4 — Contains fields of wrapped and unwrapped arrays of primitive types that have different XML + * representations. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class ModelWithRenamedArrays implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArraysValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArraysValueClient.java index fccb3ac22d6..cce36a3476b 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArraysValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedArraysValueClient.java @@ -40,7 +40,7 @@ public final class ModelWithRenamedArraysValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of wrapped and unwrapped arrays of primitive types that have different XML + * @return §3.3, §3.4 — Contains fields of wrapped and unwrapped arrays of primitive types that have different XML * representations along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @@ -55,7 +55,7 @@ public Response getWithResponse(RequestContext requestCo * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of wrapped and unwrapped arrays of primitive types that have different XML + * @return §3.3, §3.4 — Contains fields of wrapped and unwrapped arrays of primitive types that have different XML * representations. */ @Metadata(properties = { MetadataProperties.GENERATED }) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedAttribute.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedAttribute.java new file mode 100644 index 00000000000..6454b86dcaa --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedAttribute.java @@ -0,0 +1,145 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §5.2 — Contains a renamed XML attribute. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithRenamedAttribute implements XmlSerializable { + /* + * The xml-id property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final int id; + + /* + * The title property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String title; + + /* + * The author property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String author; + + /** + * Creates an instance of ModelWithRenamedAttribute class. + * + * @param id the id value to set. + * @param title the title value to set. + * @param author the author value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedAttribute(int id, String title, String author) { + this.id = id; + this.title = title; + this.author = author; + } + + /** + * Get the id property: The xml-id property. + * + * @return the id value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public int getId() { + return this.id; + } + + /** + * Get the title property: The title property. + * + * @return the title value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getTitle() { + return this.title; + } + + /** + * Get the author property: The author property. + * + * @return the author value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getAuthor() { + return this.author; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithRenamedAttribute" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeIntAttribute("xml-id", this.id); + xmlWriter.writeStringElement("title", this.title); + xmlWriter.writeStringElement("author", this.author); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithRenamedAttribute from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithRenamedAttribute if the XmlReader was pointing to an instance of it, or null if + * it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedAttribute. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedAttribute fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithRenamedAttribute from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithRenamedAttribute if the XmlReader was pointing to an instance of it, or null if + * it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedAttribute. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedAttribute fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithRenamedAttribute" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + String title = null; + String author = null; + int id = reader.getIntAttribute(null, "xml-id"); + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("title".equals(elementName.getLocalPart())) { + title = reader.getStringElement(); + } else if ("author".equals(elementName.getLocalPart())) { + author = reader.getStringElement(); + } else { + reader.skipElement(); + } + } + return new ModelWithRenamedAttribute(id, title, author); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedAttributeValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedAttributeValueClient.java new file mode 100644 index 00000000000..6ea54457ea9 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedAttributeValueClient.java @@ -0,0 +1,96 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithRenamedAttributeValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithRenamedAttributeValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithRenamedAttributeValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedAttributeValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithRenamedAttributeValueClient(ModelWithRenamedAttributeValuesImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §5.2 — Contains a renamed XML attribute along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedAttributeValue.get", + requestContext, updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §5.2 — Contains a renamed XML attribute. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithRenamedAttribute get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedAttribute input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedAttributeValue.put", + requestContext, updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithRenamedAttribute input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFields.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFields.java index f2060abcd17..9d2ed599206 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFields.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFields.java @@ -10,7 +10,7 @@ import javax.xml.stream.XMLStreamException; /** - * Contains fields of the same type that have different XML representation. + * §1.3, §2.3 — Contains fields of the same type that have different XML representation. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class ModelWithRenamedFields implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFieldsValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFieldsValueClient.java index 33e7e3d1b47..f4d5e7de357 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFieldsValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedFieldsValueClient.java @@ -40,7 +40,8 @@ public final class ModelWithRenamedFieldsValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of the same type that have different XML representation along with {@link Response}. + * @return §1.3, §2.3 — Contains fields of the same type that have different XML representation along with + * {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -54,7 +55,7 @@ public Response getWithResponse(RequestContext requestCo * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of the same type that have different XML representation. + * @return §1.3, §2.3 — Contains fields of the same type that have different XML representation. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedNestedModel.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedNestedModel.java new file mode 100644 index 00000000000..5358504684b --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedNestedModel.java @@ -0,0 +1,103 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §2.2 — Contains a property whose type has. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithRenamedNestedModel implements XmlSerializable { + /* + * The author property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final Author author; + + /** + * Creates an instance of ModelWithRenamedNestedModel class. + * + * @param author the author value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedNestedModel(Author author) { + this.author = author; + } + + /** + * Get the author property: The author property. + * + * @return the author value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public Author getAuthor() { + return this.author; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithRenamedNestedModel" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeXml(this.author, "author"); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithRenamedNestedModel from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithRenamedNestedModel if the XmlReader was pointing to an instance of it, or null if + * it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedNestedModel. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedNestedModel fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithRenamedNestedModel from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithRenamedNestedModel if the XmlReader was pointing to an instance of it, or null if + * it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedNestedModel. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedNestedModel fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithRenamedNestedModel" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + Author author = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("author".equals(elementName.getLocalPart())) { + author = Author.fromXml(reader, "author"); + } else { + reader.skipElement(); + } + } + return new ModelWithRenamedNestedModel(author); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedNestedModelValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedNestedModelValueClient.java new file mode 100644 index 00000000000..7919e9ba426 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedNestedModelValueClient.java @@ -0,0 +1,96 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithRenamedNestedModelValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithRenamedNestedModelValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithRenamedNestedModelValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedNestedModelValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithRenamedNestedModelValueClient(ModelWithRenamedNestedModelValuesImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §2.2 — Contains a property whose type has along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedNestedModelValue.get", + requestContext, updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §2.2 — Contains a property whose type has. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithRenamedNestedModel get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedNestedModel input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedNestedModelValue.put", + requestContext, updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithRenamedNestedModel input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedProperty.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedProperty.java new file mode 100644 index 00000000000..de93892e28e --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedProperty.java @@ -0,0 +1,125 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §1.2 — Contains a scalar property with a custom XML name. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithRenamedProperty implements XmlSerializable { + /* + * The renamedTitle property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String title; + + /* + * The author property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final String author; + + /** + * Creates an instance of ModelWithRenamedProperty class. + * + * @param title the title value to set. + * @param author the author value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedProperty(String title, String author) { + this.title = title; + this.author = author; + } + + /** + * Get the title property: The renamedTitle property. + * + * @return the title value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getTitle() { + return this.title; + } + + /** + * Get the author property: The author property. + * + * @return the author value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public String getAuthor() { + return this.author; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithRenamedProperty" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + xmlWriter.writeStringElement("renamedTitle", this.title); + xmlWriter.writeStringElement("author", this.author); + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithRenamedProperty from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithRenamedProperty if the XmlReader was pointing to an instance of it, or null if it + * was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedProperty. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedProperty fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithRenamedProperty from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithRenamedProperty if the XmlReader was pointing to an instance of it, or null if it + * was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedProperty. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedProperty fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithRenamedProperty" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + String title = null; + String author = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("renamedTitle".equals(elementName.getLocalPart())) { + title = reader.getStringElement(); + } else if ("author".equals(elementName.getLocalPart())) { + author = reader.getStringElement(); + } else { + reader.skipElement(); + } + } + return new ModelWithRenamedProperty(title, author); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedPropertyValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedPropertyValueClient.java new file mode 100644 index 00000000000..536ac10f25a --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedPropertyValueClient.java @@ -0,0 +1,96 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithRenamedPropertyValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithRenamedPropertyValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithRenamedPropertyValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedPropertyValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithRenamedPropertyValueClient(ModelWithRenamedPropertyValuesImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §1.2 — Contains a scalar property with a custom XML name along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedPropertyValue.get", + requestContext, updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §1.2 — Contains a scalar property with a custom XML name. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithRenamedProperty get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedProperty input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedPropertyValue.put", + requestContext, updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithRenamedProperty input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArray.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArray.java new file mode 100644 index 00000000000..f563c908deb --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArray.java @@ -0,0 +1,114 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §4.4 — Contains an unwrapped array of models with a custom item name. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithRenamedUnwrappedModelArray implements XmlSerializable { + /* + * The ModelItem property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final List items; + + /** + * Creates an instance of ModelWithRenamedUnwrappedModelArray class. + * + * @param items the items value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedUnwrappedModelArray(List items) { + this.items = items; + } + + /** + * Get the items property: The ModelItem property. + * + * @return the items value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public List getItems() { + return this.items; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithRenamedUnwrappedModelArray" + : rootElementName; + xmlWriter.writeStartElement(rootElementName); + if (this.items != null) { + for (SimpleModel element : this.items) { + xmlWriter.writeXml(element, "ModelItem"); + } + } + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithRenamedUnwrappedModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithRenamedUnwrappedModelArray if the XmlReader was pointing to an instance of it, or + * null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedUnwrappedModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedUnwrappedModelArray fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithRenamedUnwrappedModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithRenamedUnwrappedModelArray if the XmlReader was pointing to an instance of it, or + * null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedUnwrappedModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedUnwrappedModelArray fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithRenamedUnwrappedModelArray" + : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + List items = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("ModelItem".equals(elementName.getLocalPart())) { + if (items == null) { + items = new ArrayList<>(); + } + items.add(SimpleModel.fromXml(reader, "ModelItem")); + } else { + reader.skipElement(); + } + } + return new ModelWithRenamedUnwrappedModelArray(items); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArrayValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArrayValueClient.java new file mode 100644 index 00000000000..9dbb46316fa --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArrayValueClient.java @@ -0,0 +1,96 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithRenamedUnwrappedModelArrayValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithRenamedUnwrappedModelArrayValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithRenamedUnwrappedModelArrayValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedUnwrappedModelArrayValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithRenamedUnwrappedModelArrayValueClient(ModelWithRenamedUnwrappedModelArrayValuesImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.4 — Contains an unwrapped array of models with a custom item name along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.get", + requestContext, updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.4 — Contains an unwrapped array of models with a custom item name. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithRenamedUnwrappedModelArray get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedUnwrappedModelArray input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put", + requestContext, updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithRenamedUnwrappedModelArray input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArray.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArray.java new file mode 100644 index 00000000000..59d3a6ddedb --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArray.java @@ -0,0 +1,124 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §4.5 — Contains a wrapped array of models with custom wrapper and item names. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithRenamedWrappedAndItemModelArray + implements XmlSerializable { + /* + * The AllBooks property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final List books; + + /** + * Creates an instance of ModelWithRenamedWrappedAndItemModelArray class. + * + * @param books the books value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedWrappedAndItemModelArray(List books) { + this.books = books; + } + + /** + * Get the books property: The AllBooks property. + * + * @return the books value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public List getBooks() { + return this.books; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithRenamedWrappedAndItemModelArray" + : rootElementName; + xmlWriter.writeStartElement(rootElementName); + if (this.books != null) { + xmlWriter.writeStartElement("AllBooks"); + for (Book element : this.books) { + xmlWriter.writeXml(element, "XmlBook"); + } + xmlWriter.writeEndElement(); + } + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithRenamedWrappedAndItemModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithRenamedWrappedAndItemModelArray if the XmlReader was pointing to an instance of + * it, or null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedWrappedAndItemModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedWrappedAndItemModelArray fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithRenamedWrappedAndItemModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithRenamedWrappedAndItemModelArray if the XmlReader was pointing to an instance of + * it, or null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedWrappedAndItemModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedWrappedAndItemModelArray fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithRenamedWrappedAndItemModelArray" + : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + List books = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("AllBooks".equals(elementName.getLocalPart())) { + while (reader.nextElement() != XmlToken.END_ELEMENT) { + elementName = reader.getElementName(); + if ("XmlBook".equals(elementName.getLocalPart())) { + if (books == null) { + books = new ArrayList<>(); + } + books.add(Book.fromXml(reader, "XmlBook")); + } else { + reader.skipElement(); + } + } + } else { + reader.skipElement(); + } + } + return new ModelWithRenamedWrappedAndItemModelArray(books); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArrayValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArrayValueClient.java new file mode 100644 index 00000000000..36ff0eafdbc --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArrayValueClient.java @@ -0,0 +1,99 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithRenamedWrappedAndItemModelArrayValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithRenamedWrappedAndItemModelArrayValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithRenamedWrappedAndItemModelArrayValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedWrappedAndItemModelArrayValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithRenamedWrappedAndItemModelArrayValueClient( + ModelWithRenamedWrappedAndItemModelArrayValuesImpl serviceClient, Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.5 — Contains a wrapped array of models with custom wrapper and item names along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.get", requestContext, + updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.5 — Contains a wrapped array of models with custom wrapper and item names. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithRenamedWrappedAndItemModelArray get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedWrappedAndItemModelArray input, + RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put", requestContext, + updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithRenamedWrappedAndItemModelArray input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedModelArray.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedModelArray.java new file mode 100644 index 00000000000..2ce1cab47f3 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedModelArray.java @@ -0,0 +1,123 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §4.3 — Contains a wrapped array of models with a custom wrapper name. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithRenamedWrappedModelArray implements XmlSerializable { + /* + * The AllItems property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final List items; + + /** + * Creates an instance of ModelWithRenamedWrappedModelArray class. + * + * @param items the items value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedWrappedModelArray(List items) { + this.items = items; + } + + /** + * Get the items property: The AllItems property. + * + * @return the items value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public List getItems() { + return this.items; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithRenamedWrappedModelArray" + : rootElementName; + xmlWriter.writeStartElement(rootElementName); + if (this.items != null) { + xmlWriter.writeStartElement("AllItems"); + for (SimpleModel element : this.items) { + xmlWriter.writeXml(element, "SimpleModel"); + } + xmlWriter.writeEndElement(); + } + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithRenamedWrappedModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithRenamedWrappedModelArray if the XmlReader was pointing to an instance of it, or + * null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedWrappedModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedWrappedModelArray fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithRenamedWrappedModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithRenamedWrappedModelArray if the XmlReader was pointing to an instance of it, or + * null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithRenamedWrappedModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithRenamedWrappedModelArray fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithRenamedWrappedModelArray" + : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + List items = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("AllItems".equals(elementName.getLocalPart())) { + while (reader.nextElement() != XmlToken.END_ELEMENT) { + elementName = reader.getElementName(); + if ("SimpleModel".equals(elementName.getLocalPart())) { + if (items == null) { + items = new ArrayList<>(); + } + items.add(SimpleModel.fromXml(reader, "SimpleModel")); + } else { + reader.skipElement(); + } + } + } else { + reader.skipElement(); + } + } + return new ModelWithRenamedWrappedModelArray(items); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedModelArrayValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedModelArrayValueClient.java new file mode 100644 index 00000000000..1c3c92dfd57 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithRenamedWrappedModelArrayValueClient.java @@ -0,0 +1,96 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithRenamedWrappedModelArrayValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithRenamedWrappedModelArrayValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithRenamedWrappedModelArrayValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedWrappedModelArrayValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithRenamedWrappedModelArrayValueClient(ModelWithRenamedWrappedModelArrayValuesImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.3 — Contains a wrapped array of models with a custom wrapper name along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedWrappedModelArrayValue.get", + requestContext, updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.3 — Contains a wrapped array of models with a custom wrapper name. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithRenamedWrappedModelArray get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedWrappedModelArray input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put", + requestContext, updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithRenamedWrappedModelArray input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArrays.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArrays.java index a3d2b3669d8..cbec66fd52b 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArrays.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArrays.java @@ -12,7 +12,7 @@ import javax.xml.stream.XMLStreamException; /** - * Contains fields of arrays of primitive types. + * §3.1 — Contains fields of arrays of primitive types. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class ModelWithSimpleArrays implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArraysValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArraysValueClient.java index b25f0743b9d..8dcae65d81f 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArraysValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithSimpleArraysValueClient.java @@ -40,7 +40,7 @@ public final class ModelWithSimpleArraysValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of arrays of primitive types along with {@link Response}. + * @return §3.1 — Contains fields of arrays of primitive types along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -54,7 +54,7 @@ public Response getWithResponse(RequestContext requestCon * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of arrays of primitive types. + * @return §3.1 — Contains fields of arrays of primitive types. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithText.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithText.java index eb280d52f35..3b31c344b70 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithText.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithText.java @@ -8,7 +8,7 @@ import javax.xml.stream.XMLStreamException; /** - * Contains an attribute and text. + * §8.1 — Contains an attribute and text. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class ModelWithText implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithTextValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithTextValueClient.java index 717763ff547..5b3219ec202 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithTextValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithTextValueClient.java @@ -40,7 +40,7 @@ public final class ModelWithTextValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains an attribute and text along with {@link Response}. + * @return §8.1 — Contains an attribute and text along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -54,7 +54,7 @@ public Response getWithResponse(RequestContext requestContext) { * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains an attribute and text. + * @return §8.1 — Contains an attribute and text. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArray.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArray.java index d06eceeb6ed..ad440a001b1 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArray.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArray.java @@ -12,7 +12,7 @@ import javax.xml.stream.XMLStreamException; /** - * Contains fields of wrapped and unwrapped arrays of primitive types. + * §3.2 — Contains fields of wrapped and unwrapped arrays of primitive types. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class ModelWithUnwrappedArray implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArrayValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArrayValueClient.java index 8c8a81ca835..1c6d3825c88 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArrayValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedArrayValueClient.java @@ -41,7 +41,7 @@ public final class ModelWithUnwrappedArrayValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of wrapped and unwrapped arrays of primitive types along with {@link Response}. + * @return §3.2 — Contains fields of wrapped and unwrapped arrays of primitive types along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -55,7 +55,7 @@ public Response getWithResponse(RequestContext requestC * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of wrapped and unwrapped arrays of primitive types. + * @return §3.2 — Contains fields of wrapped and unwrapped arrays of primitive types. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedModelArray.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedModelArray.java new file mode 100644 index 00000000000..4481d088563 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedModelArray.java @@ -0,0 +1,112 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §4.2 — Contains an unwrapped array of models. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithUnwrappedModelArray implements XmlSerializable { + /* + * The items property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final List items; + + /** + * Creates an instance of ModelWithUnwrappedModelArray class. + * + * @param items the items value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithUnwrappedModelArray(List items) { + this.items = items; + } + + /** + * Get the items property: The items property. + * + * @return the items value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public List getItems() { + return this.items; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithUnwrappedModelArray" : rootElementName; + xmlWriter.writeStartElement(rootElementName); + if (this.items != null) { + for (SimpleModel element : this.items) { + xmlWriter.writeXml(element, "items"); + } + } + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithUnwrappedModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithUnwrappedModelArray if the XmlReader was pointing to an instance of it, or null + * if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithUnwrappedModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithUnwrappedModelArray fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithUnwrappedModelArray from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithUnwrappedModelArray if the XmlReader was pointing to an instance of it, or null + * if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithUnwrappedModelArray. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithUnwrappedModelArray fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName + = rootElementName == null || rootElementName.isEmpty() ? "ModelWithUnwrappedModelArray" : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + List items = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("items".equals(elementName.getLocalPart())) { + if (items == null) { + items = new ArrayList<>(); + } + items.add(SimpleModel.fromXml(reader, "items")); + } else { + reader.skipElement(); + } + } + return new ModelWithUnwrappedModelArray(items); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedModelArrayValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedModelArrayValueClient.java new file mode 100644 index 00000000000..01a719743dd --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithUnwrappedModelArrayValueClient.java @@ -0,0 +1,96 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithUnwrappedModelArrayValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithUnwrappedModelArrayValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithUnwrappedModelArrayValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithUnwrappedModelArrayValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithUnwrappedModelArrayValueClient(ModelWithUnwrappedModelArrayValuesImpl serviceClient, + Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.2 — Contains an unwrapped array of models along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithUnwrappedModelArrayValue.get", + requestContext, updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.2 — Contains an unwrapped array of models. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithUnwrappedModelArray get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithUnwrappedModelArray input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithUnwrappedModelArrayValue.put", + requestContext, updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithUnwrappedModelArray input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNames.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNames.java new file mode 100644 index 00000000000..f4ca638a6ee --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNames.java @@ -0,0 +1,124 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.xml.XmlReader; +import io.clientcore.core.serialization.xml.XmlSerializable; +import io.clientcore.core.serialization.xml.XmlToken; +import io.clientcore.core.serialization.xml.XmlWriter; +import java.util.ArrayList; +import java.util.List; +import javax.xml.namespace.QName; +import javax.xml.stream.XMLStreamException; + +/** + * §3.5 — Contains a wrapped primitive array with custom wrapper and item names. + */ +@Metadata(properties = { MetadataProperties.IMMUTABLE }) +public final class ModelWithWrappedPrimitiveCustomItemNames + implements XmlSerializable { + /* + * The ItemsTags property. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + private final List tags; + + /** + * Creates an instance of ModelWithWrappedPrimitiveCustomItemNames class. + * + * @param tags the tags value to set. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithWrappedPrimitiveCustomItemNames(List tags) { + this.tags = tags; + } + + /** + * Get the tags property: The ItemsTags property. + * + * @return the tags value. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public List getTags() { + return this.tags; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter) throws XMLStreamException { + return toXml(xmlWriter, null); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public XmlWriter toXml(XmlWriter xmlWriter, String rootElementName) throws XMLStreamException { + rootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithWrappedPrimitiveCustomItemNames" + : rootElementName; + xmlWriter.writeStartElement(rootElementName); + if (this.tags != null) { + xmlWriter.writeStartElement("ItemsTags"); + for (String element : this.tags) { + xmlWriter.writeStringElement("ItemName", element); + } + xmlWriter.writeEndElement(); + } + return xmlWriter.writeEndElement(); + } + + /** + * Reads an instance of ModelWithWrappedPrimitiveCustomItemNames from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @return An instance of ModelWithWrappedPrimitiveCustomItemNames if the XmlReader was pointing to an instance of + * it, or null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithWrappedPrimitiveCustomItemNames. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithWrappedPrimitiveCustomItemNames fromXml(XmlReader xmlReader) throws XMLStreamException { + return fromXml(xmlReader, null); + } + + /** + * Reads an instance of ModelWithWrappedPrimitiveCustomItemNames from the XmlReader. + * + * @param xmlReader The XmlReader being read. + * @param rootElementName Optional root element name to override the default defined by the model. Used to support + * cases where the model can deserialize from different root element names. + * @return An instance of ModelWithWrappedPrimitiveCustomItemNames if the XmlReader was pointing to an instance of + * it, or null if it was pointing to XML null. + * @throws IllegalStateException If the deserialized XML object was missing any required properties. + * @throws XMLStreamException If an error occurs while reading the ModelWithWrappedPrimitiveCustomItemNames. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ModelWithWrappedPrimitiveCustomItemNames fromXml(XmlReader xmlReader, String rootElementName) + throws XMLStreamException { + String finalRootElementName = rootElementName == null || rootElementName.isEmpty() + ? "ModelWithWrappedPrimitiveCustomItemNames" + : rootElementName; + return xmlReader.readObject(finalRootElementName, reader -> { + List tags = null; + while (reader.nextElement() != XmlToken.END_ELEMENT) { + QName elementName = reader.getElementName(); + + if ("ItemsTags".equals(elementName.getLocalPart())) { + while (reader.nextElement() != XmlToken.END_ELEMENT) { + elementName = reader.getElementName(); + if ("ItemName".equals(elementName.getLocalPart())) { + if (tags == null) { + tags = new ArrayList<>(); + } + tags.add(reader.getStringElement()); + } else { + reader.skipElement(); + } + } + } else { + reader.skipElement(); + } + } + return new ModelWithWrappedPrimitiveCustomItemNames(tags); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNamesValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNamesValueClient.java new file mode 100644 index 00000000000..f0317b4b75f --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNamesValueClient.java @@ -0,0 +1,99 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import payload.xml.implementation.ModelWithWrappedPrimitiveCustomItemNamesValuesImpl; + +/** + * Initializes a new instance of the synchronous XmlClient type. + */ +@ServiceClient(builder = XmlClientBuilder.class) +public final class ModelWithWrappedPrimitiveCustomItemNamesValueClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ModelWithWrappedPrimitiveCustomItemNamesValuesImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithWrappedPrimitiveCustomItemNamesValueClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ModelWithWrappedPrimitiveCustomItemNamesValueClient( + ModelWithWrappedPrimitiveCustomItemNamesValuesImpl serviceClient, Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §3.5 — Contains a wrapped primitive array with custom wrapper and item names along with {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.get", requestContext, + updatedContext -> this.serviceClient.getWithResponse(updatedContext)); + } + + /** + * The get operation. + * + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §3.5 — Contains a wrapped primitive array with custom wrapper and item names. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithWrappedPrimitiveCustomItemNames get() { + return getWithResponse(RequestContext.none()).getValue(); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithWrappedPrimitiveCustomItemNames input, + RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put", requestContext, + updatedContext -> this.serviceClient.putWithResponse(input, updatedContext)); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public void put(ModelWithWrappedPrimitiveCustomItemNames input) { + putWithResponse(input, RequestContext.none()); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModel.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModel.java index 81402ee227d..743885da2f6 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModel.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModel.java @@ -10,7 +10,7 @@ import javax.xml.stream.XMLStreamException; /** - * Contains fields of primitive types. + * §1.1 — Contains fields of primitive types. */ @Metadata(properties = { MetadataProperties.IMMUTABLE }) public final class SimpleModel implements XmlSerializable { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModelValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModelValueClient.java index 58548f34b11..14194ac8a3d 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModelValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/SimpleModelValueClient.java @@ -40,7 +40,7 @@ public final class SimpleModelValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of primitive types along with {@link Response}. + * @return §1.1 — Contains fields of primitive types along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -54,7 +54,7 @@ public Response getWithResponse(RequestContext requestContext) { * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of primitive types. + * @return §1.1 — Contains fields of primitive types. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Status.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Status.java new file mode 100644 index 00000000000..9344aeeeb6a --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/Status.java @@ -0,0 +1,134 @@ +package payload.xml; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.json.JsonReader; +import io.clientcore.core.serialization.json.JsonSerializable; +import io.clientcore.core.serialization.json.JsonToken; +import io.clientcore.core.serialization.json.JsonWriter; +import io.clientcore.core.utils.ExpandableEnum; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; + +/** + * Status values for the model with enum. + */ +public final class Status implements ExpandableEnum, JsonSerializable { + private static final Map VALUES = new ConcurrentHashMap<>(); + + private static final Function NEW_INSTANCE = Status::new; + + /** + * Pending status. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final Status PENDING = fromValue("pending"); + + /** + * Success status. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final Status SUCCESS = fromValue("success"); + + /** + * Error status. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final Status ERROR = fromValue("error"); + + private final String value; + + private Status(String value) { + this.value = value; + } + + /** + * Creates or finds a Status. + * + * @param value a value to look for. + * @return the corresponding Status. + * @throws IllegalArgumentException if value is null. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Status fromValue(String value) { + if (value == null) { + throw new IllegalArgumentException("'value' cannot be null."); + } + return VALUES.computeIfAbsent(value, NEW_INSTANCE); + } + + /** + * Gets known Status values. + * + * @return Known Status values. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Collection values() { + return new ArrayList<>(VALUES.values()); + } + + /** + * Gets the value of the Status instance. + * + * @return the value of the Status instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public String getValue() { + return this.value; + } + + /** + * {@inheritDoc} + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + return jsonWriter.writeString(getValue()); + } + + /** + * Reads an instance of Status from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of Status if the JsonReader was pointing to an instance of it, or null if the JsonReader was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the Status. + * @throws IllegalStateException If unexpected JSON token is found. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Status fromJson(JsonReader jsonReader) throws IOException { + JsonToken nextToken = jsonReader.nextToken(); + if (nextToken == JsonToken.NULL) { + return null; + } + if (nextToken != JsonToken.STRING) { + throw new IllegalStateException( + String.format("Unexpected JSON token for %s deserialization: %s", JsonToken.STRING, nextToken)); + } + return Status.fromValue(jsonReader.getString()); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public String toString() { + return Objects.toString(this.value); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public boolean equals(Object obj) { + return this == obj; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public int hashCode() { + return Objects.hashCode(this.value); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlClientBuilder.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlClientBuilder.java index 3654d8edd1b..859fd9979dc 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlClientBuilder.java @@ -34,17 +34,30 @@ @ServiceClientBuilder( serviceClients = { SimpleModelValueClient.class, + ModelWithRenamedPropertyValueClient.class, + ModelWithRenamedFieldsValueClient.class, + ModelWithNestedModelValueClient.class, + ModelWithRenamedNestedModelValueClient.class, ModelWithSimpleArraysValueClient.class, - ModelWithArrayOfModelValueClient.class, - ModelWithOptionalFieldValueClient.class, - ModelWithAttributesValueClient.class, ModelWithUnwrappedArrayValueClient.class, ModelWithRenamedArraysValueClient.class, - ModelWithRenamedFieldsValueClient.class, - ModelWithEmptyArrayValueClient.class, + ModelWithWrappedPrimitiveCustomItemNamesValueClient.class, + ModelWithArrayOfModelValueClient.class, + ModelWithUnwrappedModelArrayValueClient.class, + ModelWithRenamedWrappedModelArrayValueClient.class, + ModelWithRenamedUnwrappedModelArrayValueClient.class, + ModelWithRenamedWrappedAndItemModelArrayValueClient.class, + ModelWithAttributesValueClient.class, + ModelWithRenamedAttributeValueClient.class, + ModelWithNamespaceValueClient.class, + ModelWithNamespaceOnPropertiesValueClient.class, ModelWithTextValueClient.class, + ModelWithOptionalFieldValueClient.class, + ModelWithEmptyArrayValueClient.class, ModelWithDictionaryValueClient.class, ModelWithEncodedNamesValueClient.class, + ModelWithEnumValueClient.class, + ModelWithDatetimeValueClient.class, XmlErrorValueClient.class }) public final class XmlClientBuilder implements HttpTrait, ProxyTrait, ConfigurationTrait, EndpointTrait { @@ -248,50 +261,62 @@ public SimpleModelValueClient buildSimpleModelValueClient() { } /** - * Builds an instance of ModelWithSimpleArraysValueClient class. + * Builds an instance of ModelWithRenamedPropertyValueClient class. * - * @return an instance of ModelWithSimpleArraysValueClient. + * @return an instance of ModelWithRenamedPropertyValueClient. */ @Metadata(properties = { MetadataProperties.GENERATED }) - public ModelWithSimpleArraysValueClient buildModelWithSimpleArraysValueClient() { + public ModelWithRenamedPropertyValueClient buildModelWithRenamedPropertyValueClient() { XmlClientImpl innerClient = buildInnerClient(); - return new ModelWithSimpleArraysValueClient(innerClient.getModelWithSimpleArraysValues(), + return new ModelWithRenamedPropertyValueClient(innerClient.getModelWithRenamedPropertyValues(), innerClient.getInstrumentation()); } /** - * Builds an instance of ModelWithArrayOfModelValueClient class. + * Builds an instance of ModelWithRenamedFieldsValueClient class. * - * @return an instance of ModelWithArrayOfModelValueClient. + * @return an instance of ModelWithRenamedFieldsValueClient. */ @Metadata(properties = { MetadataProperties.GENERATED }) - public ModelWithArrayOfModelValueClient buildModelWithArrayOfModelValueClient() { + public ModelWithRenamedFieldsValueClient buildModelWithRenamedFieldsValueClient() { XmlClientImpl innerClient = buildInnerClient(); - return new ModelWithArrayOfModelValueClient(innerClient.getModelWithArrayOfModelValues(), + return new ModelWithRenamedFieldsValueClient(innerClient.getModelWithRenamedFieldsValues(), innerClient.getInstrumentation()); } /** - * Builds an instance of ModelWithOptionalFieldValueClient class. + * Builds an instance of ModelWithNestedModelValueClient class. * - * @return an instance of ModelWithOptionalFieldValueClient. + * @return an instance of ModelWithNestedModelValueClient. */ @Metadata(properties = { MetadataProperties.GENERATED }) - public ModelWithOptionalFieldValueClient buildModelWithOptionalFieldValueClient() { + public ModelWithNestedModelValueClient buildModelWithNestedModelValueClient() { XmlClientImpl innerClient = buildInnerClient(); - return new ModelWithOptionalFieldValueClient(innerClient.getModelWithOptionalFieldValues(), + return new ModelWithNestedModelValueClient(innerClient.getModelWithNestedModelValues(), innerClient.getInstrumentation()); } /** - * Builds an instance of ModelWithAttributesValueClient class. + * Builds an instance of ModelWithRenamedNestedModelValueClient class. * - * @return an instance of ModelWithAttributesValueClient. + * @return an instance of ModelWithRenamedNestedModelValueClient. */ @Metadata(properties = { MetadataProperties.GENERATED }) - public ModelWithAttributesValueClient buildModelWithAttributesValueClient() { + public ModelWithRenamedNestedModelValueClient buildModelWithRenamedNestedModelValueClient() { XmlClientImpl innerClient = buildInnerClient(); - return new ModelWithAttributesValueClient(innerClient.getModelWithAttributesValues(), + return new ModelWithRenamedNestedModelValueClient(innerClient.getModelWithRenamedNestedModelValues(), + innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithSimpleArraysValueClient class. + * + * @return an instance of ModelWithSimpleArraysValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithSimpleArraysValueClient buildModelWithSimpleArraysValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithSimpleArraysValueClient(innerClient.getModelWithSimpleArraysValues(), innerClient.getInstrumentation()); } @@ -320,26 +345,124 @@ public ModelWithRenamedArraysValueClient buildModelWithRenamedArraysValueClient( } /** - * Builds an instance of ModelWithRenamedFieldsValueClient class. + * Builds an instance of ModelWithWrappedPrimitiveCustomItemNamesValueClient class. * - * @return an instance of ModelWithRenamedFieldsValueClient. + * @return an instance of ModelWithWrappedPrimitiveCustomItemNamesValueClient. */ @Metadata(properties = { MetadataProperties.GENERATED }) - public ModelWithRenamedFieldsValueClient buildModelWithRenamedFieldsValueClient() { + public ModelWithWrappedPrimitiveCustomItemNamesValueClient + buildModelWithWrappedPrimitiveCustomItemNamesValueClient() { XmlClientImpl innerClient = buildInnerClient(); - return new ModelWithRenamedFieldsValueClient(innerClient.getModelWithRenamedFieldsValues(), + return new ModelWithWrappedPrimitiveCustomItemNamesValueClient( + innerClient.getModelWithWrappedPrimitiveCustomItemNamesValues(), innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithArrayOfModelValueClient class. + * + * @return an instance of ModelWithArrayOfModelValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithArrayOfModelValueClient buildModelWithArrayOfModelValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithArrayOfModelValueClient(innerClient.getModelWithArrayOfModelValues(), innerClient.getInstrumentation()); } /** - * Builds an instance of ModelWithEmptyArrayValueClient class. + * Builds an instance of ModelWithUnwrappedModelArrayValueClient class. * - * @return an instance of ModelWithEmptyArrayValueClient. + * @return an instance of ModelWithUnwrappedModelArrayValueClient. */ @Metadata(properties = { MetadataProperties.GENERATED }) - public ModelWithEmptyArrayValueClient buildModelWithEmptyArrayValueClient() { + public ModelWithUnwrappedModelArrayValueClient buildModelWithUnwrappedModelArrayValueClient() { XmlClientImpl innerClient = buildInnerClient(); - return new ModelWithEmptyArrayValueClient(innerClient.getModelWithEmptyArrayValues(), + return new ModelWithUnwrappedModelArrayValueClient(innerClient.getModelWithUnwrappedModelArrayValues(), + innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithRenamedWrappedModelArrayValueClient class. + * + * @return an instance of ModelWithRenamedWrappedModelArrayValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedWrappedModelArrayValueClient buildModelWithRenamedWrappedModelArrayValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithRenamedWrappedModelArrayValueClient( + innerClient.getModelWithRenamedWrappedModelArrayValues(), innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithRenamedUnwrappedModelArrayValueClient class. + * + * @return an instance of ModelWithRenamedUnwrappedModelArrayValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedUnwrappedModelArrayValueClient buildModelWithRenamedUnwrappedModelArrayValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithRenamedUnwrappedModelArrayValueClient( + innerClient.getModelWithRenamedUnwrappedModelArrayValues(), innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithRenamedWrappedAndItemModelArrayValueClient class. + * + * @return an instance of ModelWithRenamedWrappedAndItemModelArrayValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedWrappedAndItemModelArrayValueClient + buildModelWithRenamedWrappedAndItemModelArrayValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithRenamedWrappedAndItemModelArrayValueClient( + innerClient.getModelWithRenamedWrappedAndItemModelArrayValues(), innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithAttributesValueClient class. + * + * @return an instance of ModelWithAttributesValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithAttributesValueClient buildModelWithAttributesValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithAttributesValueClient(innerClient.getModelWithAttributesValues(), + innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithRenamedAttributeValueClient class. + * + * @return an instance of ModelWithRenamedAttributeValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithRenamedAttributeValueClient buildModelWithRenamedAttributeValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithRenamedAttributeValueClient(innerClient.getModelWithRenamedAttributeValues(), + innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithNamespaceValueClient class. + * + * @return an instance of ModelWithNamespaceValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithNamespaceValueClient buildModelWithNamespaceValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithNamespaceValueClient(innerClient.getModelWithNamespaceValues(), + innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithNamespaceOnPropertiesValueClient class. + * + * @return an instance of ModelWithNamespaceOnPropertiesValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithNamespaceOnPropertiesValueClient buildModelWithNamespaceOnPropertiesValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithNamespaceOnPropertiesValueClient(innerClient.getModelWithNamespaceOnPropertiesValues(), innerClient.getInstrumentation()); } @@ -354,6 +477,30 @@ public ModelWithTextValueClient buildModelWithTextValueClient() { return new ModelWithTextValueClient(innerClient.getModelWithTextValues(), innerClient.getInstrumentation()); } + /** + * Builds an instance of ModelWithOptionalFieldValueClient class. + * + * @return an instance of ModelWithOptionalFieldValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithOptionalFieldValueClient buildModelWithOptionalFieldValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithOptionalFieldValueClient(innerClient.getModelWithOptionalFieldValues(), + innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithEmptyArrayValueClient class. + * + * @return an instance of ModelWithEmptyArrayValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithEmptyArrayValueClient buildModelWithEmptyArrayValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithEmptyArrayValueClient(innerClient.getModelWithEmptyArrayValues(), + innerClient.getInstrumentation()); + } + /** * Builds an instance of ModelWithDictionaryValueClient class. * @@ -378,6 +525,29 @@ public ModelWithEncodedNamesValueClient buildModelWithEncodedNamesValueClient() innerClient.getInstrumentation()); } + /** + * Builds an instance of ModelWithEnumValueClient class. + * + * @return an instance of ModelWithEnumValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithEnumValueClient buildModelWithEnumValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithEnumValueClient(innerClient.getModelWithEnumValues(), innerClient.getInstrumentation()); + } + + /** + * Builds an instance of ModelWithDatetimeValueClient class. + * + * @return an instance of ModelWithDatetimeValueClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ModelWithDatetimeValueClient buildModelWithDatetimeValueClient() { + XmlClientImpl innerClient = buildInnerClient(); + return new ModelWithDatetimeValueClient(innerClient.getModelWithDatetimeValues(), + innerClient.getInstrumentation()); + } + /** * Builds an instance of XmlErrorValueClient class. * diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlErrorValueClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlErrorValueClient.java index 50b3bbf7e9c..8c26f598105 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlErrorValueClient.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/XmlErrorValueClient.java @@ -40,7 +40,7 @@ public final class XmlErrorValueClient { * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of primitive types along with {@link Response}. + * @return §1.1 — Contains fields of primitive types along with {@link Response}. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) @@ -54,7 +54,7 @@ public Response getWithResponse(RequestContext requestContext) { * * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of primitive types. + * @return §1.1 — Contains fields of primitive types. */ @Metadata(properties = { MetadataProperties.GENERATED }) @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithArrayOfModelValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithArrayOfModelValuesImpl.java index 87ef41426e2..933e90f228b 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithArrayOfModelValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithArrayOfModelValuesImpl.java @@ -89,7 +89,7 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains an array of models along with {@link Response}. + * @return §4.1 — Contains an array of models along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithAttributesValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithAttributesValuesImpl.java index 2fef01461fc..5a76bf14cfd 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithAttributesValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithAttributesValuesImpl.java @@ -89,7 +89,7 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields that are XML attributes along with {@link Response}. + * @return §5.1 — Contains fields that are XML attributes along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithDatetimeValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithDatetimeValuesImpl.java new file mode 100644 index 00000000000..cfc0382ef6b --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithDatetimeValuesImpl.java @@ -0,0 +1,121 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithDatetime; + +/** + * An instance of this class provides access to all the operations defined in ModelWithDatetimeValues. + */ +public final class ModelWithDatetimeValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithDatetimeValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithDatetimeValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithDatetimeValuesImpl(XmlClientImpl client) { + this.service = ModelWithDatetimeValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithDatetimeValues to be used by the proxy service to + * perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithDatetimeValues", host = "{endpoint}") + public interface ModelWithDatetimeValuesService { + static ModelWithDatetimeValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class.forName("payload.xml.implementation.ModelWithDatetimeValuesServiceImpl"); + return (ModelWithDatetimeValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithDatetime", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithDatetime", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithDatetime input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return contains datetime properties with different encodings along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithDatetimeValue.get", requestContext, + updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithDatetime input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithDatetimeValue.put", requestContext, + updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithEnumValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithEnumValuesImpl.java new file mode 100644 index 00000000000..5455261977f --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithEnumValuesImpl.java @@ -0,0 +1,121 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithEnum; + +/** + * An instance of this class provides access to all the operations defined in ModelWithEnumValues. + */ +public final class ModelWithEnumValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithEnumValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithEnumValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithEnumValuesImpl(XmlClientImpl client) { + this.service = ModelWithEnumValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithEnumValues to be used by the proxy service to + * perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithEnumValues", host = "{endpoint}") + public interface ModelWithEnumValuesService { + static ModelWithEnumValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class.forName("payload.xml.implementation.ModelWithEnumValuesServiceImpl"); + return (ModelWithEnumValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithEnum", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithEnum", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithEnum input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return contains a single property with an enum value along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithEnumValue.get", requestContext, + updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithEnum input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithEnumValue.put", requestContext, + updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNamespaceOnPropertiesValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNamespaceOnPropertiesValuesImpl.java new file mode 100644 index 00000000000..6954b9b693c --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNamespaceOnPropertiesValuesImpl.java @@ -0,0 +1,124 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithNamespaceOnProperties; + +/** + * An instance of this class provides access to all the operations defined in ModelWithNamespaceOnPropertiesValues. + */ +public final class ModelWithNamespaceOnPropertiesValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithNamespaceOnPropertiesValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithNamespaceOnPropertiesValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithNamespaceOnPropertiesValuesImpl(XmlClientImpl client) { + this.service = ModelWithNamespaceOnPropertiesValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithNamespaceOnPropertiesValues to be used by the proxy + * service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithNamespaceOnPropertiesValues", host = "{endpoint}") + public interface ModelWithNamespaceOnPropertiesValuesService { + static ModelWithNamespaceOnPropertiesValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz + = Class.forName("payload.xml.implementation.ModelWithNamespaceOnPropertiesValuesServiceImpl"); + return (ModelWithNamespaceOnPropertiesValuesService) clazz + .getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithNamespaceOnProperties", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithNamespaceOnProperties", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithNamespaceOnProperties input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §6.2, §7.2 — Contains fields with different XML namespaces on individual properties along with + * {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceOnPropertiesValue.get", + requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithNamespaceOnProperties input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceOnPropertiesValue.put", + requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNamespaceValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNamespaceValuesImpl.java new file mode 100644 index 00000000000..d92e3a74134 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNamespaceValuesImpl.java @@ -0,0 +1,121 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithNamespace; + +/** + * An instance of this class provides access to all the operations defined in ModelWithNamespaceValues. + */ +public final class ModelWithNamespaceValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithNamespaceValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithNamespaceValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithNamespaceValuesImpl(XmlClientImpl client) { + this.service = ModelWithNamespaceValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithNamespaceValues to be used by the proxy service to + * perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithNamespaceValues", host = "{endpoint}") + public interface ModelWithNamespaceValuesService { + static ModelWithNamespaceValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class.forName("payload.xml.implementation.ModelWithNamespaceValuesServiceImpl"); + return (ModelWithNamespaceValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithNamespace", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithNamespace", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithNamespace input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §6.1, §7.1 — Contains fields with XML namespace on the model along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceValue.get", requestContext, + updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithNamespace input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNamespaceValue.put", requestContext, + updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNestedModelValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNestedModelValuesImpl.java new file mode 100644 index 00000000000..d8b0049ab67 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithNestedModelValuesImpl.java @@ -0,0 +1,121 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithNestedModel; + +/** + * An instance of this class provides access to all the operations defined in ModelWithNestedModelValues. + */ +public final class ModelWithNestedModelValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithNestedModelValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithNestedModelValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithNestedModelValuesImpl(XmlClientImpl client) { + this.service = ModelWithNestedModelValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithNestedModelValues to be used by the proxy service + * to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithNestedModelValues", host = "{endpoint}") + public interface ModelWithNestedModelValuesService { + static ModelWithNestedModelValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class.forName("payload.xml.implementation.ModelWithNestedModelValuesServiceImpl"); + return (ModelWithNestedModelValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithNestedModel", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithNestedModel", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithNestedModel input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §2.1 — Contains a property that references another model along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNestedModelValue.get", requestContext, + updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithNestedModel input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithNestedModelValue.put", requestContext, + updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedArraysValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedArraysValuesImpl.java index bbf57985249..1a3d6ebd070 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedArraysValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedArraysValuesImpl.java @@ -89,7 +89,7 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of wrapped and unwrapped arrays of primitive types that have different XML + * @return §3.3, §3.4 — Contains fields of wrapped and unwrapped arrays of primitive types that have different XML * representations along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedAttributeValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedAttributeValuesImpl.java new file mode 100644 index 00000000000..409a8cc4521 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedAttributeValuesImpl.java @@ -0,0 +1,121 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithRenamedAttribute; + +/** + * An instance of this class provides access to all the operations defined in ModelWithRenamedAttributeValues. + */ +public final class ModelWithRenamedAttributeValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithRenamedAttributeValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedAttributeValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithRenamedAttributeValuesImpl(XmlClientImpl client) { + this.service = ModelWithRenamedAttributeValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithRenamedAttributeValues to be used by the proxy + * service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithRenamedAttributeValues", host = "{endpoint}") + public interface ModelWithRenamedAttributeValuesService { + static ModelWithRenamedAttributeValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class.forName("payload.xml.implementation.ModelWithRenamedAttributeValuesServiceImpl"); + return (ModelWithRenamedAttributeValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithRenamedAttribute", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithRenamedAttribute", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithRenamedAttribute input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §5.2 — Contains a renamed XML attribute along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedAttributeValue.get", + requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedAttribute input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedAttributeValue.put", + requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedFieldsValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedFieldsValuesImpl.java index 26c6ad661f7..92d4c20b7da 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedFieldsValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedFieldsValuesImpl.java @@ -89,7 +89,8 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of the same type that have different XML representation along with {@link Response}. + * @return §1.3, §2.3 — Contains fields of the same type that have different XML representation along with + * {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedNestedModelValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedNestedModelValuesImpl.java new file mode 100644 index 00000000000..d0972aeaf97 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedNestedModelValuesImpl.java @@ -0,0 +1,122 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithRenamedNestedModel; + +/** + * An instance of this class provides access to all the operations defined in ModelWithRenamedNestedModelValues. + */ +public final class ModelWithRenamedNestedModelValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithRenamedNestedModelValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedNestedModelValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithRenamedNestedModelValuesImpl(XmlClientImpl client) { + this.service = ModelWithRenamedNestedModelValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithRenamedNestedModelValues to be used by the proxy + * service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithRenamedNestedModelValues", host = "{endpoint}") + public interface ModelWithRenamedNestedModelValuesService { + static ModelWithRenamedNestedModelValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz + = Class.forName("payload.xml.implementation.ModelWithRenamedNestedModelValuesServiceImpl"); + return (ModelWithRenamedNestedModelValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithRenamedNestedModel", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithRenamedNestedModel", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithRenamedNestedModel input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §2.2 — Contains a property whose type has along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedNestedModelValue.get", + requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedNestedModel input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedNestedModelValue.put", + requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedPropertyValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedPropertyValuesImpl.java new file mode 100644 index 00000000000..ecb76372770 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedPropertyValuesImpl.java @@ -0,0 +1,121 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithRenamedProperty; + +/** + * An instance of this class provides access to all the operations defined in ModelWithRenamedPropertyValues. + */ +public final class ModelWithRenamedPropertyValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithRenamedPropertyValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedPropertyValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithRenamedPropertyValuesImpl(XmlClientImpl client) { + this.service = ModelWithRenamedPropertyValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithRenamedPropertyValues to be used by the proxy + * service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithRenamedPropertyValues", host = "{endpoint}") + public interface ModelWithRenamedPropertyValuesService { + static ModelWithRenamedPropertyValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class.forName("payload.xml.implementation.ModelWithRenamedPropertyValuesServiceImpl"); + return (ModelWithRenamedPropertyValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithRenamedProperty", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithRenamedProperty", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithRenamedProperty input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §1.2 — Contains a scalar property with a custom XML name along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedPropertyValue.get", + requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedProperty input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedPropertyValue.put", + requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedUnwrappedModelArrayValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedUnwrappedModelArrayValuesImpl.java new file mode 100644 index 00000000000..70b0c0a2dbd --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedUnwrappedModelArrayValuesImpl.java @@ -0,0 +1,123 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithRenamedUnwrappedModelArray; + +/** + * An instance of this class provides access to all the operations defined in ModelWithRenamedUnwrappedModelArrayValues. + */ +public final class ModelWithRenamedUnwrappedModelArrayValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithRenamedUnwrappedModelArrayValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedUnwrappedModelArrayValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithRenamedUnwrappedModelArrayValuesImpl(XmlClientImpl client) { + this.service = ModelWithRenamedUnwrappedModelArrayValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithRenamedUnwrappedModelArrayValues to be used by the + * proxy service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithRenamedUnwrappedModelArrayValues", host = "{endpoint}") + public interface ModelWithRenamedUnwrappedModelArrayValuesService { + static ModelWithRenamedUnwrappedModelArrayValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz + = Class.forName("payload.xml.implementation.ModelWithRenamedUnwrappedModelArrayValuesServiceImpl"); + return (ModelWithRenamedUnwrappedModelArrayValuesService) clazz + .getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithRenamedUnwrappedModelArray", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithRenamedUnwrappedModelArray", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithRenamedUnwrappedModelArray input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.4 — Contains an unwrapped array of models with a custom item name along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.get", + requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedUnwrappedModelArray input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue.put", + requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedWrappedAndItemModelArrayValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedWrappedAndItemModelArrayValuesImpl.java new file mode 100644 index 00000000000..25696709af9 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedWrappedAndItemModelArrayValuesImpl.java @@ -0,0 +1,126 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithRenamedWrappedAndItemModelArray; + +/** + * An instance of this class provides access to all the operations defined in + * ModelWithRenamedWrappedAndItemModelArrayValues. + */ +public final class ModelWithRenamedWrappedAndItemModelArrayValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithRenamedWrappedAndItemModelArrayValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedWrappedAndItemModelArrayValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithRenamedWrappedAndItemModelArrayValuesImpl(XmlClientImpl client) { + this.service = ModelWithRenamedWrappedAndItemModelArrayValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithRenamedWrappedAndItemModelArrayValues to be used by + * the proxy service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithRenamedWrappedAndItemModelArrayValues", host = "{endpoint}") + public interface ModelWithRenamedWrappedAndItemModelArrayValuesService { + static ModelWithRenamedWrappedAndItemModelArrayValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class + .forName("payload.xml.implementation.ModelWithRenamedWrappedAndItemModelArrayValuesServiceImpl"); + return (ModelWithRenamedWrappedAndItemModelArrayValuesService) clazz + .getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithRenamedWrappedAndItemModelArray", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithRenamedWrappedAndItemModelArray", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithRenamedWrappedAndItemModelArray input, + RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.5 — Contains a wrapped array of models with custom wrapper and item names along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.get", requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedWrappedAndItemModelArray input, + RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue.put", requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedWrappedModelArrayValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedWrappedModelArrayValuesImpl.java new file mode 100644 index 00000000000..f5243db600b --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithRenamedWrappedModelArrayValuesImpl.java @@ -0,0 +1,123 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithRenamedWrappedModelArray; + +/** + * An instance of this class provides access to all the operations defined in ModelWithRenamedWrappedModelArrayValues. + */ +public final class ModelWithRenamedWrappedModelArrayValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithRenamedWrappedModelArrayValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithRenamedWrappedModelArrayValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithRenamedWrappedModelArrayValuesImpl(XmlClientImpl client) { + this.service = ModelWithRenamedWrappedModelArrayValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithRenamedWrappedModelArrayValues to be used by the + * proxy service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithRenamedWrappedModelArrayValues", host = "{endpoint}") + public interface ModelWithRenamedWrappedModelArrayValuesService { + static ModelWithRenamedWrappedModelArrayValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz + = Class.forName("payload.xml.implementation.ModelWithRenamedWrappedModelArrayValuesServiceImpl"); + return (ModelWithRenamedWrappedModelArrayValuesService) clazz + .getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithRenamedWrappedModelArray", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithRenamedWrappedModelArray", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithRenamedWrappedModelArray input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.3 — Contains a wrapped array of models with a custom wrapper name along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedWrappedModelArrayValue.get", + requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithRenamedWrappedModelArray input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithRenamedWrappedModelArrayValue.put", + requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithSimpleArraysValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithSimpleArraysValuesImpl.java index 6aa61a08313..7b6b8734f48 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithSimpleArraysValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithSimpleArraysValuesImpl.java @@ -89,7 +89,7 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of arrays of primitive types along with {@link Response}. + * @return §3.1 — Contains fields of arrays of primitive types along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithTextValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithTextValuesImpl.java index 6b6197f02da..6c874932fa8 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithTextValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithTextValuesImpl.java @@ -89,7 +89,7 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains an attribute and text along with {@link Response}. + * @return §8.1 — Contains an attribute and text along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithUnwrappedArrayValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithUnwrappedArrayValuesImpl.java index cf0a4a5e998..448d98ceb97 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithUnwrappedArrayValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithUnwrappedArrayValuesImpl.java @@ -89,7 +89,7 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of wrapped and unwrapped arrays of primitive types along with {@link Response}. + * @return §3.2 — Contains fields of wrapped and unwrapped arrays of primitive types along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithUnwrappedModelArrayValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithUnwrappedModelArrayValuesImpl.java new file mode 100644 index 00000000000..9dbcdc7f1aa --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithUnwrappedModelArrayValuesImpl.java @@ -0,0 +1,122 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithUnwrappedModelArray; + +/** + * An instance of this class provides access to all the operations defined in ModelWithUnwrappedModelArrayValues. + */ +public final class ModelWithUnwrappedModelArrayValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithUnwrappedModelArrayValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithUnwrappedModelArrayValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithUnwrappedModelArrayValuesImpl(XmlClientImpl client) { + this.service = ModelWithUnwrappedModelArrayValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithUnwrappedModelArrayValues to be used by the proxy + * service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithUnwrappedModelArrayValues", host = "{endpoint}") + public interface ModelWithUnwrappedModelArrayValuesService { + static ModelWithUnwrappedModelArrayValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz + = Class.forName("payload.xml.implementation.ModelWithUnwrappedModelArrayValuesServiceImpl"); + return (ModelWithUnwrappedModelArrayValuesService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithUnwrappedModelArray", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithUnwrappedModelArray", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithUnwrappedModelArray input, RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §4.2 — Contains an unwrapped array of models along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithUnwrappedModelArrayValue.get", + requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithUnwrappedModelArray input, RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("Payload.Xml.ModelWithUnwrappedModelArrayValue.put", + requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithWrappedPrimitiveCustomItemNamesValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithWrappedPrimitiveCustomItemNamesValuesImpl.java new file mode 100644 index 00000000000..796c5801467 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/ModelWithWrappedPrimitiveCustomItemNamesValuesImpl.java @@ -0,0 +1,126 @@ +package payload.xml.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import payload.xml.ModelWithWrappedPrimitiveCustomItemNames; + +/** + * An instance of this class provides access to all the operations defined in + * ModelWithWrappedPrimitiveCustomItemNamesValues. + */ +public final class ModelWithWrappedPrimitiveCustomItemNamesValuesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ModelWithWrappedPrimitiveCustomItemNamesValuesService service; + + /** + * The service client containing this operation class. + */ + private final XmlClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ModelWithWrappedPrimitiveCustomItemNamesValuesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ModelWithWrappedPrimitiveCustomItemNamesValuesImpl(XmlClientImpl client) { + this.service = ModelWithWrappedPrimitiveCustomItemNamesValuesService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for XmlClientModelWithWrappedPrimitiveCustomItemNamesValues to be used by + * the proxy service to perform REST calls. + */ + @ServiceInterface(name = "XmlClientModelWithWrappedPrimitiveCustomItemNamesValues", host = "{endpoint}") + public interface ModelWithWrappedPrimitiveCustomItemNamesValuesService { + static ModelWithWrappedPrimitiveCustomItemNamesValuesService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class + .forName("payload.xml.implementation.ModelWithWrappedPrimitiveCustomItemNamesValuesServiceImpl"); + return (ModelWithWrappedPrimitiveCustomItemNamesValuesService) clazz + .getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.GET, + path = "/payload/xml/modelWithWrappedPrimitiveCustomItemNames", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response get(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestContext requestContext); + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/payload/xml/modelWithWrappedPrimitiveCustomItemNames", + expectedStatusCodes = { 204 }) + @UnexpectedResponseExceptionDetail + Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content-type") String contentType, + @BodyParam("application/xml") ModelWithWrappedPrimitiveCustomItemNames input, + RequestContext requestContext); + } + + /** + * The get operation. + * + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return §3.5 — Contains a wrapped primitive array with custom wrapper and item names along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.get", requestContext, updatedContext -> { + final String accept = "application/xml"; + return service.get(this.client.getEndpoint(), accept, updatedContext); + }); + } + + /** + * The put operation. + * + * @param input The input parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putWithResponse(ModelWithWrappedPrimitiveCustomItemNames input, + RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse( + "Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue.put", requestContext, updatedContext -> { + final String contentType = "application/xml"; + return service.put(this.client.getEndpoint(), contentType, input, updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/SimpleModelValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/SimpleModelValuesImpl.java index 4ae27fc8b63..f0fbdbe02f1 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/SimpleModelValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/SimpleModelValuesImpl.java @@ -89,7 +89,7 @@ Response put(@HostParam("endpoint") String endpoint, @HeaderParam("content * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of primitive types along with {@link Response}. + * @return §1.1 — Contains fields of primitive types along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlClientImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlClientImpl.java index 8fa7708adea..aab486db195 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlClientImpl.java @@ -64,59 +64,73 @@ public SimpleModelValuesImpl getSimpleModelValues() { } /** - * The ModelWithSimpleArraysValuesImpl object to access its operations. + * The ModelWithRenamedPropertyValuesImpl object to access its operations. */ - private final ModelWithSimpleArraysValuesImpl modelWithSimpleArraysValues; + private final ModelWithRenamedPropertyValuesImpl modelWithRenamedPropertyValues; /** - * Gets the ModelWithSimpleArraysValuesImpl object to access its operations. + * Gets the ModelWithRenamedPropertyValuesImpl object to access its operations. * - * @return the ModelWithSimpleArraysValuesImpl object. + * @return the ModelWithRenamedPropertyValuesImpl object. */ - public ModelWithSimpleArraysValuesImpl getModelWithSimpleArraysValues() { - return this.modelWithSimpleArraysValues; + public ModelWithRenamedPropertyValuesImpl getModelWithRenamedPropertyValues() { + return this.modelWithRenamedPropertyValues; } /** - * The ModelWithArrayOfModelValuesImpl object to access its operations. + * The ModelWithRenamedFieldsValuesImpl object to access its operations. */ - private final ModelWithArrayOfModelValuesImpl modelWithArrayOfModelValues; + private final ModelWithRenamedFieldsValuesImpl modelWithRenamedFieldsValues; /** - * Gets the ModelWithArrayOfModelValuesImpl object to access its operations. + * Gets the ModelWithRenamedFieldsValuesImpl object to access its operations. * - * @return the ModelWithArrayOfModelValuesImpl object. + * @return the ModelWithRenamedFieldsValuesImpl object. */ - public ModelWithArrayOfModelValuesImpl getModelWithArrayOfModelValues() { - return this.modelWithArrayOfModelValues; + public ModelWithRenamedFieldsValuesImpl getModelWithRenamedFieldsValues() { + return this.modelWithRenamedFieldsValues; } /** - * The ModelWithOptionalFieldValuesImpl object to access its operations. + * The ModelWithNestedModelValuesImpl object to access its operations. */ - private final ModelWithOptionalFieldValuesImpl modelWithOptionalFieldValues; + private final ModelWithNestedModelValuesImpl modelWithNestedModelValues; /** - * Gets the ModelWithOptionalFieldValuesImpl object to access its operations. + * Gets the ModelWithNestedModelValuesImpl object to access its operations. * - * @return the ModelWithOptionalFieldValuesImpl object. + * @return the ModelWithNestedModelValuesImpl object. */ - public ModelWithOptionalFieldValuesImpl getModelWithOptionalFieldValues() { - return this.modelWithOptionalFieldValues; + public ModelWithNestedModelValuesImpl getModelWithNestedModelValues() { + return this.modelWithNestedModelValues; } /** - * The ModelWithAttributesValuesImpl object to access its operations. + * The ModelWithRenamedNestedModelValuesImpl object to access its operations. */ - private final ModelWithAttributesValuesImpl modelWithAttributesValues; + private final ModelWithRenamedNestedModelValuesImpl modelWithRenamedNestedModelValues; /** - * Gets the ModelWithAttributesValuesImpl object to access its operations. + * Gets the ModelWithRenamedNestedModelValuesImpl object to access its operations. * - * @return the ModelWithAttributesValuesImpl object. + * @return the ModelWithRenamedNestedModelValuesImpl object. */ - public ModelWithAttributesValuesImpl getModelWithAttributesValues() { - return this.modelWithAttributesValues; + public ModelWithRenamedNestedModelValuesImpl getModelWithRenamedNestedModelValues() { + return this.modelWithRenamedNestedModelValues; + } + + /** + * The ModelWithSimpleArraysValuesImpl object to access its operations. + */ + private final ModelWithSimpleArraysValuesImpl modelWithSimpleArraysValues; + + /** + * Gets the ModelWithSimpleArraysValuesImpl object to access its operations. + * + * @return the ModelWithSimpleArraysValuesImpl object. + */ + public ModelWithSimpleArraysValuesImpl getModelWithSimpleArraysValues() { + return this.modelWithSimpleArraysValues; } /** @@ -148,31 +162,143 @@ public ModelWithRenamedArraysValuesImpl getModelWithRenamedArraysValues() { } /** - * The ModelWithRenamedFieldsValuesImpl object to access its operations. + * The ModelWithWrappedPrimitiveCustomItemNamesValuesImpl object to access its operations. */ - private final ModelWithRenamedFieldsValuesImpl modelWithRenamedFieldsValues; + private final ModelWithWrappedPrimitiveCustomItemNamesValuesImpl modelWithWrappedPrimitiveCustomItemNamesValues; /** - * Gets the ModelWithRenamedFieldsValuesImpl object to access its operations. + * Gets the ModelWithWrappedPrimitiveCustomItemNamesValuesImpl object to access its operations. * - * @return the ModelWithRenamedFieldsValuesImpl object. + * @return the ModelWithWrappedPrimitiveCustomItemNamesValuesImpl object. */ - public ModelWithRenamedFieldsValuesImpl getModelWithRenamedFieldsValues() { - return this.modelWithRenamedFieldsValues; + public ModelWithWrappedPrimitiveCustomItemNamesValuesImpl getModelWithWrappedPrimitiveCustomItemNamesValues() { + return this.modelWithWrappedPrimitiveCustomItemNamesValues; } /** - * The ModelWithEmptyArrayValuesImpl object to access its operations. + * The ModelWithArrayOfModelValuesImpl object to access its operations. */ - private final ModelWithEmptyArrayValuesImpl modelWithEmptyArrayValues; + private final ModelWithArrayOfModelValuesImpl modelWithArrayOfModelValues; /** - * Gets the ModelWithEmptyArrayValuesImpl object to access its operations. + * Gets the ModelWithArrayOfModelValuesImpl object to access its operations. * - * @return the ModelWithEmptyArrayValuesImpl object. + * @return the ModelWithArrayOfModelValuesImpl object. */ - public ModelWithEmptyArrayValuesImpl getModelWithEmptyArrayValues() { - return this.modelWithEmptyArrayValues; + public ModelWithArrayOfModelValuesImpl getModelWithArrayOfModelValues() { + return this.modelWithArrayOfModelValues; + } + + /** + * The ModelWithUnwrappedModelArrayValuesImpl object to access its operations. + */ + private final ModelWithUnwrappedModelArrayValuesImpl modelWithUnwrappedModelArrayValues; + + /** + * Gets the ModelWithUnwrappedModelArrayValuesImpl object to access its operations. + * + * @return the ModelWithUnwrappedModelArrayValuesImpl object. + */ + public ModelWithUnwrappedModelArrayValuesImpl getModelWithUnwrappedModelArrayValues() { + return this.modelWithUnwrappedModelArrayValues; + } + + /** + * The ModelWithRenamedWrappedModelArrayValuesImpl object to access its operations. + */ + private final ModelWithRenamedWrappedModelArrayValuesImpl modelWithRenamedWrappedModelArrayValues; + + /** + * Gets the ModelWithRenamedWrappedModelArrayValuesImpl object to access its operations. + * + * @return the ModelWithRenamedWrappedModelArrayValuesImpl object. + */ + public ModelWithRenamedWrappedModelArrayValuesImpl getModelWithRenamedWrappedModelArrayValues() { + return this.modelWithRenamedWrappedModelArrayValues; + } + + /** + * The ModelWithRenamedUnwrappedModelArrayValuesImpl object to access its operations. + */ + private final ModelWithRenamedUnwrappedModelArrayValuesImpl modelWithRenamedUnwrappedModelArrayValues; + + /** + * Gets the ModelWithRenamedUnwrappedModelArrayValuesImpl object to access its operations. + * + * @return the ModelWithRenamedUnwrappedModelArrayValuesImpl object. + */ + public ModelWithRenamedUnwrappedModelArrayValuesImpl getModelWithRenamedUnwrappedModelArrayValues() { + return this.modelWithRenamedUnwrappedModelArrayValues; + } + + /** + * The ModelWithRenamedWrappedAndItemModelArrayValuesImpl object to access its operations. + */ + private final ModelWithRenamedWrappedAndItemModelArrayValuesImpl modelWithRenamedWrappedAndItemModelArrayValues; + + /** + * Gets the ModelWithRenamedWrappedAndItemModelArrayValuesImpl object to access its operations. + * + * @return the ModelWithRenamedWrappedAndItemModelArrayValuesImpl object. + */ + public ModelWithRenamedWrappedAndItemModelArrayValuesImpl getModelWithRenamedWrappedAndItemModelArrayValues() { + return this.modelWithRenamedWrappedAndItemModelArrayValues; + } + + /** + * The ModelWithAttributesValuesImpl object to access its operations. + */ + private final ModelWithAttributesValuesImpl modelWithAttributesValues; + + /** + * Gets the ModelWithAttributesValuesImpl object to access its operations. + * + * @return the ModelWithAttributesValuesImpl object. + */ + public ModelWithAttributesValuesImpl getModelWithAttributesValues() { + return this.modelWithAttributesValues; + } + + /** + * The ModelWithRenamedAttributeValuesImpl object to access its operations. + */ + private final ModelWithRenamedAttributeValuesImpl modelWithRenamedAttributeValues; + + /** + * Gets the ModelWithRenamedAttributeValuesImpl object to access its operations. + * + * @return the ModelWithRenamedAttributeValuesImpl object. + */ + public ModelWithRenamedAttributeValuesImpl getModelWithRenamedAttributeValues() { + return this.modelWithRenamedAttributeValues; + } + + /** + * The ModelWithNamespaceValuesImpl object to access its operations. + */ + private final ModelWithNamespaceValuesImpl modelWithNamespaceValues; + + /** + * Gets the ModelWithNamespaceValuesImpl object to access its operations. + * + * @return the ModelWithNamespaceValuesImpl object. + */ + public ModelWithNamespaceValuesImpl getModelWithNamespaceValues() { + return this.modelWithNamespaceValues; + } + + /** + * The ModelWithNamespaceOnPropertiesValuesImpl object to access its operations. + */ + private final ModelWithNamespaceOnPropertiesValuesImpl modelWithNamespaceOnPropertiesValues; + + /** + * Gets the ModelWithNamespaceOnPropertiesValuesImpl object to access its operations. + * + * @return the ModelWithNamespaceOnPropertiesValuesImpl object. + */ + public ModelWithNamespaceOnPropertiesValuesImpl getModelWithNamespaceOnPropertiesValues() { + return this.modelWithNamespaceOnPropertiesValues; } /** @@ -189,6 +315,34 @@ public ModelWithTextValuesImpl getModelWithTextValues() { return this.modelWithTextValues; } + /** + * The ModelWithOptionalFieldValuesImpl object to access its operations. + */ + private final ModelWithOptionalFieldValuesImpl modelWithOptionalFieldValues; + + /** + * Gets the ModelWithOptionalFieldValuesImpl object to access its operations. + * + * @return the ModelWithOptionalFieldValuesImpl object. + */ + public ModelWithOptionalFieldValuesImpl getModelWithOptionalFieldValues() { + return this.modelWithOptionalFieldValues; + } + + /** + * The ModelWithEmptyArrayValuesImpl object to access its operations. + */ + private final ModelWithEmptyArrayValuesImpl modelWithEmptyArrayValues; + + /** + * Gets the ModelWithEmptyArrayValuesImpl object to access its operations. + * + * @return the ModelWithEmptyArrayValuesImpl object. + */ + public ModelWithEmptyArrayValuesImpl getModelWithEmptyArrayValues() { + return this.modelWithEmptyArrayValues; + } + /** * The ModelWithDictionaryValuesImpl object to access its operations. */ @@ -217,6 +371,34 @@ public ModelWithEncodedNamesValuesImpl getModelWithEncodedNamesValues() { return this.modelWithEncodedNamesValues; } + /** + * The ModelWithEnumValuesImpl object to access its operations. + */ + private final ModelWithEnumValuesImpl modelWithEnumValues; + + /** + * Gets the ModelWithEnumValuesImpl object to access its operations. + * + * @return the ModelWithEnumValuesImpl object. + */ + public ModelWithEnumValuesImpl getModelWithEnumValues() { + return this.modelWithEnumValues; + } + + /** + * The ModelWithDatetimeValuesImpl object to access its operations. + */ + private final ModelWithDatetimeValuesImpl modelWithDatetimeValues; + + /** + * Gets the ModelWithDatetimeValuesImpl object to access its operations. + * + * @return the ModelWithDatetimeValuesImpl object. + */ + public ModelWithDatetimeValuesImpl getModelWithDatetimeValues() { + return this.modelWithDatetimeValues; + } + /** * The XmlErrorValuesImpl object to access its operations. */ @@ -243,17 +425,32 @@ public XmlClientImpl(HttpPipeline httpPipeline, Instrumentation instrumentation, this.instrumentation = instrumentation; this.endpoint = endpoint; this.simpleModelValues = new SimpleModelValuesImpl(this); + this.modelWithRenamedPropertyValues = new ModelWithRenamedPropertyValuesImpl(this); + this.modelWithRenamedFieldsValues = new ModelWithRenamedFieldsValuesImpl(this); + this.modelWithNestedModelValues = new ModelWithNestedModelValuesImpl(this); + this.modelWithRenamedNestedModelValues = new ModelWithRenamedNestedModelValuesImpl(this); this.modelWithSimpleArraysValues = new ModelWithSimpleArraysValuesImpl(this); - this.modelWithArrayOfModelValues = new ModelWithArrayOfModelValuesImpl(this); - this.modelWithOptionalFieldValues = new ModelWithOptionalFieldValuesImpl(this); - this.modelWithAttributesValues = new ModelWithAttributesValuesImpl(this); this.modelWithUnwrappedArrayValues = new ModelWithUnwrappedArrayValuesImpl(this); this.modelWithRenamedArraysValues = new ModelWithRenamedArraysValuesImpl(this); - this.modelWithRenamedFieldsValues = new ModelWithRenamedFieldsValuesImpl(this); - this.modelWithEmptyArrayValues = new ModelWithEmptyArrayValuesImpl(this); + this.modelWithWrappedPrimitiveCustomItemNamesValues + = new ModelWithWrappedPrimitiveCustomItemNamesValuesImpl(this); + this.modelWithArrayOfModelValues = new ModelWithArrayOfModelValuesImpl(this); + this.modelWithUnwrappedModelArrayValues = new ModelWithUnwrappedModelArrayValuesImpl(this); + this.modelWithRenamedWrappedModelArrayValues = new ModelWithRenamedWrappedModelArrayValuesImpl(this); + this.modelWithRenamedUnwrappedModelArrayValues = new ModelWithRenamedUnwrappedModelArrayValuesImpl(this); + this.modelWithRenamedWrappedAndItemModelArrayValues + = new ModelWithRenamedWrappedAndItemModelArrayValuesImpl(this); + this.modelWithAttributesValues = new ModelWithAttributesValuesImpl(this); + this.modelWithRenamedAttributeValues = new ModelWithRenamedAttributeValuesImpl(this); + this.modelWithNamespaceValues = new ModelWithNamespaceValuesImpl(this); + this.modelWithNamespaceOnPropertiesValues = new ModelWithNamespaceOnPropertiesValuesImpl(this); this.modelWithTextValues = new ModelWithTextValuesImpl(this); + this.modelWithOptionalFieldValues = new ModelWithOptionalFieldValuesImpl(this); + this.modelWithEmptyArrayValues = new ModelWithEmptyArrayValuesImpl(this); this.modelWithDictionaryValues = new ModelWithDictionaryValuesImpl(this); this.modelWithEncodedNamesValues = new ModelWithEncodedNamesValuesImpl(this); + this.modelWithEnumValues = new ModelWithEnumValuesImpl(this); + this.modelWithDatetimeValues = new ModelWithDatetimeValuesImpl(this); this.xmlErrorValues = new XmlErrorValuesImpl(this); } } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlErrorValuesImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlErrorValuesImpl.java index 64ab861b946..78d41aa2ed9 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlErrorValuesImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/payload/xml/implementation/XmlErrorValuesImpl.java @@ -79,7 +79,7 @@ Response get(@HostParam("endpoint") String endpoint, @HeaderParam(" * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws HttpResponseException thrown if the service returns an error. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return contains fields of primitive types along with {@link Response}. + * @return §1.1 — Contains fields of primitive types along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getWithResponse(RequestContext requestContext) { diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/ExtensibleStringsClient.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/ExtensibleStringsClient.java new file mode 100644 index 00000000000..db4f4aabd98 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/ExtensibleStringsClient.java @@ -0,0 +1,71 @@ +package specialwords; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceClient; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.instrumentation.Instrumentation; +import specialwords.extensiblestrings.ExtensibleString; +import specialwords.implementation.ExtensibleStringsImpl; + +/** + * Initializes a new instance of the synchronous SpecialWordsClient type. + */ +@ServiceClient(builder = SpecialWordsClientBuilder.class) +public final class ExtensibleStringsClient { + @Metadata(properties = { MetadataProperties.GENERATED }) + private final ExtensibleStringsImpl serviceClient; + + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ExtensibleStringsClient class. + * + * @param serviceClient the service client implementation. + * @param instrumentation the instrumentation instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + ExtensibleStringsClient(ExtensibleStringsImpl serviceClient, Instrumentation instrumentation) { + this.serviceClient = serviceClient; + this.instrumentation = instrumentation; + } + + /** + * The putExtensibleStringValue operation. + * + * @param body The body parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return verify enum member names that are special words using extensible enum (union) along with + * {@link Response}. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putExtensibleStringValueWithResponse(ExtensibleString body, + RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("SpecialWords.ExtensibleStrings.putExtensibleStringValue", + requestContext, + updatedContext -> this.serviceClient.putExtensibleStringValueWithResponse(body, updatedContext)); + } + + /** + * The putExtensibleStringValue operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return verify enum member names that are special words using extensible enum (union). + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @ServiceMethod(returns = ReturnType.SINGLE) + public ExtensibleString putExtensibleStringValue(ExtensibleString body) { + return putExtensibleStringValueWithResponse(body, RequestContext.none()).getValue(); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/SpecialWordsClientBuilder.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/SpecialWordsClientBuilder.java index a33fb43e6b6..10709dd4f15 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/SpecialWordsClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/SpecialWordsClientBuilder.java @@ -35,6 +35,7 @@ serviceClients = { ModelsClient.class, ModelPropertiesClient.class, + ExtensibleStringsClient.class, OperationsClient.class, ParametersClient.class }) public final class SpecialWordsClientBuilder @@ -251,6 +252,17 @@ public ModelPropertiesClient buildModelPropertiesClient() { return new ModelPropertiesClient(innerClient.getModelProperties(), innerClient.getInstrumentation()); } + /** + * Builds an instance of ExtensibleStringsClient class. + * + * @return an instance of ExtensibleStringsClient. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public ExtensibleStringsClient buildExtensibleStringsClient() { + SpecialWordsClientImpl innerClient = buildInnerClient(); + return new ExtensibleStringsClient(innerClient.getExtensibleStrings(), innerClient.getInstrumentation()); + } + /** * Builds an instance of OperationsClient class. * diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/extensiblestrings/ExtensibleString.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/extensiblestrings/ExtensibleString.java new file mode 100644 index 00000000000..2e22657b438 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/extensiblestrings/ExtensibleString.java @@ -0,0 +1,314 @@ +package specialwords.extensiblestrings; + +import io.clientcore.core.annotations.Metadata; +import io.clientcore.core.annotations.MetadataProperties; +import io.clientcore.core.serialization.json.JsonReader; +import io.clientcore.core.serialization.json.JsonSerializable; +import io.clientcore.core.serialization.json.JsonToken; +import io.clientcore.core.serialization.json.JsonWriter; +import io.clientcore.core.utils.ExpandableEnum; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; + +/** + * Verify enum member names that are special words using extensible enum (union). + */ +public final class ExtensibleString implements ExpandableEnum, JsonSerializable { + private static final Map VALUES = new ConcurrentHashMap<>(); + + private static final Function NEW_INSTANCE = ExtensibleString::new; + + /** + * Static value and for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString AND = fromValue("and"); + + /** + * Static value as for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString AS = fromValue("as"); + + /** + * Static value assert for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString ASSERT = fromValue("assert"); + + /** + * Static value async for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString ASYNC = fromValue("async"); + + /** + * Static value await for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString AWAIT = fromValue("await"); + + /** + * Static value break for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString BREAK = fromValue("break"); + + /** + * Static value class for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString CLASS = fromValue("class"); + + /** + * Static value constructor for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString CONSTRUCTOR = fromValue("constructor"); + + /** + * Static value continue for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString CONTINUE = fromValue("continue"); + + /** + * Static value def for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString DEF = fromValue("def"); + + /** + * Static value del for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString DEL = fromValue("del"); + + /** + * Static value elif for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString ELIF = fromValue("elif"); + + /** + * Static value else for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString ELSE = fromValue("else"); + + /** + * Static value except for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString EXCEPT = fromValue("except"); + + /** + * Static value exec for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString EXEC = fromValue("exec"); + + /** + * Static value finally for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString FINALLY = fromValue("finally"); + + /** + * Static value for for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString FOR = fromValue("for"); + + /** + * Static value from for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString FROM = fromValue("from"); + + /** + * Static value global for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString GLOBAL = fromValue("global"); + + /** + * Static value if for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString IF = fromValue("if"); + + /** + * Static value import for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString IMPORT = fromValue("import"); + + /** + * Static value in for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString IN = fromValue("in"); + + /** + * Static value is for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString IS = fromValue("is"); + + /** + * Static value lambda for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString LAMBDA = fromValue("lambda"); + + /** + * Static value not for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString NOT = fromValue("not"); + + /** + * Static value or for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString OR = fromValue("or"); + + /** + * Static value pass for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString PASS = fromValue("pass"); + + /** + * Static value raise for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString RAISE = fromValue("raise"); + + /** + * Static value return for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString RETURN = fromValue("return"); + + /** + * Static value try for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString TRY = fromValue("try"); + + /** + * Static value while for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString WHILE = fromValue("while"); + + /** + * Static value with for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString WITH = fromValue("with"); + + /** + * Static value yield for ExtensibleString. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static final ExtensibleString YIELD = fromValue("yield"); + + private final String value; + + private ExtensibleString(String value) { + this.value = value; + } + + /** + * Creates or finds a ExtensibleString. + * + * @param value a value to look for. + * @return the corresponding ExtensibleString. + * @throws IllegalArgumentException if value is null. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ExtensibleString fromValue(String value) { + if (value == null) { + throw new IllegalArgumentException("'value' cannot be null."); + } + return VALUES.computeIfAbsent(value, NEW_INSTANCE); + } + + /** + * Gets known ExtensibleString values. + * + * @return Known ExtensibleString values. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static Collection values() { + return new ArrayList<>(VALUES.values()); + } + + /** + * Gets the value of the ExtensibleString instance. + * + * @return the value of the ExtensibleString instance. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public String getValue() { + return this.value; + } + + /** + * {@inheritDoc} + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + return jsonWriter.writeString(getValue()); + } + + /** + * Reads an instance of ExtensibleString from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ExtensibleString if the JsonReader was pointing to an instance of it, or null if the + * JsonReader was pointing to JSON null. + * @throws IOException If an error occurs while reading the ExtensibleString. + * @throws IllegalStateException If unexpected JSON token is found. + */ + @Metadata(properties = { MetadataProperties.GENERATED }) + public static ExtensibleString fromJson(JsonReader jsonReader) throws IOException { + JsonToken nextToken = jsonReader.nextToken(); + if (nextToken == JsonToken.NULL) { + return null; + } + if (nextToken != JsonToken.STRING) { + throw new IllegalStateException( + String.format("Unexpected JSON token for %s deserialization: %s", JsonToken.STRING, nextToken)); + } + return ExtensibleString.fromValue(jsonReader.getString()); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public String toString() { + return Objects.toString(this.value); + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public boolean equals(Object obj) { + return this == obj; + } + + @Metadata(properties = { MetadataProperties.GENERATED }) + @Override + public int hashCode() { + return Objects.hashCode(this.value); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/extensiblestrings/package-info.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/extensiblestrings/package-info.java new file mode 100644 index 00000000000..c376a9c3a3c --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/extensiblestrings/package-info.java @@ -0,0 +1,43 @@ +/** + * Package containing the data models for SpecialWords. + * Scenarios to verify that reserved words can be used in service and generators will handle it appropriately. + * + * Current list of special words + * ```txt + * and + * as + * assert + * async + * await + * break + * class + * constructor + * continue + * def + * del + * elif + * else + * except + * exec + * finally + * for + * from + * global + * if + * import + * in + * is + * lambda + * list + * not + * or + * pass + * raise + * return + * try + * while + * with + * yield + * ```. + */ +package specialwords.extensiblestrings; diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/implementation/ExtensibleStringsImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/implementation/ExtensibleStringsImpl.java new file mode 100644 index 00000000000..5443917a20c --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/implementation/ExtensibleStringsImpl.java @@ -0,0 +1,100 @@ +package specialwords.implementation; + +import io.clientcore.core.annotations.ReturnType; +import io.clientcore.core.annotations.ServiceInterface; +import io.clientcore.core.annotations.ServiceMethod; +import io.clientcore.core.http.annotations.BodyParam; +import io.clientcore.core.http.annotations.HeaderParam; +import io.clientcore.core.http.annotations.HostParam; +import io.clientcore.core.http.annotations.HttpRequestInformation; +import io.clientcore.core.http.annotations.UnexpectedResponseExceptionDetail; +import io.clientcore.core.http.models.HttpMethod; +import io.clientcore.core.http.models.HttpResponseException; +import io.clientcore.core.http.models.RequestContext; +import io.clientcore.core.http.models.Response; +import io.clientcore.core.http.pipeline.HttpPipeline; +import io.clientcore.core.instrumentation.Instrumentation; +import java.lang.reflect.InvocationTargetException; +import specialwords.extensiblestrings.ExtensibleString; + +/** + * An instance of this class provides access to all the operations defined in ExtensibleStrings. + */ +public final class ExtensibleStringsImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ExtensibleStringsService service; + + /** + * The service client containing this operation class. + */ + private final SpecialWordsClientImpl client; + + /** + * The instance of instrumentation to report telemetry. + */ + private final Instrumentation instrumentation; + + /** + * Initializes an instance of ExtensibleStringsImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ExtensibleStringsImpl(SpecialWordsClientImpl client) { + this.service = ExtensibleStringsService.getNewInstance(client.getHttpPipeline()); + this.client = client; + this.instrumentation = client.getInstrumentation(); + } + + /** + * The interface defining all the services for SpecialWordsClientExtensibleStrings to be used by the proxy service + * to perform REST calls. + */ + @ServiceInterface(name = "SpecialWordsClientExtensibleStrings", host = "{endpoint}") + public interface ExtensibleStringsService { + static ExtensibleStringsService getNewInstance(HttpPipeline pipeline) { + try { + Class clazz = Class.forName("specialwords.implementation.ExtensibleStringsServiceImpl"); + return (ExtensibleStringsService) clazz.getMethod("getNewInstance", HttpPipeline.class) + .invoke(null, pipeline); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException + | InvocationTargetException e) { + throw new RuntimeException(e); + } + + } + + @HttpRequestInformation( + method = HttpMethod.PUT, + path = "/special-words/extensible-strings/string", + expectedStatusCodes = { 200 }) + @UnexpectedResponseExceptionDetail + Response putExtensibleStringValue(@HostParam("endpoint") String endpoint, + @HeaderParam("content-type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") ExtensibleString body, RequestContext requestContext); + } + + /** + * The putExtensibleStringValue operation. + * + * @param body The body parameter. + * @param requestContext The context to configure the HTTP request before HTTP client sends it. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the service returns an error. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return verify enum member names that are special words using extensible enum (union) along with + * {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putExtensibleStringValueWithResponse(ExtensibleString body, + RequestContext requestContext) { + return this.instrumentation.instrumentWithResponse("SpecialWords.ExtensibleStrings.putExtensibleStringValue", + requestContext, updatedContext -> { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.putExtensibleStringValue(this.client.getEndpoint(), contentType, accept, body, + updatedContext); + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java index 22e2c1f3e5e..b793f324cf7 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java @@ -77,6 +77,20 @@ public ModelPropertiesImpl getModelProperties() { return this.modelProperties; } + /** + * The ExtensibleStringsImpl object to access its operations. + */ + private final ExtensibleStringsImpl extensibleStrings; + + /** + * Gets the ExtensibleStringsImpl object to access its operations. + * + * @return the ExtensibleStringsImpl object. + */ + public ExtensibleStringsImpl getExtensibleStrings() { + return this.extensibleStrings; + } + /** * The OperationsImpl object to access its operations. */ @@ -118,6 +132,7 @@ public SpecialWordsClientImpl(HttpPipeline httpPipeline, Instrumentation instrum this.endpoint = endpoint; this.models = new ModelsImpl(this); this.modelProperties = new ModelPropertiesImpl(this); + this.extensibleStrings = new ExtensibleStringsImpl(this); this.operations = new OperationsImpl(this); this.parameters = new ParametersImpl(this); } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-pageable_metadata.json b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-pageable_metadata.json index 34d66bb8f20..367e49c6fad 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-pageable_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-pageable_metadata.json @@ -1 +1 @@ -{"flavor":"generic","apiVersions":{},"crossLanguageDefinitions":{"payload.pageable.PageSizeClient":"Payload.Pageable.PageSize","payload.pageable.PageableClientBuilder":"Payload.Pageable","payload.pageable.Pet":"Payload.Pageable.Pet","payload.pageable.ServerDrivenPaginationClient":"Payload.Pageable.ServerDrivenPagination","payload.pageable.ServerDrivenPaginationContinuationTokenClient":"Payload.Pageable.ServerDrivenPagination.ContinuationToken","payload.pageable.XmlPaginationClient":"Payload.Pageable.XmlPagination","payload.pageable.XmlPet":"Payload.Pageable.XmlPet","payload.pageable.implementation.RequestHeaderResponseHeaderResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseHeader.Response.anonymous","payload.pageable.implementation.RequestQueryResponseHeaderResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseHeader.Response.anonymous","payload.pageable.implementation.XmlPetListResult":"Payload.Pageable.XmlPetListResult","payload.pageable.implementation.XmlPetListResultWithNextLink":"Payload.Pageable.XmlPetListResultWithNextLink","payload.pageable.pagesize.implementation.ListWithPageSizeResponse":"Payload.Pageable.PageSize.listWithPageSize.Response.anonymous","payload.pageable.pagesize.implementation.ListWithoutContinuationResponse":"Payload.Pageable.PageSize.listWithoutContinuation.Response.anonymous","payload.pageable.serverdrivenpagination.NestedLinkResponseNestedItems":"Payload.Pageable.ServerDrivenPagination.nestedLink.Response.nestedItems.anonymous","payload.pageable.serverdrivenpagination.NestedLinkResponseNestedNext":"Payload.Pageable.ServerDrivenPagination.nestedLink.Response.nestedNext.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestHeaderNestedResponseBodyResponseNestedItems":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.Response.nestedItems.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestHeaderNestedResponseBodyResponseNestedNext":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.Response.nestedNext.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestQueryNestedResponseBodyResponseNestedItems":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.Response.nestedItems.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestQueryNestedResponseBodyResponseNestedNext":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.Response.nestedNext.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestHeaderNestedResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestHeaderResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestQueryNestedResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestQueryResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.implementation.LinkResponse":"Payload.Pageable.ServerDrivenPagination.link.Response.anonymous","payload.pageable.serverdrivenpagination.implementation.LinkStringResponse":"Payload.Pageable.ServerDrivenPagination.linkString.Response.anonymous","payload.pageable.serverdrivenpagination.implementation.NestedLinkResponse":"Payload.Pageable.ServerDrivenPagination.nestedLink.Response.anonymous"},"generatedFiles":["src/main/java/module-info.java","src/main/java/payload/pageable/PageSizeClient.java","src/main/java/payload/pageable/PageableClientBuilder.java","src/main/java/payload/pageable/Pet.java","src/main/java/payload/pageable/ServerDrivenPaginationClient.java","src/main/java/payload/pageable/ServerDrivenPaginationContinuationTokenClient.java","src/main/java/payload/pageable/XmlPaginationClient.java","src/main/java/payload/pageable/XmlPet.java","src/main/java/payload/pageable/implementation/PageSizesImpl.java","src/main/java/payload/pageable/implementation/PageableClientImpl.java","src/main/java/payload/pageable/implementation/RequestHeaderResponseHeaderResponse.java","src/main/java/payload/pageable/implementation/RequestQueryResponseHeaderResponse.java","src/main/java/payload/pageable/implementation/ServerDrivenPaginationContinuationTokensImpl.java","src/main/java/payload/pageable/implementation/ServerDrivenPaginationsImpl.java","src/main/java/payload/pageable/implementation/XmlPaginationsImpl.java","src/main/java/payload/pageable/implementation/XmlPetListResult.java","src/main/java/payload/pageable/implementation/XmlPetListResultWithNextLink.java","src/main/java/payload/pageable/implementation/package-info.java","src/main/java/payload/pageable/package-info.java","src/main/java/payload/pageable/pagesize/implementation/ListWithPageSizeResponse.java","src/main/java/payload/pageable/pagesize/implementation/ListWithoutContinuationResponse.java","src/main/java/payload/pageable/pagesize/implementation/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/NestedLinkResponseNestedItems.java","src/main/java/payload/pageable/serverdrivenpagination/NestedLinkResponseNestedNext.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestHeaderNestedResponseBodyResponseNestedItems.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestHeaderNestedResponseBodyResponseNestedNext.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestQueryNestedResponseBodyResponseNestedItems.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestQueryNestedResponseBodyResponseNestedNext.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestHeaderNestedResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestHeaderResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestQueryNestedResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestQueryResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/LinkResponse.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/LinkStringResponse.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/NestedLinkResponse.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/package-info.java"]} \ No newline at end of file +{"flavor":"generic","apiVersions":{},"crossLanguageDefinitions":{"payload.pageable.PageSizeClient":"Payload.Pageable.PageSize","payload.pageable.PageableClientBuilder":"Payload.Pageable","payload.pageable.Pet":"Payload.Pageable.Pet","payload.pageable.ServerDrivenPaginationAlternateInitialVerbClient":"Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb","payload.pageable.ServerDrivenPaginationClient":"Payload.Pageable.ServerDrivenPagination","payload.pageable.ServerDrivenPaginationContinuationTokenClient":"Payload.Pageable.ServerDrivenPagination.ContinuationToken","payload.pageable.XmlPaginationClient":"Payload.Pageable.XmlPagination","payload.pageable.XmlPet":"Payload.Pageable.XmlPet","payload.pageable.implementation.RequestHeaderResponseHeaderResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseHeader.Response.anonymous","payload.pageable.implementation.RequestQueryResponseHeaderResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseHeader.Response.anonymous","payload.pageable.implementation.XmlPetListResult":"Payload.Pageable.XmlPetListResult","payload.pageable.implementation.XmlPetListResultWithNextLink":"Payload.Pageable.XmlPetListResultWithNextLink","payload.pageable.pagesize.implementation.ListWithPageSizeResponse":"Payload.Pageable.PageSize.listWithPageSize.Response.anonymous","payload.pageable.pagesize.implementation.ListWithoutContinuationResponse":"Payload.Pageable.PageSize.listWithoutContinuation.Response.anonymous","payload.pageable.serverdrivenpagination.NestedLinkResponseNestedItems":"Payload.Pageable.ServerDrivenPagination.nestedLink.Response.nestedItems.anonymous","payload.pageable.serverdrivenpagination.NestedLinkResponseNestedNext":"Payload.Pageable.ServerDrivenPagination.nestedLink.Response.nestedNext.anonymous","payload.pageable.serverdrivenpagination.alternateinitialverb.Filter":"Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.Filter","payload.pageable.serverdrivenpagination.alternateinitialverb.implementation.PostResponse":"Payload.Pageable.ServerDrivenPagination.AlternateInitialVerb.post.Response.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestHeaderNestedResponseBodyResponseNestedItems":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.Response.nestedItems.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestHeaderNestedResponseBodyResponseNestedNext":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.Response.nestedNext.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestQueryNestedResponseBodyResponseNestedItems":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.Response.nestedItems.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.RequestQueryNestedResponseBodyResponseNestedNext":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.Response.nestedNext.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestHeaderNestedResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderNestedResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestHeaderResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestHeaderResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestQueryNestedResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryNestedResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.continuationtoken.implementation.RequestQueryResponseBodyResponse":"Payload.Pageable.ServerDrivenPagination.ContinuationToken.requestQueryResponseBody.Response.anonymous","payload.pageable.serverdrivenpagination.implementation.LinkResponse":"Payload.Pageable.ServerDrivenPagination.link.Response.anonymous","payload.pageable.serverdrivenpagination.implementation.LinkStringResponse":"Payload.Pageable.ServerDrivenPagination.linkString.Response.anonymous","payload.pageable.serverdrivenpagination.implementation.NestedLinkResponse":"Payload.Pageable.ServerDrivenPagination.nestedLink.Response.anonymous"},"generatedFiles":["src/main/java/module-info.java","src/main/java/payload/pageable/PageSizeClient.java","src/main/java/payload/pageable/PageableClientBuilder.java","src/main/java/payload/pageable/Pet.java","src/main/java/payload/pageable/ServerDrivenPaginationAlternateInitialVerbClient.java","src/main/java/payload/pageable/ServerDrivenPaginationClient.java","src/main/java/payload/pageable/ServerDrivenPaginationContinuationTokenClient.java","src/main/java/payload/pageable/XmlPaginationClient.java","src/main/java/payload/pageable/XmlPet.java","src/main/java/payload/pageable/implementation/PageSizesImpl.java","src/main/java/payload/pageable/implementation/PageableClientImpl.java","src/main/java/payload/pageable/implementation/RequestHeaderResponseHeaderResponse.java","src/main/java/payload/pageable/implementation/RequestQueryResponseHeaderResponse.java","src/main/java/payload/pageable/implementation/ServerDrivenPaginationAlternateInitialVerbsImpl.java","src/main/java/payload/pageable/implementation/ServerDrivenPaginationContinuationTokensImpl.java","src/main/java/payload/pageable/implementation/ServerDrivenPaginationsImpl.java","src/main/java/payload/pageable/implementation/XmlPaginationsImpl.java","src/main/java/payload/pageable/implementation/XmlPetListResult.java","src/main/java/payload/pageable/implementation/XmlPetListResultWithNextLink.java","src/main/java/payload/pageable/implementation/package-info.java","src/main/java/payload/pageable/package-info.java","src/main/java/payload/pageable/pagesize/implementation/ListWithPageSizeResponse.java","src/main/java/payload/pageable/pagesize/implementation/ListWithoutContinuationResponse.java","src/main/java/payload/pageable/pagesize/implementation/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/NestedLinkResponseNestedItems.java","src/main/java/payload/pageable/serverdrivenpagination/NestedLinkResponseNestedNext.java","src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/Filter.java","src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/PostResponse.java","src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/implementation/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/alternateinitialverb/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestHeaderNestedResponseBodyResponseNestedItems.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestHeaderNestedResponseBodyResponseNestedNext.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestQueryNestedResponseBodyResponseNestedItems.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/RequestQueryNestedResponseBodyResponseNestedNext.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestHeaderNestedResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestHeaderResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestQueryNestedResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/RequestQueryResponseBodyResponse.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/implementation/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/continuationtoken/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/LinkResponse.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/LinkStringResponse.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/NestedLinkResponse.java","src/main/java/payload/pageable/serverdrivenpagination/implementation/package-info.java","src/main/java/payload/pageable/serverdrivenpagination/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-xml_metadata.json b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-xml_metadata.json index c5a63cfb1b5..51d86e9ae61 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-xml_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/payload-xml_metadata.json @@ -1 +1 @@ -{"flavor":"generic","apiVersions":{},"crossLanguageDefinitions":{"payload.xml.ModelWithArrayOfModel":"Payload.Xml.ModelWithArrayOfModel","payload.xml.ModelWithArrayOfModelValueClient":"Payload.Xml.ModelWithArrayOfModelValue","payload.xml.ModelWithAttributes":"Payload.Xml.ModelWithAttributes","payload.xml.ModelWithAttributesValueClient":"Payload.Xml.ModelWithAttributesValue","payload.xml.ModelWithDictionary":"Payload.Xml.ModelWithDictionary","payload.xml.ModelWithDictionaryValueClient":"Payload.Xml.ModelWithDictionaryValue","payload.xml.ModelWithEmptyArray":"Payload.Xml.ModelWithEmptyArray","payload.xml.ModelWithEmptyArrayValueClient":"Payload.Xml.ModelWithEmptyArrayValue","payload.xml.ModelWithEncodedNames":"Payload.Xml.ModelWithEncodedNames","payload.xml.ModelWithEncodedNamesValueClient":"Payload.Xml.ModelWithEncodedNamesValue","payload.xml.ModelWithOptionalField":"Payload.Xml.ModelWithOptionalField","payload.xml.ModelWithOptionalFieldValueClient":"Payload.Xml.ModelWithOptionalFieldValue","payload.xml.ModelWithRenamedArrays":"Payload.Xml.ModelWithRenamedArrays","payload.xml.ModelWithRenamedArraysValueClient":"Payload.Xml.ModelWithRenamedArraysValue","payload.xml.ModelWithRenamedFields":"Payload.Xml.ModelWithRenamedFields","payload.xml.ModelWithRenamedFieldsValueClient":"Payload.Xml.ModelWithRenamedFieldsValue","payload.xml.ModelWithSimpleArrays":"Payload.Xml.ModelWithSimpleArrays","payload.xml.ModelWithSimpleArraysValueClient":"Payload.Xml.ModelWithSimpleArraysValue","payload.xml.ModelWithText":"Payload.Xml.ModelWithText","payload.xml.ModelWithTextValueClient":"Payload.Xml.ModelWithTextValue","payload.xml.ModelWithUnwrappedArray":"Payload.Xml.ModelWithUnwrappedArray","payload.xml.ModelWithUnwrappedArrayValueClient":"Payload.Xml.ModelWithUnwrappedArrayValue","payload.xml.SimpleModel":"Payload.Xml.SimpleModel","payload.xml.SimpleModelValueClient":"Payload.Xml.SimpleModelValue","payload.xml.XmlClientBuilder":"Payload.Xml","payload.xml.XmlErrorBody":"Payload.Xml.XmlErrorBody","payload.xml.XmlErrorValueClient":"Payload.Xml.XmlErrorValue"},"generatedFiles":["src/main/java/module-info.java","src/main/java/payload/xml/ModelWithArrayOfModel.java","src/main/java/payload/xml/ModelWithArrayOfModelValueClient.java","src/main/java/payload/xml/ModelWithAttributes.java","src/main/java/payload/xml/ModelWithAttributesValueClient.java","src/main/java/payload/xml/ModelWithDictionary.java","src/main/java/payload/xml/ModelWithDictionaryValueClient.java","src/main/java/payload/xml/ModelWithEmptyArray.java","src/main/java/payload/xml/ModelWithEmptyArrayValueClient.java","src/main/java/payload/xml/ModelWithEncodedNames.java","src/main/java/payload/xml/ModelWithEncodedNamesValueClient.java","src/main/java/payload/xml/ModelWithOptionalField.java","src/main/java/payload/xml/ModelWithOptionalFieldValueClient.java","src/main/java/payload/xml/ModelWithRenamedArrays.java","src/main/java/payload/xml/ModelWithRenamedArraysValueClient.java","src/main/java/payload/xml/ModelWithRenamedFields.java","src/main/java/payload/xml/ModelWithRenamedFieldsValueClient.java","src/main/java/payload/xml/ModelWithSimpleArrays.java","src/main/java/payload/xml/ModelWithSimpleArraysValueClient.java","src/main/java/payload/xml/ModelWithText.java","src/main/java/payload/xml/ModelWithTextValueClient.java","src/main/java/payload/xml/ModelWithUnwrappedArray.java","src/main/java/payload/xml/ModelWithUnwrappedArrayValueClient.java","src/main/java/payload/xml/SimpleModel.java","src/main/java/payload/xml/SimpleModelValueClient.java","src/main/java/payload/xml/XmlClientBuilder.java","src/main/java/payload/xml/XmlErrorBody.java","src/main/java/payload/xml/XmlErrorValueClient.java","src/main/java/payload/xml/implementation/ModelWithArrayOfModelValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithAttributesValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithDictionaryValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithEmptyArrayValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithEncodedNamesValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithOptionalFieldValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedArraysValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedFieldsValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithSimpleArraysValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithTextValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithUnwrappedArrayValuesImpl.java","src/main/java/payload/xml/implementation/SimpleModelValuesImpl.java","src/main/java/payload/xml/implementation/XmlClientImpl.java","src/main/java/payload/xml/implementation/XmlErrorValuesImpl.java","src/main/java/payload/xml/implementation/package-info.java","src/main/java/payload/xml/package-info.java"]} \ No newline at end of file +{"flavor":"generic","apiVersions":{},"crossLanguageDefinitions":{"payload.xml.Author":"Payload.Xml.Author","payload.xml.Book":"Payload.Xml.Book","payload.xml.ModelWithArrayOfModel":"Payload.Xml.ModelWithArrayOfModel","payload.xml.ModelWithArrayOfModelValueClient":"Payload.Xml.ModelWithArrayOfModelValue","payload.xml.ModelWithAttributes":"Payload.Xml.ModelWithAttributes","payload.xml.ModelWithAttributesValueClient":"Payload.Xml.ModelWithAttributesValue","payload.xml.ModelWithDatetime":"Payload.Xml.ModelWithDatetime","payload.xml.ModelWithDatetimeValueClient":"Payload.Xml.ModelWithDatetimeValue","payload.xml.ModelWithDictionary":"Payload.Xml.ModelWithDictionary","payload.xml.ModelWithDictionaryValueClient":"Payload.Xml.ModelWithDictionaryValue","payload.xml.ModelWithEmptyArray":"Payload.Xml.ModelWithEmptyArray","payload.xml.ModelWithEmptyArrayValueClient":"Payload.Xml.ModelWithEmptyArrayValue","payload.xml.ModelWithEncodedNames":"Payload.Xml.ModelWithEncodedNames","payload.xml.ModelWithEncodedNamesValueClient":"Payload.Xml.ModelWithEncodedNamesValue","payload.xml.ModelWithEnum":"Payload.Xml.ModelWithEnum","payload.xml.ModelWithEnumValueClient":"Payload.Xml.ModelWithEnumValue","payload.xml.ModelWithNamespace":"Payload.Xml.ModelWithNamespace","payload.xml.ModelWithNamespaceOnProperties":"Payload.Xml.ModelWithNamespaceOnProperties","payload.xml.ModelWithNamespaceOnPropertiesValueClient":"Payload.Xml.ModelWithNamespaceOnPropertiesValue","payload.xml.ModelWithNamespaceValueClient":"Payload.Xml.ModelWithNamespaceValue","payload.xml.ModelWithNestedModel":"Payload.Xml.ModelWithNestedModel","payload.xml.ModelWithNestedModelValueClient":"Payload.Xml.ModelWithNestedModelValue","payload.xml.ModelWithOptionalField":"Payload.Xml.ModelWithOptionalField","payload.xml.ModelWithOptionalFieldValueClient":"Payload.Xml.ModelWithOptionalFieldValue","payload.xml.ModelWithRenamedArrays":"Payload.Xml.ModelWithRenamedArrays","payload.xml.ModelWithRenamedArraysValueClient":"Payload.Xml.ModelWithRenamedArraysValue","payload.xml.ModelWithRenamedAttribute":"Payload.Xml.ModelWithRenamedAttribute","payload.xml.ModelWithRenamedAttributeValueClient":"Payload.Xml.ModelWithRenamedAttributeValue","payload.xml.ModelWithRenamedFields":"Payload.Xml.ModelWithRenamedFields","payload.xml.ModelWithRenamedFieldsValueClient":"Payload.Xml.ModelWithRenamedFieldsValue","payload.xml.ModelWithRenamedNestedModel":"Payload.Xml.ModelWithRenamedNestedModel","payload.xml.ModelWithRenamedNestedModelValueClient":"Payload.Xml.ModelWithRenamedNestedModelValue","payload.xml.ModelWithRenamedProperty":"Payload.Xml.ModelWithRenamedProperty","payload.xml.ModelWithRenamedPropertyValueClient":"Payload.Xml.ModelWithRenamedPropertyValue","payload.xml.ModelWithRenamedUnwrappedModelArray":"Payload.Xml.ModelWithRenamedUnwrappedModelArray","payload.xml.ModelWithRenamedUnwrappedModelArrayValueClient":"Payload.Xml.ModelWithRenamedUnwrappedModelArrayValue","payload.xml.ModelWithRenamedWrappedAndItemModelArray":"Payload.Xml.ModelWithRenamedWrappedAndItemModelArray","payload.xml.ModelWithRenamedWrappedAndItemModelArrayValueClient":"Payload.Xml.ModelWithRenamedWrappedAndItemModelArrayValue","payload.xml.ModelWithRenamedWrappedModelArray":"Payload.Xml.ModelWithRenamedWrappedModelArray","payload.xml.ModelWithRenamedWrappedModelArrayValueClient":"Payload.Xml.ModelWithRenamedWrappedModelArrayValue","payload.xml.ModelWithSimpleArrays":"Payload.Xml.ModelWithSimpleArrays","payload.xml.ModelWithSimpleArraysValueClient":"Payload.Xml.ModelWithSimpleArraysValue","payload.xml.ModelWithText":"Payload.Xml.ModelWithText","payload.xml.ModelWithTextValueClient":"Payload.Xml.ModelWithTextValue","payload.xml.ModelWithUnwrappedArray":"Payload.Xml.ModelWithUnwrappedArray","payload.xml.ModelWithUnwrappedArrayValueClient":"Payload.Xml.ModelWithUnwrappedArrayValue","payload.xml.ModelWithUnwrappedModelArray":"Payload.Xml.ModelWithUnwrappedModelArray","payload.xml.ModelWithUnwrappedModelArrayValueClient":"Payload.Xml.ModelWithUnwrappedModelArrayValue","payload.xml.ModelWithWrappedPrimitiveCustomItemNames":"Payload.Xml.ModelWithWrappedPrimitiveCustomItemNames","payload.xml.ModelWithWrappedPrimitiveCustomItemNamesValueClient":"Payload.Xml.ModelWithWrappedPrimitiveCustomItemNamesValue","payload.xml.SimpleModel":"Payload.Xml.SimpleModel","payload.xml.SimpleModelValueClient":"Payload.Xml.SimpleModelValue","payload.xml.Status":"Payload.Xml.Status","payload.xml.XmlClientBuilder":"Payload.Xml","payload.xml.XmlErrorBody":"Payload.Xml.XmlErrorBody","payload.xml.XmlErrorValueClient":"Payload.Xml.XmlErrorValue"},"generatedFiles":["src/main/java/module-info.java","src/main/java/payload/xml/Author.java","src/main/java/payload/xml/Book.java","src/main/java/payload/xml/ModelWithArrayOfModel.java","src/main/java/payload/xml/ModelWithArrayOfModelValueClient.java","src/main/java/payload/xml/ModelWithAttributes.java","src/main/java/payload/xml/ModelWithAttributesValueClient.java","src/main/java/payload/xml/ModelWithDatetime.java","src/main/java/payload/xml/ModelWithDatetimeValueClient.java","src/main/java/payload/xml/ModelWithDictionary.java","src/main/java/payload/xml/ModelWithDictionaryValueClient.java","src/main/java/payload/xml/ModelWithEmptyArray.java","src/main/java/payload/xml/ModelWithEmptyArrayValueClient.java","src/main/java/payload/xml/ModelWithEncodedNames.java","src/main/java/payload/xml/ModelWithEncodedNamesValueClient.java","src/main/java/payload/xml/ModelWithEnum.java","src/main/java/payload/xml/ModelWithEnumValueClient.java","src/main/java/payload/xml/ModelWithNamespace.java","src/main/java/payload/xml/ModelWithNamespaceOnProperties.java","src/main/java/payload/xml/ModelWithNamespaceOnPropertiesValueClient.java","src/main/java/payload/xml/ModelWithNamespaceValueClient.java","src/main/java/payload/xml/ModelWithNestedModel.java","src/main/java/payload/xml/ModelWithNestedModelValueClient.java","src/main/java/payload/xml/ModelWithOptionalField.java","src/main/java/payload/xml/ModelWithOptionalFieldValueClient.java","src/main/java/payload/xml/ModelWithRenamedArrays.java","src/main/java/payload/xml/ModelWithRenamedArraysValueClient.java","src/main/java/payload/xml/ModelWithRenamedAttribute.java","src/main/java/payload/xml/ModelWithRenamedAttributeValueClient.java","src/main/java/payload/xml/ModelWithRenamedFields.java","src/main/java/payload/xml/ModelWithRenamedFieldsValueClient.java","src/main/java/payload/xml/ModelWithRenamedNestedModel.java","src/main/java/payload/xml/ModelWithRenamedNestedModelValueClient.java","src/main/java/payload/xml/ModelWithRenamedProperty.java","src/main/java/payload/xml/ModelWithRenamedPropertyValueClient.java","src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArray.java","src/main/java/payload/xml/ModelWithRenamedUnwrappedModelArrayValueClient.java","src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArray.java","src/main/java/payload/xml/ModelWithRenamedWrappedAndItemModelArrayValueClient.java","src/main/java/payload/xml/ModelWithRenamedWrappedModelArray.java","src/main/java/payload/xml/ModelWithRenamedWrappedModelArrayValueClient.java","src/main/java/payload/xml/ModelWithSimpleArrays.java","src/main/java/payload/xml/ModelWithSimpleArraysValueClient.java","src/main/java/payload/xml/ModelWithText.java","src/main/java/payload/xml/ModelWithTextValueClient.java","src/main/java/payload/xml/ModelWithUnwrappedArray.java","src/main/java/payload/xml/ModelWithUnwrappedArrayValueClient.java","src/main/java/payload/xml/ModelWithUnwrappedModelArray.java","src/main/java/payload/xml/ModelWithUnwrappedModelArrayValueClient.java","src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNames.java","src/main/java/payload/xml/ModelWithWrappedPrimitiveCustomItemNamesValueClient.java","src/main/java/payload/xml/SimpleModel.java","src/main/java/payload/xml/SimpleModelValueClient.java","src/main/java/payload/xml/Status.java","src/main/java/payload/xml/XmlClientBuilder.java","src/main/java/payload/xml/XmlErrorBody.java","src/main/java/payload/xml/XmlErrorValueClient.java","src/main/java/payload/xml/implementation/ModelWithArrayOfModelValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithAttributesValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithDatetimeValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithDictionaryValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithEmptyArrayValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithEncodedNamesValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithEnumValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithNamespaceOnPropertiesValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithNamespaceValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithNestedModelValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithOptionalFieldValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedArraysValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedAttributeValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedFieldsValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedNestedModelValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedPropertyValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedUnwrappedModelArrayValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedWrappedAndItemModelArrayValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithRenamedWrappedModelArrayValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithSimpleArraysValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithTextValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithUnwrappedArrayValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithUnwrappedModelArrayValuesImpl.java","src/main/java/payload/xml/implementation/ModelWithWrappedPrimitiveCustomItemNamesValuesImpl.java","src/main/java/payload/xml/implementation/SimpleModelValuesImpl.java","src/main/java/payload/xml/implementation/XmlClientImpl.java","src/main/java/payload/xml/implementation/XmlErrorValuesImpl.java","src/main/java/payload/xml/implementation/package-info.java","src/main/java/payload/xml/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/specialwords_metadata.json b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/specialwords_metadata.json index 39e2aff98d0..c711b843ef0 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/specialwords_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/main/resources/META-INF/specialwords_metadata.json @@ -1 +1 @@ -{"flavor":"generic","apiVersions":{},"crossLanguageDefinitions":{"specialwords.ModelPropertiesClient":"SpecialWords.ModelProperties","specialwords.ModelsClient":"SpecialWords.Models","specialwords.OperationsClient":"SpecialWords.Operations","specialwords.ParametersClient":"SpecialWords.Parameters","specialwords.SpecialWordsClientBuilder":"SpecialWords","specialwords.modelproperties.DictMethods":"SpecialWords.ModelProperties.DictMethods","specialwords.modelproperties.ModelWithList":"SpecialWords.ModelProperties.ModelWithList","specialwords.modelproperties.SameAsModel":"SpecialWords.ModelProperties.SameAsModel","specialwords.models.And":"SpecialWords.Models.and","specialwords.models.As":"SpecialWords.Models.as","specialwords.models.Assert":"SpecialWords.Models.assert","specialwords.models.Async":"SpecialWords.Models.async","specialwords.models.Await":"SpecialWords.Models.await","specialwords.models.Break":"SpecialWords.Models.break","specialwords.models.ClassModel":"SpecialWords.Models.class","specialwords.models.Constructor":"SpecialWords.Models.constructor","specialwords.models.Continue":"SpecialWords.Models.continue","specialwords.models.Def":"SpecialWords.Models.def","specialwords.models.Del":"SpecialWords.Models.del","specialwords.models.Elif":"SpecialWords.Models.elif","specialwords.models.Else":"SpecialWords.Models.else","specialwords.models.Except":"SpecialWords.Models.except","specialwords.models.Exec":"SpecialWords.Models.exec","specialwords.models.Finally":"SpecialWords.Models.finally","specialwords.models.For":"SpecialWords.Models.for","specialwords.models.From":"SpecialWords.Models.from","specialwords.models.Global":"SpecialWords.Models.global","specialwords.models.If":"SpecialWords.Models.if","specialwords.models.Import":"SpecialWords.Models.import","specialwords.models.In":"SpecialWords.Models.in","specialwords.models.Is":"SpecialWords.Models.is","specialwords.models.Lambda":"SpecialWords.Models.lambda","specialwords.models.Not":"SpecialWords.Models.not","specialwords.models.Or":"SpecialWords.Models.or","specialwords.models.Pass":"SpecialWords.Models.pass","specialwords.models.Raise":"SpecialWords.Models.raise","specialwords.models.Return":"SpecialWords.Models.return","specialwords.models.Try":"SpecialWords.Models.try","specialwords.models.While":"SpecialWords.Models.while","specialwords.models.With":"SpecialWords.Models.with","specialwords.models.Yield":"SpecialWords.Models.yield"},"generatedFiles":["src/main/java/module-info.java","src/main/java/specialwords/ModelPropertiesClient.java","src/main/java/specialwords/ModelsClient.java","src/main/java/specialwords/OperationsClient.java","src/main/java/specialwords/ParametersClient.java","src/main/java/specialwords/SpecialWordsClientBuilder.java","src/main/java/specialwords/implementation/ModelPropertiesImpl.java","src/main/java/specialwords/implementation/ModelsImpl.java","src/main/java/specialwords/implementation/OperationsImpl.java","src/main/java/specialwords/implementation/ParametersImpl.java","src/main/java/specialwords/implementation/SpecialWordsClientImpl.java","src/main/java/specialwords/implementation/package-info.java","src/main/java/specialwords/modelproperties/DictMethods.java","src/main/java/specialwords/modelproperties/ModelWithList.java","src/main/java/specialwords/modelproperties/SameAsModel.java","src/main/java/specialwords/modelproperties/package-info.java","src/main/java/specialwords/models/And.java","src/main/java/specialwords/models/As.java","src/main/java/specialwords/models/Assert.java","src/main/java/specialwords/models/Async.java","src/main/java/specialwords/models/Await.java","src/main/java/specialwords/models/Break.java","src/main/java/specialwords/models/ClassModel.java","src/main/java/specialwords/models/Constructor.java","src/main/java/specialwords/models/Continue.java","src/main/java/specialwords/models/Def.java","src/main/java/specialwords/models/Del.java","src/main/java/specialwords/models/Elif.java","src/main/java/specialwords/models/Else.java","src/main/java/specialwords/models/Except.java","src/main/java/specialwords/models/Exec.java","src/main/java/specialwords/models/Finally.java","src/main/java/specialwords/models/For.java","src/main/java/specialwords/models/From.java","src/main/java/specialwords/models/Global.java","src/main/java/specialwords/models/If.java","src/main/java/specialwords/models/Import.java","src/main/java/specialwords/models/In.java","src/main/java/specialwords/models/Is.java","src/main/java/specialwords/models/Lambda.java","src/main/java/specialwords/models/Not.java","src/main/java/specialwords/models/Or.java","src/main/java/specialwords/models/Pass.java","src/main/java/specialwords/models/Raise.java","src/main/java/specialwords/models/Return.java","src/main/java/specialwords/models/Try.java","src/main/java/specialwords/models/While.java","src/main/java/specialwords/models/With.java","src/main/java/specialwords/models/Yield.java","src/main/java/specialwords/models/package-info.java","src/main/java/specialwords/package-info.java"]} \ No newline at end of file +{"flavor":"generic","apiVersions":{},"crossLanguageDefinitions":{"specialwords.ExtensibleStringsClient":"SpecialWords.ExtensibleStrings","specialwords.ModelPropertiesClient":"SpecialWords.ModelProperties","specialwords.ModelsClient":"SpecialWords.Models","specialwords.OperationsClient":"SpecialWords.Operations","specialwords.ParametersClient":"SpecialWords.Parameters","specialwords.SpecialWordsClientBuilder":"SpecialWords","specialwords.extensiblestrings.ExtensibleString":"SpecialWords.ExtensibleStrings.ExtensibleString","specialwords.modelproperties.DictMethods":"SpecialWords.ModelProperties.DictMethods","specialwords.modelproperties.ModelWithList":"SpecialWords.ModelProperties.ModelWithList","specialwords.modelproperties.SameAsModel":"SpecialWords.ModelProperties.SameAsModel","specialwords.models.And":"SpecialWords.Models.and","specialwords.models.As":"SpecialWords.Models.as","specialwords.models.Assert":"SpecialWords.Models.assert","specialwords.models.Async":"SpecialWords.Models.async","specialwords.models.Await":"SpecialWords.Models.await","specialwords.models.Break":"SpecialWords.Models.break","specialwords.models.ClassModel":"SpecialWords.Models.class","specialwords.models.Constructor":"SpecialWords.Models.constructor","specialwords.models.Continue":"SpecialWords.Models.continue","specialwords.models.Def":"SpecialWords.Models.def","specialwords.models.Del":"SpecialWords.Models.del","specialwords.models.Elif":"SpecialWords.Models.elif","specialwords.models.Else":"SpecialWords.Models.else","specialwords.models.Except":"SpecialWords.Models.except","specialwords.models.Exec":"SpecialWords.Models.exec","specialwords.models.Finally":"SpecialWords.Models.finally","specialwords.models.For":"SpecialWords.Models.for","specialwords.models.From":"SpecialWords.Models.from","specialwords.models.Global":"SpecialWords.Models.global","specialwords.models.If":"SpecialWords.Models.if","specialwords.models.Import":"SpecialWords.Models.import","specialwords.models.In":"SpecialWords.Models.in","specialwords.models.Is":"SpecialWords.Models.is","specialwords.models.Lambda":"SpecialWords.Models.lambda","specialwords.models.Not":"SpecialWords.Models.not","specialwords.models.Or":"SpecialWords.Models.or","specialwords.models.Pass":"SpecialWords.Models.pass","specialwords.models.Raise":"SpecialWords.Models.raise","specialwords.models.Return":"SpecialWords.Models.return","specialwords.models.Try":"SpecialWords.Models.try","specialwords.models.While":"SpecialWords.Models.while","specialwords.models.With":"SpecialWords.Models.with","specialwords.models.Yield":"SpecialWords.Models.yield"},"generatedFiles":["src/main/java/module-info.java","src/main/java/specialwords/ExtensibleStringsClient.java","src/main/java/specialwords/ModelPropertiesClient.java","src/main/java/specialwords/ModelsClient.java","src/main/java/specialwords/OperationsClient.java","src/main/java/specialwords/ParametersClient.java","src/main/java/specialwords/SpecialWordsClientBuilder.java","src/main/java/specialwords/extensiblestrings/ExtensibleString.java","src/main/java/specialwords/extensiblestrings/package-info.java","src/main/java/specialwords/implementation/ExtensibleStringsImpl.java","src/main/java/specialwords/implementation/ModelPropertiesImpl.java","src/main/java/specialwords/implementation/ModelsImpl.java","src/main/java/specialwords/implementation/OperationsImpl.java","src/main/java/specialwords/implementation/ParametersImpl.java","src/main/java/specialwords/implementation/SpecialWordsClientImpl.java","src/main/java/specialwords/implementation/package-info.java","src/main/java/specialwords/modelproperties/DictMethods.java","src/main/java/specialwords/modelproperties/ModelWithList.java","src/main/java/specialwords/modelproperties/SameAsModel.java","src/main/java/specialwords/modelproperties/package-info.java","src/main/java/specialwords/models/And.java","src/main/java/specialwords/models/As.java","src/main/java/specialwords/models/Assert.java","src/main/java/specialwords/models/Async.java","src/main/java/specialwords/models/Await.java","src/main/java/specialwords/models/Break.java","src/main/java/specialwords/models/ClassModel.java","src/main/java/specialwords/models/Constructor.java","src/main/java/specialwords/models/Continue.java","src/main/java/specialwords/models/Def.java","src/main/java/specialwords/models/Del.java","src/main/java/specialwords/models/Elif.java","src/main/java/specialwords/models/Else.java","src/main/java/specialwords/models/Except.java","src/main/java/specialwords/models/Exec.java","src/main/java/specialwords/models/Finally.java","src/main/java/specialwords/models/For.java","src/main/java/specialwords/models/From.java","src/main/java/specialwords/models/Global.java","src/main/java/specialwords/models/If.java","src/main/java/specialwords/models/Import.java","src/main/java/specialwords/models/In.java","src/main/java/specialwords/models/Is.java","src/main/java/specialwords/models/Lambda.java","src/main/java/specialwords/models/Not.java","src/main/java/specialwords/models/Or.java","src/main/java/specialwords/models/Pass.java","src/main/java/specialwords/models/Raise.java","src/main/java/specialwords/models/Return.java","src/main/java/specialwords/models/Try.java","src/main/java/specialwords/models/While.java","src/main/java/specialwords/models/With.java","src/main/java/specialwords/models/Yield.java","src/main/java/specialwords/models/package-info.java","src/main/java/specialwords/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/encode/duration/EncodeDurationTests.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/encode/duration/EncodeDurationTests.java index 68d810d6e57..041109a5b23 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/encode/duration/EncodeDurationTests.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/encode/duration/EncodeDurationTests.java @@ -10,9 +10,11 @@ import encode.duration.property.FloatMillisecondsLargerUnitDurationProperty; import encode.duration.property.FloatSecondsDurationArrayProperty; import encode.duration.property.FloatSecondsDurationProperty; +import encode.duration.property.FloatSecondsLargerUnitDurationProperty; import encode.duration.property.Int32MillisecondsDurationProperty; import encode.duration.property.Int32MillisecondsLargerUnitDurationProperty; import encode.duration.property.Int32SecondsDurationProperty; +import encode.duration.property.Int32SecondsLargerUnitDurationProperty; import java.time.Duration; import java.util.Arrays; import java.util.List; @@ -43,8 +45,12 @@ public void testQuery() { queryClient.int32Seconds(SECOND36); + queryClient.int32SecondsLargerUnit(Duration.ofMinutes(2)); + // queryClient.iso8601(DAY40); + queryClient.floatSecondsLargerUnit(Duration.ofMinutes(2).plusSeconds(30)); + queryClient.int32SecondsArray(Arrays.asList(SECOND36, Duration.ofSeconds(47))); queryClient.int32Milliseconds(MILLIS36000); @@ -71,10 +77,14 @@ public void testHeader() { headerClient.int32Seconds(SECOND36); + headerClient.int32SecondsLargerUnit(Duration.ofMinutes(2)); + // headerClient.iso8601(DAY40); // headerClient.iso8601Array(Arrays.asList(DAY40, Duration.ofDays(50))); + headerClient.floatSecondsLargerUnit(Duration.ofMinutes(2).plusSeconds(30)); + headerClient.int32Milliseconds(MILLIS36000); headerClient.int32MillisecondsLargerUnit(Duration.ofMinutes(3)); @@ -102,6 +112,16 @@ public void testProperty() { Assertions.assertEquals(SECOND36, propertyClient.int32Seconds(new Int32SecondsDurationProperty(SECOND36)).getValue()); + Assertions.assertEquals(Duration.ofMinutes(2), + propertyClient.int32SecondsLargerUnit(new Int32SecondsLargerUnitDurationProperty(Duration.ofMinutes(2))) + .getValue()); + + Assertions.assertEquals(Duration.ofMinutes(2).plusSeconds(30), + propertyClient + .floatSecondsLargerUnit( + new FloatSecondsLargerUnitDurationProperty(Duration.ofMinutes(2).plusSeconds(30))) + .getValue()); + // propertyClient.iso8601(new ISO8601DurationProperty(DAY40)); List array = Arrays.asList(SECOND35, Duration.ofSeconds(46, 750_000_000)); diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/pageable/PageableTests.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/pageable/PageableTests.java index 25f50fc64af..a15bd8a6034 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/pageable/PageableTests.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/pageable/PageableTests.java @@ -9,6 +9,7 @@ import java.util.stream.Collectors; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import payload.pageable.serverdrivenpagination.alternateinitialverb.Filter; public class PageableTests { @@ -16,6 +17,8 @@ public class PageableTests { private final ServerDrivenPaginationClient client = new PageableClientBuilder().buildServerDrivenPaginationClient(); private final ServerDrivenPaginationContinuationTokenClient tokenClient = new PageableClientBuilder().buildServerDrivenPaginationContinuationTokenClient(); + private final ServerDrivenPaginationAlternateInitialVerbClient alternateInitialVerbClient + = new PageableClientBuilder().buildServerDrivenPaginationAlternateInitialVerbClient(); @Test public void testNextLink() { @@ -101,4 +104,13 @@ public void testLinkString() { Assertions.assertEquals(List.of("1", "2", "3", "4"), pagedIterable.stream().map(Pet::getId).collect(Collectors.toList())); } + + @Test + public void testAlternateInitialVerbPost() { + PagedIterable pagedIterable = alternateInitialVerbClient.post(new Filter("foo eq bar")); + + Assertions.assertEquals(4, pagedIterable.stream().count()); + Assertions.assertEquals(List.of("1", "2", "3", "4"), + pagedIterable.stream().map(Pet::getId).collect(Collectors.toList())); + } } diff --git a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/xml/XmlTests.java b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/xml/XmlTests.java index 6b650d6be8b..196e514ca3a 100644 --- a/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/xml/XmlTests.java +++ b/packages/http-client-java/generator/http-client-generator-clientcore-test/src/test/java/payload/xml/XmlTests.java @@ -3,10 +3,14 @@ package payload.xml; +import io.clientcore.core.http.models.HttpResponseException; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; import java.util.Collections; import java.util.List; import java.util.Map; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; public final class XmlTests { @@ -148,4 +152,183 @@ public void testModelWithEncodedNames() { Assertions.assertEquals(123, model.getModelData().getAge()); Assertions.assertEquals(List.of("red", "green", "blue"), model.getColors()); } + + @Test + public void testModelWithEnum() { + ModelWithEnumValueClient client = new XmlClientBuilder().buildModelWithEnumValueClient(); + + client.put(new ModelWithEnum(Status.SUCCESS)); + + ModelWithEnum model = client.get(); + Assertions.assertEquals(Status.SUCCESS, model.getStatus()); + } + + @Test + public void testModelWithDatetime() { + ModelWithDatetimeValueClient client = new XmlClientBuilder().buildModelWithDatetimeValueClient(); + + OffsetDateTime rfc3339 = OffsetDateTime.of(2022, 8, 26, 18, 38, 0, 0, ZoneOffset.UTC); + OffsetDateTime rfc7231 = OffsetDateTime.of(2022, 8, 26, 14, 38, 0, 0, ZoneOffset.UTC); + + // UndefinedParserError: No parser and no file path given, couldn't infer a parser +// client.put(new ModelWithDatetime(rfc3339, rfc7231)); + + ModelWithDatetime model = client.get(); + Assertions.assertEquals(rfc3339, model.getRfc3339()); + Assertions.assertEquals(rfc7231, model.getRfc7231()); + } + + @Test + public void testXmlErrorValue() { + XmlErrorValueClient client = new XmlClientBuilder().buildXmlErrorValueClient(); + + HttpResponseException exception = Assertions.assertThrows(HttpResponseException.class, client::get); + XmlErrorBody errorBody = (XmlErrorBody) exception.getValue(); + Assertions.assertEquals("Something went wrong", errorBody.getMessage()); + Assertions.assertEquals(400, errorBody.getCode()); + } + + @Test + public void testModelWithRenamedProperty() { + ModelWithRenamedPropertyValueClient client = new XmlClientBuilder().buildModelWithRenamedPropertyValueClient(); + + client.put(new ModelWithRenamedProperty("foo", "bar")); + + ModelWithRenamedProperty model = client.get(); + Assertions.assertEquals("foo", model.getTitle()); + Assertions.assertEquals("bar", model.getAuthor()); + } + + @Test + public void testModelWithNestedModel() { + ModelWithNestedModelValueClient client = new XmlClientBuilder().buildModelWithNestedModelValueClient(); + + client.put(new ModelWithNestedModel(new SimpleModel("foo", 123))); + + ModelWithNestedModel model = client.get(); + Assertions.assertEquals("foo", model.getNested().getName()); + Assertions.assertEquals(123, model.getNested().getAge()); + } + + @Test + public void testModelWithRenamedNestedModel() { + ModelWithRenamedNestedModelValueClient client + = new XmlClientBuilder().buildModelWithRenamedNestedModelValueClient(); + + client.put(new ModelWithRenamedNestedModel(new Author("foo"))); + + ModelWithRenamedNestedModel model = client.get(); + Assertions.assertEquals("foo", model.getAuthor().getName()); + } + + @Test + public void testModelWithWrappedPrimitiveCustomItemNames() { + ModelWithWrappedPrimitiveCustomItemNamesValueClient client + = new XmlClientBuilder().buildModelWithWrappedPrimitiveCustomItemNamesValueClient(); + + client.put(new ModelWithWrappedPrimitiveCustomItemNames(List.of("fiction", "classic"))); + + ModelWithWrappedPrimitiveCustomItemNames model = client.get(); + Assertions.assertEquals(List.of("fiction", "classic"), model.getTags()); + } + + @Test + public void testModelWithUnwrappedModelArray() { + ModelWithUnwrappedModelArrayValueClient client + = new XmlClientBuilder().buildModelWithUnwrappedModelArrayValueClient(); + + client.put(new ModelWithUnwrappedModelArray(List.of(new SimpleModel("foo", 123), new SimpleModel("bar", 456)))); + + ModelWithUnwrappedModelArray model = client.get(); + Assertions.assertEquals(2, model.getItems().size()); + Assertions.assertEquals("foo", model.getItems().get(0).getName()); + Assertions.assertEquals(123, model.getItems().get(0).getAge()); + Assertions.assertEquals("bar", model.getItems().get(1).getName()); + Assertions.assertEquals(456, model.getItems().get(1).getAge()); + } + + @Test + public void testModelWithRenamedWrappedModelArray() { + ModelWithRenamedWrappedModelArrayValueClient client + = new XmlClientBuilder().buildModelWithRenamedWrappedModelArrayValueClient(); + + client.put( + new ModelWithRenamedWrappedModelArray(List.of(new SimpleModel("foo", 123), new SimpleModel("bar", 456)))); + + ModelWithRenamedWrappedModelArray model = client.get(); + Assertions.assertEquals(2, model.getItems().size()); + Assertions.assertEquals("foo", model.getItems().get(0).getName()); + Assertions.assertEquals(123, model.getItems().get(0).getAge()); + Assertions.assertEquals("bar", model.getItems().get(1).getName()); + Assertions.assertEquals(456, model.getItems().get(1).getAge()); + } + + @Test + public void testModelWithRenamedUnwrappedModelArray() { + ModelWithRenamedUnwrappedModelArrayValueClient client + = new XmlClientBuilder().buildModelWithRenamedUnwrappedModelArrayValueClient(); + + client.put( + new ModelWithRenamedUnwrappedModelArray(List.of(new SimpleModel("foo", 123), new SimpleModel("bar", 456)))); + + ModelWithRenamedUnwrappedModelArray model = client.get(); + Assertions.assertEquals(2, model.getItems().size()); + Assertions.assertEquals("foo", model.getItems().get(0).getName()); + Assertions.assertEquals(123, model.getItems().get(0).getAge()); + Assertions.assertEquals("bar", model.getItems().get(1).getName()); + Assertions.assertEquals(456, model.getItems().get(1).getAge()); + } + + @Test + public void testModelWithRenamedWrappedAndItemModelArray() { + ModelWithRenamedWrappedAndItemModelArrayValueClient client + = new XmlClientBuilder().buildModelWithRenamedWrappedAndItemModelArrayValueClient(); + + client.put(new ModelWithRenamedWrappedAndItemModelArray( + List.of(new Book("The Great Gatsby"), new Book("Les Miserables")))); + + ModelWithRenamedWrappedAndItemModelArray model = client.get(); + Assertions.assertEquals(2, model.getBooks().size()); + Assertions.assertEquals("The Great Gatsby", model.getBooks().get(0).getTitle()); + Assertions.assertEquals("Les Miserables", model.getBooks().get(1).getTitle()); + } + + @Test + public void testModelWithRenamedAttribute() { + ModelWithRenamedAttributeValueClient client + = new XmlClientBuilder().buildModelWithRenamedAttributeValueClient(); + + client.put(new ModelWithRenamedAttribute(123, "The Great Gatsby", "F. Scott Fitzgerald")); + + ModelWithRenamedAttribute model = client.get(); + Assertions.assertEquals(123, model.getId()); + Assertions.assertEquals("The Great Gatsby", model.getTitle()); + Assertions.assertEquals("F. Scott Fitzgerald", model.getAuthor()); + } + + @Disabled("namespace mismatch") + @Test + public void testModelWithNamespace() { + ModelWithNamespaceValueClient client = new XmlClientBuilder().buildModelWithNamespaceValueClient(); + + client.put(new ModelWithNamespace(123, "The Great Gatsby")); + + ModelWithNamespace model = client.get(); + Assertions.assertEquals(123, model.getId()); + Assertions.assertEquals("The Great Gatsby", model.getTitle()); + } + + @Disabled("namespace mismatch") + @Test + public void testModelWithNamespaceOnProperties() { + ModelWithNamespaceOnPropertiesValueClient client + = new XmlClientBuilder().buildModelWithNamespaceOnPropertiesValueClient(); + + client.put(new ModelWithNamespaceOnProperties(123, "The Great Gatsby", "F. Scott Fitzgerald")); + + ModelWithNamespaceOnProperties model = client.get(); + Assertions.assertEquals(123, model.getId()); + Assertions.assertEquals("The Great Gatsby", model.getTitle()); + Assertions.assertEquals("F. Scott Fitzgerald", model.getAuthor()); + } } diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/XmlSerializationFormat.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/XmlSerializationFormat.java index 14de1b8b937..a041feb4265 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/XmlSerializationFormat.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/extension/model/codemodel/XmlSerializationFormat.java @@ -15,6 +15,9 @@ public class XmlSerializationFormat extends SerializationFormat { private boolean attribute; private boolean wrapped; private boolean text; + private String itemsName; + private String itemsNamespace; + private String itemsPrefix; /** * Creates a new instance of the XmlSerializationFormat class. @@ -130,17 +133,73 @@ public void setText(boolean text) { this.text = text; } + /** + * Gets the name of the XML items element. + * + * @return The name of the XML items element. + */ + public String getItemsName() { + return itemsName; + } + + /** + * Sets the name of the XML items element. + * + * @param itemsName The name of the XML items element. + */ + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + /** + * Gets the namespace of the XML items element. + * + * @return The namespace of the XML items element. + */ + public String getItemsNamespace() { + return itemsNamespace; + } + + /** + * Sets the namespace of the XML items element. + * + * @param itemsNamespace The namespace of the XML items element. + */ + public void setItemsNamespace(String itemsNamespace) { + this.itemsNamespace = itemsNamespace; + } + + /** + * Gets the prefix of the XML items element. + * + * @return The prefix of the XML items element. + */ + public String getItemsPrefix() { + return itemsPrefix; + } + + /** + * Sets the prefix of the XML items element. + * + * @param itemsPrefix The prefix of the XML items element. + */ + public void setItemsPrefix(String itemsPrefix) { + this.itemsPrefix = itemsPrefix; + } + @Override public String toString() { return XmlSerializationFormat.class.getName() + "@" + Integer.toHexString(System.identityHashCode(this)) + "[name=" + Objects.toString(name, "") + ",namespace=" + Objects.toString(namespace, "") + ",prefix=" + Objects.toString(prefix, "") + ",attribute=" + attribute + ",wrapped=" + wrapped - + ",text=" + text + "]"; + + ",itemsName=" + Objects.toString(itemsName, "") + ",itemsNamespace=" + + Objects.toString(itemsNamespace, "") + ",itemsPrefix=" + Objects.toString(itemsPrefix, "") + + "]"; } @Override public int hashCode() { - return Objects.hash(name, namespace, attribute, wrapped, prefix, text); + return Objects.hash(name, namespace, attribute, wrapped, prefix, text, itemsName, itemsNamespace, itemsPrefix); } @Override @@ -158,6 +217,9 @@ public boolean equals(Object other) { && attribute == rhs.attribute && wrapped == rhs.wrapped && Objects.equals(prefix, rhs.prefix) - && text == rhs.text; + && text == rhs.text + && Objects.equals(itemsName, rhs.itemsName) + && Objects.equals(itemsNamespace, rhs.itemsNamespace) + && Objects.equals(itemsPrefix, rhs.itemsPrefix); } } diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java index 44484d50143..ae99cd0c88e 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ModelPropertyMapper.java @@ -194,11 +194,17 @@ public ClientModelProperty map(Property property, boolean mutableAsOptional) { Schema autoRestPropertyModelType = property.getSchema(); if (autoRestPropertyModelType instanceof ArraySchema) { ArraySchema sequence = (ArraySchema) autoRestPropertyModelType; - if (property.getSerialization() != null && !isXmlWrapper) { + if (property.getSerialization() != null) { // TypeSpec sets "serialization" to property - builder.xmlListElementName(property.getSerialization().getXml().getName()); - builder.xmlListElementNamespace(property.getSerialization().getXml().getNamespace()); - builder.xmlListElementPrefix(property.getSerialization().getXml().getPrefix()); + if (isXmlWrapper) { + builder.xmlListElementName(property.getSerialization().getXml().getItemsName()); + builder.xmlListElementNamespace(property.getSerialization().getXml().getItemsNamespace()); + builder.xmlListElementPrefix(property.getSerialization().getXml().getItemsPrefix()); + } else { + builder.xmlListElementName(property.getSerialization().getXml().getName()); + builder.xmlListElementNamespace(property.getSerialization().getXml().getNamespace()); + builder.xmlListElementPrefix(property.getSerialization().getXml().getPrefix()); + } } else if (sequence.getElementType().getSerialization() != null && sequence.getElementType().getSerialization().getXml() != null && sequence.getElementType().getSerialization().getXml().getName() != null) { diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ObjectMapper.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ObjectMapper.java index 67e19dae5fc..3fc971fdaa6 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ObjectMapper.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ObjectMapper.java @@ -60,7 +60,7 @@ private ClassType createClassType(ObjectSchema compositeType) { && isInternalModel(compositeType)) { // internal type is not exposed to user packageSuffixes = new String[] { settings.getImplementationSubpackage(), settings.getModelsSubpackage() }; - } else if (isPageModel(compositeType)) { + } else if (isPagedModel(compositeType) && isChildrenAllInternal(compositeType)) { // put class of Page<> type to implementation package // for DPG from TypeSpec, these are not generated to class @@ -137,10 +137,26 @@ protected boolean isInnerModel(ObjectSchema compositeType) { * @param compositeType object type * @return whether the type is a Page model. */ - private static boolean isPageModel(ObjectSchema compositeType) { + private static boolean isPagedModel(ObjectSchema compositeType) { return compositeType.getUsage() != null && compositeType.getUsage().contains(SchemaContext.PAGED); } + private static boolean isChildrenAllInternal(ObjectSchema compositeType) { + // If we move model to implementation package, we need to make sure it does not have child that need to be + // public + boolean ret = true; + if (compositeType.getChildren() != null && !CoreUtils.isNullOrEmpty(compositeType.getChildren().getAll())) { + ret = compositeType.getChildren() + .getAll() + .stream() + .noneMatch(s -> (s instanceof ObjectSchema) + && !isPagedModel(((ObjectSchema) s)) + && (((ObjectSchema) s).getUsage() != null + && ((ObjectSchema) s).getUsage().contains(SchemaContext.PUBLIC))); + } + return ret; + } + private static boolean isInternalModel(ObjectSchema compositeType) { return compositeType.getUsage() != null && compositeType.getUsage().contains(SchemaContext.INTERNAL); } diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java index 12ad4d60734..49f72130dcc 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/template/StreamSerializationModelTemplate.java @@ -2506,16 +2506,50 @@ private JavaIfBlock handleXmlPropertyDeserialization(ClientModelProperty propert private void generateXmlDeserializationLogic(JavaBlock deserializationBlock, ClientModelProperty property, boolean fromSuper) { IType wireType = property.getWireType(); + IType clientType = property.getClientType(); // Attempt to determine whether the wire type is simple deserialization. // This is primitives, boxed primitives, a small set of string based models, and other ClientModels. String simpleDeserialization = getSimpleXmlDeserialization(wireType, property.getXmlName(), null, null, false); if (simpleDeserialization != null) { - if (propertiesManager.hasConstructorArguments()) { - deserializationBlock.line(property.getName() + " = " + simpleDeserialization + ";"); + boolean convertToClientType = (clientType != wireType) + && (includePropertyInConstructor(property, settings) + || (fromSuper && !ClientModelUtil.readOnlyNotInCtor(model, property, settings))); + BiConsumer simpleDeserializationConsumer = (logic, block) -> { + if (!propertiesManager.hasConstructorArguments()) { + handleSettingDeserializedValue(deserializationBlock, property, logic, fromSuper); + } else { + deserializationBlock.line(property.getName() + " = " + logic + ";"); + } + }; + + if (convertToClientType) { + // If the wire type is nullable don't attempt to call the convert to client type until it's known + // that + // a value was deserialized. This protects against cases such as UnixTimeLong where the wire type is + // Long and the client type of OffsetDateTime. This is converted using Instant.ofEpochMilli(long) + // which + // would result in a null if the Long is null, which is already guarded using + // reader.readNullable(nonNullReader -> Instant.ofEpochMillis(nonNullReader.readLong())) but this + // itself + // returns null which would have been passed to OffsetDateTime.ofInstant(Instant, ZoneId) which + // would + // have thrown a NullPointerException. + if (wireType.isNullable()) { + // Check if the property is required, if so use a holder name as there will be an existing + // holder + // variable for the value that will be used in the constructor. + String holderName = property.getName() + "Holder"; + deserializationBlock.line(wireType + " " + holderName + " = " + simpleDeserialization + ";"); + deserializationBlock.ifBlock(holderName + " != null", ifBlock -> simpleDeserializationConsumer + .accept(wireType.convertToClientType(holderName), ifBlock)); + } else { + simpleDeserializationConsumer.accept(wireType.convertToClientType(simpleDeserialization), + deserializationBlock); + } } else { - handleSettingDeserializedValue(deserializationBlock, property, simpleDeserialization, fromSuper); + simpleDeserializationConsumer.accept(simpleDeserialization, deserializationBlock); } } else if (wireType instanceof IterableType) { IType elementType = ((IterableType) wireType).getElementType(); diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/WireTypeClientTypeConverter.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/WireTypeClientTypeConverter.java index 4a20b1547cc..d80a8fa043b 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/WireTypeClientTypeConverter.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/WireTypeClientTypeConverter.java @@ -1,7 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. + package com.microsoft.typespec.http.client.generator.core.util; +import com.microsoft.typespec.http.client.generator.core.Javagen; +import com.microsoft.typespec.http.client.generator.core.extension.plugin.PluginLogger; import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ClassType; import com.microsoft.typespec.http.client.generator.core.model.clientmodel.IType; import com.microsoft.typespec.http.client.generator.core.model.clientmodel.PrimitiveType; @@ -10,12 +13,16 @@ import java.time.Duration; import java.time.Instant; import java.time.ZoneOffset; +import org.slf4j.Logger; /** * Class to group conversion logic between client type and wire type. */ public class WireTypeClientTypeConverter { + private final static Logger LOGGER + = new PluginLogger(Javagen.getPluginInstance(), WireTypeClientTypeConverter.class); + private WireTypeClientTypeConverter() { } @@ -158,20 +165,27 @@ public static String convertToWireTypeExpression(PrimitiveType clientType, Strin */ public static String convertLiteralToClientValue(IType wireType, String literalInWireType) { String literalValue = literalInWireType; - if (wireType == ClassType.DATE_TIME_RFC_1123) { - literalValue = new DateTimeRfc1123(literalValue).getDateTime().toString(); - } else if (wireType == ClassType.BASE_64_URL) { - literalValue = new Base64Uri(literalValue).toString(); - } else if (wireType.asNullable() == ClassType.UNIX_TIME_LONG) { - literalValue = Instant.ofEpochSecond(Long.parseLong(literalValue)).atOffset(ZoneOffset.UTC).toString(); - } else if (wireType.asNullable() == ClassType.DURATION_LONG) { - literalValue = Duration.ofSeconds(Long.parseLong(literalValue)).toString(); - } else if (wireType.asNullable() == ClassType.DURATION_DOUBLE) { - literalValue = Duration.ofNanos((long) (Double.parseDouble(literalInWireType) * 1000_000_000L)).toString(); - } else if (wireType.asNullable() == ClassType.DURATION_MILLISECONDS_LONG) { - literalValue = Duration.ofMillis(Long.parseLong(literalValue)).toString(); - } else if (wireType.asNullable() == ClassType.DURATION_MILLISECONDS_DOUBLE) { - literalValue = Duration.ofNanos((long) (Double.parseDouble(literalInWireType) * 1000_000L)).toString(); + try { + if (wireType == ClassType.DATE_TIME_RFC_1123) { + literalValue = new DateTimeRfc1123(literalValue).getDateTime().toString(); + } else if (wireType == ClassType.BASE_64_URL) { + literalValue = new Base64Uri(literalValue).toString(); + } else if (wireType.asNullable() == ClassType.UNIX_TIME_LONG) { + literalValue = Instant.ofEpochSecond(Long.parseLong(literalValue)).atOffset(ZoneOffset.UTC).toString(); + } else if (wireType.asNullable() == ClassType.DURATION_LONG) { + literalValue = Duration.ofSeconds(Long.parseLong(literalValue)).toString(); + } else if (wireType.asNullable() == ClassType.DURATION_DOUBLE) { + literalValue + = Duration.ofNanos((long) (Double.parseDouble(literalInWireType) * 1000_000_000L)).toString(); + } else if (wireType.asNullable() == ClassType.DURATION_MILLISECONDS_LONG) { + literalValue = Duration.ofMillis(Long.parseLong(literalValue)).toString(); + } else if (wireType.asNullable() == ClassType.DURATION_MILLISECONDS_DOUBLE) { + literalValue = Duration.ofNanos((long) (Double.parseDouble(literalInWireType) * 1000_000L)).toString(); + } + } catch (RuntimeException e) { + LOGGER.warn( + "Failed to convert literal value '{}' from wire type to client type. Return the original literal value. Error: {}", + literalInWireType, e.getMessage()); } return literalValue; } diff --git a/packages/http-client-java/generator/http-client-generator-test/Generate.ps1 b/packages/http-client-java/generator/http-client-generator-test/Generate.ps1 index 04565c86e76..24c692adc8a 100644 --- a/packages/http-client-java/generator/http-client-generator-test/Generate.ps1 +++ b/packages/http-client-java/generator/http-client-generator-test/Generate.ps1 @@ -201,7 +201,6 @@ try { $specFiles = Get-ChildItem ./specs -Include "main.tsp","old.tsp" -File -Recurse # ensure multi-service client specs are processed even though they do not match the default filter $specFiles += Get-Item (Join-Path ./specs "azure/resource-manager/multi-service/client.tsp") - $specFiles += Get-Item (Join-Path ./specs "azure/resource-manager/multi-service-older-versions/client.tsp") $specFiles += Get-Item (Join-Path ./specs "azure/resource-manager/multi-service-shared-models/client.tsp") $job = $specFiles | ForEach-Object -Parallel $generateScript -ThrottleLimit $Parallelization -AsJob diff --git a/packages/http-client-java/generator/http-client-generator-test/package.json b/packages/http-client-java/generator/http-client-generator-test/package.json index 3dc4a93c988..215b82517ac 100644 --- a/packages/http-client-java/generator/http-client-generator-test/package.json +++ b/packages/http-client-java/generator/http-client-generator-test/package.json @@ -12,27 +12,27 @@ "spector-stop": "tsp-spector server stop" }, "dependencies": { - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/spec-api": "0.1.0-alpha.12", - "@typespec/http-specs": "0.1.0-alpha.32", - "@azure-tools/azure-http-specs": "0.1.0-alpha.37", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/spec-api": "0.1.0-alpha.13", + "@typespec/http-specs": "0.1.0-alpha.35", + "@azure-tools/azure-http-specs": "0.1.0-alpha.38", "@typespec/http-client-java": "file:../../typespec-http-client-java-0.7.0.tgz", "@typespec/http-client-java-tests": "file:" }, "overrides": { - "@typespec/compiler": "1.9.0", - "@typespec/http": "1.9.1", - "@typespec/rest": "0.79.0", - "@typespec/versioning": "0.79.0", - "@typespec/openapi": "1.9.0", - "@typespec/xml": "0.79.0", - "@typespec/events": "0.79.0", - "@typespec/sse": "0.79.0", - "@typespec/streams": "0.79.0", - "@azure-tools/typespec-azure-core": "0.65.0", - "@azure-tools/typespec-client-generator-core": "0.65.4", - "@azure-tools/typespec-azure-resource-manager": "0.65.0", - "@azure-tools/typespec-autorest": "0.65.0" + "@typespec/compiler": "1.10.0", + "@typespec/http": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/openapi": "1.10.0", + "@typespec/xml": "0.80.0", + "@typespec/events": "0.80.0", + "@typespec/sse": "0.80.0", + "@typespec/streams": "0.80.0", + "@azure-tools/typespec-azure-core": "0.66.1", + "@azure-tools/typespec-client-generator-core": "0.66.4", + "@azure-tools/typespec-azure-resource-manager": "0.66.1", + "@azure-tools/typespec-autorest": "0.66.2" }, "private": true } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java index 199262de6a5..d8b5cb4bfdf 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.HeaderParamClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.HeaderParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java similarity index 94% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java index 89f1ea9ee4c..15970b4e195 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.HeaderParamClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.HeaderParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java index 5f08efc49c8..9814ad550b0 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.HeaderParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.HeaderParamClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -51,7 +51,7 @@ public final class HeaderParamClientBuilder implements HttpTrait PROPERTIES - = CoreUtils.getProperties("_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties"); + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-defaultclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java index bd7a724adc1..af1808087a7 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MixedParamsClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.WithBodyRequest; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MixedParamsClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.WithBodyRequest; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java similarity index 94% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java index f0ec7dbdac1..d67b25cee48 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MixedParamsClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.WithBodyRequest; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MixedParamsClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.WithBodyRequest; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java index 74619a2b586..fc1da88f18e 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MixedParamsClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MixedParamsClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -51,7 +51,7 @@ public final class MixedParamsClientBuilder implements HttpTrait PROPERTIES - = CoreUtils.getProperties("_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties"); + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-defaultclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java index 87e44896097..675066ddd6d 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MultipleParamsClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MultipleParamsClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java similarity index 94% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java index 3135bfd1966..6957056c7ed 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MultipleParamsClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MultipleParamsClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java index 6f4fe5840fc..81f14de1ff6 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MultipleParamsClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.MultipleParamsClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -51,7 +51,7 @@ public final class MultipleParamsClientBuilder implements HttpTrait PROPERTIES - = CoreUtils.getProperties("_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties"); + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-defaultclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java index 15dc398995f..d7c603cfce9 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.ParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.ParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java index fb4db9e8c8b..444287dcb98 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.ParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.ParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java index e458847dc15..cccfce5755c 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.ParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.ParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -51,7 +51,7 @@ public final class ParamAliasClientBuilder implements HttpTrait PROPERTIES - = CoreUtils.getProperties("_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties"); + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-defaultclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java index a306c54dea1..fffdd32a35b 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.PathParamClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.PathParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java index cb9a4566244..0b44c5793a1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.PathParamClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.PathParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java index 6293f96269d..acc4851dbdc 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.PathParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.PathParamClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -51,7 +51,7 @@ public final class PathParamClientBuilder implements HttpTrait PROPERTIES - = CoreUtils.getProperties("_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties"); + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-defaultclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java index 5612353885f..c80b04f8fc6 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.QueryParamClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.QueryParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java index f37d717bc17..79de18b60ad 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.QueryParamClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.QueryParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java index 88e06209f2c..87f5155eaae 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation.QueryParamClientImpl; +import azure.clientgenerator.core.clientinitialization.defaultclient.implementation.QueryParamClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -51,7 +51,7 @@ public final class QueryParamClientBuilder implements HttpTrait PROPERTIES - = CoreUtils.getProperties("_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties"); + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-defaultclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java index 77e8bce8fa1..9d71938ee8d 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation; +package azure.clientgenerator.core.clientinitialization.defaultclient.implementation; import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java index 271682bc702..cc215cba914 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation; +package azure.clientgenerator.core.clientinitialization.defaultclient.implementation; import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java index 5481937e75e..5adf51cb5e8 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation; +package azure.clientgenerator.core.clientinitialization.defaultclient.implementation; import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java index 4ac7c32b572..ac9e42b8f1c 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation; +package azure.clientgenerator.core.clientinitialization.defaultclient.implementation; import com.azure.core.annotation.ExpectedResponses; import com.azure.core.annotation.Get; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java index 3da147ba50e..1498d32b3b7 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation; +package azure.clientgenerator.core.clientinitialization.defaultclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java index 98e28569e3f..87fd2cb5929 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation; +package azure.clientgenerator.core.clientinitialization.defaultclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java similarity index 80% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java index 95c5a227936..146f7a467e3 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.implementation; +package azure.clientgenerator.core.clientinitialization.defaultclient.implementation; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java similarity index 98% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java index d89c3c1bb2c..4c721e41d6f 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models; +package azure.clientgenerator.core.clientinitialization.defaultclient.models; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java index 850a0a709a5..3ce2d74c959 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models; +package azure.clientgenerator.core.clientinitialization.defaultclient.models; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java index f90a86e77ac..f884b7ea4e5 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models; +package azure.clientgenerator.core.clientinitialization.defaultclient.models; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java similarity index 81% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java index 029a6aa22c0..1135d1c1bcb 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models; +package azure.clientgenerator.core.clientinitialization.defaultclient.models; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java similarity index 82% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java index 59ca2121be6..e65528b6e7a 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient; +package azure.clientgenerator.core.clientinitialization.defaultclient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java index db261f11fba..2779ce61955 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithHeaderClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithHeaderClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java index 1c3b8655840..4ba0a122bba 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithHeaderClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithHeaderClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java index 409a296c736..e4e1a569c57 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithHeaderClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithHeaderClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -52,8 +52,8 @@ public final class IndividuallyNestedWithHeaderClientBuilder implements private static final String SDK_VERSION = "version"; @Generated - private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java index 53c3cee677f..b7da75aac04 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMixedClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMixedClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java index ef09cdbfc1b..653331dd8ed 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMixedClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMixedClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java index 33cef9e20a8..9d3eb0b41ff 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMixedClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMixedClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -52,8 +52,8 @@ public final class IndividuallyNestedWithMixedClientBuilder implements private static final String SDK_VERSION = "version"; @Generated - private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java index 2a6bc41f29c..1bd3bee141b 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMultipleClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMultipleClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java index 87001b2643b..f41ef644dd0 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMultipleClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMultipleClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java index 903427389f8..6fa0ff162ef 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMultipleClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithMultipleClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -53,8 +53,8 @@ public final class IndividuallyNestedWithMultipleClientBuilder private static final String SDK_VERSION = "version"; @Generated - private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java index 3af980f242a..8b571536b33 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java index 2ca0e3612ab..5b1c79b4cfd 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java index f79386da364..08bbf80e0cd 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -55,8 +55,8 @@ public final class IndividuallyNestedWithParamAliasClientBuilder private static final String SDK_VERSION = "version"; @Generated - private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java index de5fabcb75f..2395fb1d54d 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithPathClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithPathClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java index 164c42056a1..1a628e35125 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithPathClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithPathClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java index 717cfd3c82e..a6e6ecf693c 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithPathClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithPathClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -52,8 +52,8 @@ public final class IndividuallyNestedWithPathClientBuilder implements private static final String SDK_VERSION = "version"; @Generated - private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java index 411ab4f0400..4687e43da90 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithQueryClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithQueryClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java index f70932d97ce..386620bb3fc 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithQueryClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithQueryClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java index d6fb4e21a36..b9bf96e40a2 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithQueryClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyclient.implementation.IndividuallyNestedWithQueryClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -52,8 +52,8 @@ public final class IndividuallyNestedWithQueryClientBuilder implements private static final String SDK_VERSION = "version"; @Generated - private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); + private static final Map PROPERTIES + = CoreUtils.getProperties("azure-clientgenerator-core-clientinitialization-individuallyclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java index 5e3f94b1cff..a066012e6ac 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java index dfba5ce4572..bfd2b9633e9 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java index f310a4e56cf..73f3a63e34b 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java index 6d43e497941..b8b596731d5 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; import com.azure.core.annotation.ExpectedResponses; import com.azure.core.annotation.Get; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java index c82909a98ce..f94075e66e8 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java index 5704371b6f2..64794f5a5cc 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java similarity index 79% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java index 5e9e3e01216..eeeb569ccca 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyclient.implementation; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java similarity index 98% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java index 74ff6516b86..110e907c82f 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.models; +package azure.clientgenerator.core.clientinitialization.individuallyclient.models; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java similarity index 80% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java index 34507e7f5a6..251083ae64e 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.models; +package azure.clientgenerator.core.clientinitialization.individuallyclient.models; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java similarity index 81% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java index 59b682bced7..9a5bb32001d 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient; +package azure.clientgenerator.core.clientinitialization.individuallyclient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java similarity index 94% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java index 2d98f370747..fb6bcc58351 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java similarity index 94% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java index d9cc3676476..29d74a5138e 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java index 05527a9fa97..295021efe09 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -51,7 +51,7 @@ public final class IndividuallyParentClientBuilder implements HttpTrait PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); + .getProperties("azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java index a40dc2c42e3..903abb7c7bf 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithHeaderClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithHeaderClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java index 9d4b1b57268..67beeb628e9 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithHeaderClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithHeaderClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java index 79ca34e701a..01c34b1003f 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithHeaderClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithHeaderClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -56,7 +56,7 @@ public final class IndividuallyParentNestedWithHeaderClientBuilder @Generated private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); + .getProperties("azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java index 4a58ed6c184..acde1bf2542 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMixedClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMixedClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java index a3937047c2c..5525e0d8ab6 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMixedClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMixedClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java index 32ea151be29..79ecfc6729c 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMixedClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMixedClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -56,7 +56,7 @@ public final class IndividuallyParentNestedWithMixedClientBuilder @Generated private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); + .getProperties("azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java index 56f0f11ec20..ea28f37e709 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMultipleClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMultipleClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java index 0d5ea371b8c..bcd04988ada 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMultipleClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMultipleClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java index d20811188c1..c2b35f4aec7 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMultipleClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithMultipleClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -56,7 +56,7 @@ public final class IndividuallyParentNestedWithMultipleClientBuilder @Generated private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); + .getProperties("azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java index 94679aa6002..09fd5b1b474 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java index d4e8214339e..fc8456077d1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java index 4a6bd194a01..ed2cd85cb0f 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithParamAliasClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithParamAliasClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -56,7 +56,7 @@ public final class IndividuallyParentNestedWithParamAliasClientBuilder @Generated private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); + .getProperties("azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java index fcdab9bed81..87addaf2ba4 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithPathClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithPathClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java index 3d91bcd3a7f..7fb9a314265 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithPathClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithPathClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java index 0619b12c4e7..e151bacc101 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithPathClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithPathClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -56,7 +56,7 @@ public final class IndividuallyParentNestedWithPathClientBuilder @Generated private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); + .getProperties("azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java index e3cae797d80..d08a228542b 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithQueryClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithQueryClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java similarity index 95% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java index 5069a7cd006..c61919c1f10 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java @@ -2,10 +2,10 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithQueryClientImpl; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithQueryClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java similarity index 96% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java index 2534362896a..264cc7722e6 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java @@ -2,9 +2,9 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithQueryClientImpl; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation.IndividuallyParentNestedWithQueryClientImpl; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.ConfigurationTrait; @@ -56,7 +56,7 @@ public final class IndividuallyParentNestedWithQueryClientBuilder @Generated private static final Map PROPERTIES = CoreUtils - .getProperties("_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); + .getProperties("azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties"); @Generated private final List pipelinePolicies; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java similarity index 98% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java index e5ac51fd7ff..9fc555c894a 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; import com.azure.core.http.HttpPipeline; import com.azure.core.http.HttpPipelineBuilder; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java index c9749079256..ce080a8c394 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java index efb36a71a1d..89a2c072df1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java index 3127e122df8..576ef3cbc06 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java index c45bcc7fe62..e17cf898735 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; import com.azure.core.annotation.ExpectedResponses; import com.azure.core.annotation.Get; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java index bcf99fe6094..15231ef67c0 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java similarity index 99% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java index c66818ef39b..402c7697d73 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; import com.azure.core.annotation.Delete; import com.azure.core.annotation.ExpectedResponses; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java similarity index 78% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java index 38e4e189db6..33101bf5789 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.implementation; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java index 9896d015b25..a63457c7983 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java @@ -2,7 +2,7 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.models; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.models; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java similarity index 80% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java index 0cfc765fd39..2c1566b44f6 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.models; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.models; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java similarity index 81% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java index d7088f0d782..1009faef5bd 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java @@ -8,4 +8,4 @@ * Test for client initialization decorator - moving parameters from method to client level. * */ -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyAsyncClient.java index e4dd5e633de..7170464917f 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyAsyncClient.java @@ -6,7 +6,9 @@ import azure.clientgenerator.core.flattenproperty.implementation.FlattenPropertyClientImpl; import azure.clientgenerator.core.flattenproperty.models.FlattenModel; +import azure.clientgenerator.core.flattenproperty.models.FlattenUnknownModel; import azure.clientgenerator.core.flattenproperty.models.NestedFlattenModel; +import azure.clientgenerator.core.flattenproperty.models.Solution; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; @@ -136,6 +138,94 @@ public Mono> putNestedFlattenModelWithResponse(BinaryData i return this.serviceClient.putNestedFlattenModelWithResponseAsync(input, requestOptions); } + /** + * The putFlattenUnknownModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + * @param input The input parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with unknown type properties to be flattened along with {@link Response} on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> putFlattenUnknownModelWithResponse(BinaryData input, + RequestOptions requestOptions) { + return this.serviceClient.putFlattenUnknownModelWithResponseAsync(input, requestOptions); + } + + /** + * The putFlattenReadOnlyModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with flattened properties that are all read-only along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> putFlattenReadOnlyModelWithResponse(BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.putFlattenReadOnlyModelWithResponseAsync(body, requestOptions); + } + /** * The putFlattenModel operation. * @@ -177,4 +267,49 @@ public Mono putNestedFlattenModel(NestedFlattenModel input) return putNestedFlattenModelWithResponse(BinaryData.fromObject(input), requestOptions).flatMap(FluxUtil::toMono) .map(protocolMethodData -> protocolMethodData.toObject(NestedFlattenModel.class)); } + + /** + * The putFlattenUnknownModel operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return this is the model with unknown type properties to be flattened on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono putFlattenUnknownModel(FlattenUnknownModel input) { + // Generated convenience method for putFlattenUnknownModelWithResponse + RequestOptions requestOptions = new RequestOptions(); + return putFlattenUnknownModelWithResponse(BinaryData.fromObject(input), requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(FlattenUnknownModel.class)); + } + + /** + * The putFlattenReadOnlyModel operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return this is the model with flattened properties that are all read-only on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono putFlattenReadOnlyModel(Solution body) { + // Generated convenience method for putFlattenReadOnlyModelWithResponse + RequestOptions requestOptions = new RequestOptions(); + return putFlattenReadOnlyModelWithResponse(BinaryData.fromObject(body), requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(Solution.class)); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClient.java index 6df185bf86f..9188f468a62 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClient.java @@ -6,7 +6,9 @@ import azure.clientgenerator.core.flattenproperty.implementation.FlattenPropertyClientImpl; import azure.clientgenerator.core.flattenproperty.models.FlattenModel; +import azure.clientgenerator.core.flattenproperty.models.FlattenUnknownModel; import azure.clientgenerator.core.flattenproperty.models.NestedFlattenModel; +import azure.clientgenerator.core.flattenproperty.models.Solution; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; @@ -131,6 +133,90 @@ public Response putNestedFlattenModelWithResponse(BinaryData input, return this.serviceClient.putNestedFlattenModelWithResponse(input, requestOptions); } + /** + * The putFlattenUnknownModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + * @param input The input parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with unknown type properties to be flattened along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putFlattenUnknownModelWithResponse(BinaryData input, RequestOptions requestOptions) { + return this.serviceClient.putFlattenUnknownModelWithResponse(input, requestOptions); + } + + /** + * The putFlattenReadOnlyModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with flattened properties that are all read-only along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putFlattenReadOnlyModelWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.putFlattenReadOnlyModelWithResponse(body, requestOptions); + } + /** * The putFlattenModel operation. * @@ -172,4 +258,46 @@ public NestedFlattenModel putNestedFlattenModel(NestedFlattenModel input) { return putNestedFlattenModelWithResponse(BinaryData.fromObject(input), requestOptions).getValue() .toObject(NestedFlattenModel.class); } + + /** + * The putFlattenUnknownModel operation. + * + * @param input The input parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return this is the model with unknown type properties to be flattened. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public FlattenUnknownModel putFlattenUnknownModel(FlattenUnknownModel input) { + // Generated convenience method for putFlattenUnknownModelWithResponse + RequestOptions requestOptions = new RequestOptions(); + return putFlattenUnknownModelWithResponse(BinaryData.fromObject(input), requestOptions).getValue() + .toObject(FlattenUnknownModel.class); + } + + /** + * The putFlattenReadOnlyModel operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return this is the model with flattened properties that are all read-only. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Solution putFlattenReadOnlyModel(Solution body) { + // Generated convenience method for putFlattenReadOnlyModelWithResponse + RequestOptions requestOptions = new RequestOptions(); + return putFlattenReadOnlyModelWithResponse(BinaryData.fromObject(body), requestOptions).getValue() + .toObject(Solution.class); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/implementation/FlattenPropertyClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/implementation/FlattenPropertyClientImpl.java index b15d7fb3eb2..c204dea4b66 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/implementation/FlattenPropertyClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/implementation/FlattenPropertyClientImpl.java @@ -164,6 +164,46 @@ Mono> putNestedFlattenModel(@HostParam("endpoint") String e Response putNestedFlattenModelSync(@HostParam("endpoint") String endpoint, @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData input, RequestOptions requestOptions, Context context); + + @Put("/azure/client-generator-core/flatten-property/flattenUnknownModel") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> putFlattenUnknownModel(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData input, RequestOptions requestOptions, Context context); + + @Put("/azure/client-generator-core/flatten-property/flattenUnknownModel") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response putFlattenUnknownModelSync(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData input, RequestOptions requestOptions, Context context); + + @Put("/azure/client-generator-core/flatten-property/flattenReadOnlyModel") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> putFlattenReadOnlyModel(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Put("/azure/client-generator-core/flatten-property/flattenReadOnlyModel") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response putFlattenReadOnlyModelSync(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); } /** @@ -365,4 +405,184 @@ public Response putNestedFlattenModelWithResponse(BinaryData input, return service.putNestedFlattenModelSync(this.getEndpoint(), contentType, accept, input, requestOptions, Context.NONE); } + + /** + * The putFlattenUnknownModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + * @param input The input parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with unknown type properties to be flattened along with {@link Response} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> putFlattenUnknownModelWithResponseAsync(BinaryData input, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.putFlattenUnknownModel(this.getEndpoint(), contentType, accept, + input, requestOptions, context)); + } + + /** + * The putFlattenUnknownModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties: BinaryData (Optional)
+     * }
+     * }
+     * 
+ * + * @param input The input parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with unknown type properties to be flattened along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putFlattenUnknownModelWithResponse(BinaryData input, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.putFlattenUnknownModelSync(this.getEndpoint(), contentType, accept, input, requestOptions, + Context.NONE); + } + + /** + * The putFlattenReadOnlyModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with flattened properties that are all read-only along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> putFlattenReadOnlyModelWithResponseAsync(BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.putFlattenReadOnlyModel(this.getEndpoint(), contentType, accept, + body, requestOptions, context)); + } + + /** + * The putFlattenReadOnlyModel operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     properties (Optional): {
+     *         solutionId: String (Optional)
+     *         title: String (Optional)
+     *         content: String (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return this is the model with flattened properties that are all read-only along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putFlattenReadOnlyModelWithResponse(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.putFlattenReadOnlyModelSync(this.getEndpoint(), contentType, accept, body, requestOptions, + Context.NONE); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/FlattenUnknownModel.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/FlattenUnknownModel.java new file mode 100644 index 00000000000..66bd1f48f44 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/FlattenUnknownModel.java @@ -0,0 +1,123 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package azure.clientgenerator.core.flattenproperty.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * This is the model with unknown type properties to be flattened. + */ +@Fluent +public final class FlattenUnknownModel implements JsonSerializable { + /* + * The name property. + */ + @Generated + private final String name; + + /* + * The properties property. + */ + @Generated + private BinaryData properties; + + /** + * Creates an instance of FlattenUnknownModel class. + * + * @param name the name value to set. + */ + @Generated + public FlattenUnknownModel(String name) { + this.name = name; + } + + /** + * Get the name property: The name property. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the properties property: The properties property. + * + * @return the properties value. + */ + @Generated + public BinaryData getProperties() { + return this.properties; + } + + /** + * Set the properties property: The properties property. + * + * @param properties the properties value to set. + * @return the FlattenUnknownModel object itself. + */ + @Generated + public FlattenUnknownModel setProperties(BinaryData properties) { + this.properties = properties; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + if (this.properties != null) { + jsonWriter.writeFieldName("properties"); + this.properties.writeTo(jsonWriter); + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of FlattenUnknownModel from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of FlattenUnknownModel if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the FlattenUnknownModel. + */ + @Generated + public static FlattenUnknownModel fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + BinaryData properties = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("properties".equals(fieldName)) { + properties + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else { + reader.skipChildren(); + } + } + FlattenUnknownModel deserializedFlattenUnknownModel = new FlattenUnknownModel(name); + deserializedFlattenUnknownModel.properties = properties; + + return deserializedFlattenUnknownModel; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/Solution.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/Solution.java new file mode 100644 index 00000000000..5eda5a1882d --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/Solution.java @@ -0,0 +1,118 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package azure.clientgenerator.core.flattenproperty.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * This is the model with flattened properties that are all read-only. + */ +@Fluent +public final class Solution implements JsonSerializable { + /* + * The name property. + */ + @Generated + private final String name; + + /* + * The properties property. + */ + @Generated + private SolutionProperties properties; + + /** + * Creates an instance of Solution class. + * + * @param name the name value to set. + */ + @Generated + public Solution(String name) { + this.name = name; + } + + /** + * Get the name property: The name property. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the properties property: The properties property. + * + * @return the properties value. + */ + @Generated + public SolutionProperties getProperties() { + return this.properties; + } + + /** + * Set the properties property: The properties property. + * + * @param properties the properties value to set. + * @return the Solution object itself. + */ + @Generated + public Solution setProperties(SolutionProperties properties) { + this.properties = properties; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeJsonField("properties", this.properties); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of Solution from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of Solution if the JsonReader was pointing to an instance of it, or null if it was pointing + * to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the Solution. + */ + @Generated + public static Solution fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + SolutionProperties properties = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("properties".equals(fieldName)) { + properties = SolutionProperties.fromJson(reader); + } else { + reader.skipChildren(); + } + } + Solution deserializedSolution = new Solution(name); + deserializedSolution.properties = properties; + + return deserializedSolution; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/SolutionProperties.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/SolutionProperties.java new file mode 100644 index 00000000000..d69aa8bacfc --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/clientgenerator/core/flattenproperty/models/SolutionProperties.java @@ -0,0 +1,115 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package azure.clientgenerator.core.flattenproperty.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * This is the model with all read-only properties to be flattened. + */ +@Immutable +public final class SolutionProperties implements JsonSerializable { + /* + * The solutionId property. + */ + @Generated + private String solutionId; + + /* + * The title property. + */ + @Generated + private String title; + + /* + * The content property. + */ + @Generated + private String content; + + /** + * Creates an instance of SolutionProperties class. + */ + @Generated + public SolutionProperties() { + } + + /** + * Get the solutionId property: The solutionId property. + * + * @return the solutionId value. + */ + @Generated + public String getSolutionId() { + return this.solutionId; + } + + /** + * Get the title property: The title property. + * + * @return the title value. + */ + @Generated + public String getTitle() { + return this.title; + } + + /** + * Get the content property: The content property. + * + * @return the content value. + */ + @Generated + public String getContent() { + return this.content; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SolutionProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SolutionProperties if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the SolutionProperties. + */ + @Generated + public static SolutionProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SolutionProperties deserializedSolutionProperties = new SolutionProperties(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("solutionId".equals(fieldName)) { + deserializedSolutionProperties.solutionId = reader.getString(); + } else if ("title".equals(fieldName)) { + deserializedSolutionProperties.title = reader.getString(); + } else if ("content".equals(fieldName)) { + deserializedSolutionProperties.content = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedSolutionProperties; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageAsyncClient.java index ccd87439af6..00da9c19a64 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageAsyncClient.java @@ -205,6 +205,40 @@ public PagedFlux withParameterizedNextLink(String select, RequestOpt return this.serviceClient.withParameterizedNextLinkAsync(select, requestOptions); } + /** + * List with relative nextLink URL that requires endpoint resolution. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux withRelativeNextLink(RequestOptions requestOptions) { + return this.serviceClient.withRelativeNextLinkAsync(requestOptions); + } + /** * List with Azure.Core.Page<>. * @@ -400,4 +434,34 @@ public PagedFlux withParameterizedNextLink(String select) { pagedResponse.getContinuationToken(), null)); }); } + + /** + * List with relative nextLink URL that requires endpoint resolution. + * + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return paged collection of User items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux withRelativeNextLink() { + // Generated convenience method for withRelativeNextLink + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse = withRelativeNextLink(requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(User.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageClient.java index d92d2dc4554..788f6272b29 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/PageClient.java @@ -201,6 +201,40 @@ public PagedIterable withParameterizedNextLink(String select, Reques return this.serviceClient.withParameterizedNextLink(select, requestOptions); } + /** + * List with relative nextLink URL that requires endpoint resolution. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable withRelativeNextLink(RequestOptions requestOptions) { + return this.serviceClient.withRelativeNextLink(requestOptions); + } + /** * List with Azure.Core.Page<>. * @@ -329,4 +363,23 @@ public PagedIterable withParameterizedNextLink(String select) { return serviceClient.withParameterizedNextLink(select, requestOptions) .mapPage(bodyItemValue -> bodyItemValue.toObject(User.class)); } + + /** + * List with relative nextLink URL that requires endpoint resolution. + * + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return paged collection of User items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable withRelativeNextLink() { + // Generated convenience method for withRelativeNextLink + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.withRelativeNextLink(requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(User.class)); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/implementation/PageClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/implementation/PageClientImpl.java index c870206103b..acf44981467 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/implementation/PageClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/core/page/implementation/PageClientImpl.java @@ -249,6 +249,24 @@ Response withParameterizedNextLinkSync(@HostParam("endpoint") String @QueryParam("select") String select, @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + @Get("/azure/core/page/with-relative-next-link") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> withRelativeNextLink(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/azure/core/page/with-relative-next-link") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response withRelativeNextLinkSync(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + @Get("{nextLink}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) @@ -328,6 +346,26 @@ Mono> withParameterizedNextLinkNext( Response withParameterizedNextLinkNextSync( @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> withRelativeNextLinkNext( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response withRelativeNextLinkNextSync( + @PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); } /** @@ -1055,6 +1093,154 @@ public PagedIterable withParameterizedNextLink(String select, Reques nextLink -> withParameterizedNextLinkNextSinglePage(nextLink, requestOptionsForNextPage)); } + /** + * List with relative nextLink URL that requires endpoint resolution. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> withRelativeNextLinkSinglePageAsync(RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.withRelativeNextLink(this.getEndpoint(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "value"), getNextLink(res.getValue(), "nextLink"), null)); + } + + /** + * List with relative nextLink URL that requires endpoint resolution. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux withRelativeNextLinkAsync(RequestOptions requestOptions) { + RequestOptions requestOptionsForNextPage = new RequestOptions(); + requestOptionsForNextPage.setContext( + requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() : Context.NONE); + return new PagedFlux<>(() -> withRelativeNextLinkSinglePageAsync(requestOptions), + nextLink -> withRelativeNextLinkNextSinglePageAsync(nextLink, requestOptionsForNextPage)); + } + + /** + * List with relative nextLink URL that requires endpoint resolution. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse withRelativeNextLinkSinglePage(RequestOptions requestOptions) { + final String accept = "application/json"; + Response res + = service.withRelativeNextLinkSync(this.getEndpoint(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "value"), getNextLink(res.getValue(), "nextLink"), null); + } + + /** + * List with relative nextLink URL that requires endpoint resolution. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable withRelativeNextLink(RequestOptions requestOptions) { + RequestOptions requestOptionsForNextPage = new RequestOptions(); + requestOptionsForNextPage.setContext( + requestOptions != null && requestOptions.getContext() != null ? requestOptions.getContext() : Context.NONE); + return new PagedIterable<>(() -> withRelativeNextLinkSinglePage(requestOptions), + nextLink -> withRelativeNextLinkNextSinglePage(nextLink, requestOptionsForNextPage)); + } + /** * Get the next page of items. *

Response Body Schema

@@ -1368,6 +1554,84 @@ private PagedResponse withParameterizedNextLinkNextSinglePage(String getValues(res.getValue(), "values"), getNextLink(res.getValue(), "nextLink"), null); } + /** + * Get the next page of items. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param nextLink The URL to get the next list of items. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> withRelativeNextLinkNextSinglePageAsync(String nextLink, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext( + context -> service.withRelativeNextLinkNext(nextLink, this.getEndpoint(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "value"), getNextLink(res.getValue(), "nextLink"), null)); + } + + /** + * Get the next page of items. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     *     orders (Optional): [
+     *          (Optional){
+     *             id: int (Required)
+     *             userId: int (Required)
+     *             detail: String (Required)
+     *         }
+     *     ]
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param nextLink The URL to get the next list of items. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return paged collection of User items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse withRelativeNextLinkNextSinglePage(String nextLink, + RequestOptions requestOptions) { + final String accept = "application/json"; + Response res + = service.withRelativeNextLinkNextSync(nextLink, this.getEndpoint(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "value"), getNextLink(res.getValue(), "nextLink"), null); + } + private List getValues(BinaryData binaryData, String path) { try { Map obj = binaryData.toObject(Map.class); diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/CombinedManager.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/CombinedManager.java deleted file mode 100644 index d24968bd14f..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/CombinedManager.java +++ /dev/null @@ -1,298 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.Combined; -import azure.resourcemanager.multiserviceolderversions.combined.implementation.CombinedBuilder; -import azure.resourcemanager.multiserviceolderversions.combined.implementation.DisksImpl; -import azure.resourcemanager.multiserviceolderversions.combined.implementation.VirtualMachinesImpl; -import azure.resourcemanager.multiserviceolderversions.combined.models.Disks; -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachines; -import com.azure.core.credential.TokenCredential; -import com.azure.core.http.HttpClient; -import com.azure.core.http.HttpPipeline; -import com.azure.core.http.HttpPipelineBuilder; -import com.azure.core.http.HttpPipelinePosition; -import com.azure.core.http.policy.AddDatePolicy; -import com.azure.core.http.policy.AddHeadersFromContextPolicy; -import com.azure.core.http.policy.BearerTokenAuthenticationPolicy; -import com.azure.core.http.policy.HttpLogOptions; -import com.azure.core.http.policy.HttpLoggingPolicy; -import com.azure.core.http.policy.HttpPipelinePolicy; -import com.azure.core.http.policy.HttpPolicyProviders; -import com.azure.core.http.policy.RequestIdPolicy; -import com.azure.core.http.policy.RetryOptions; -import com.azure.core.http.policy.RetryPolicy; -import com.azure.core.http.policy.UserAgentPolicy; -import com.azure.core.management.profile.AzureProfile; -import com.azure.core.util.Configuration; -import com.azure.core.util.CoreUtils; -import com.azure.core.util.logging.ClientLogger; -import java.time.Duration; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * Entry point to CombinedManager. - * Compute Client. - */ -public final class CombinedManager { - private VirtualMachines virtualMachines; - - private Disks disks; - - private final Combined clientObject; - - private CombinedManager(HttpPipeline httpPipeline, AzureProfile profile, Duration defaultPollInterval) { - Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null."); - Objects.requireNonNull(profile, "'profile' cannot be null."); - this.clientObject = new CombinedBuilder().pipeline(httpPipeline) - .endpoint(profile.getEnvironment().getResourceManagerEndpoint()) - .subscriptionId(profile.getSubscriptionId()) - .defaultPollInterval(defaultPollInterval) - .buildClient(); - } - - /** - * Creates an instance of combined service API entry point. - * - * @param credential the credential to use. - * @param profile the Azure profile for client. - * @return the combined service API instance. - */ - public static CombinedManager authenticate(TokenCredential credential, AzureProfile profile) { - Objects.requireNonNull(credential, "'credential' cannot be null."); - Objects.requireNonNull(profile, "'profile' cannot be null."); - return configure().authenticate(credential, profile); - } - - /** - * Creates an instance of combined service API entry point. - * - * @param httpPipeline the {@link HttpPipeline} configured with Azure authentication credential. - * @param profile the Azure profile for client. - * @return the combined service API instance. - */ - public static CombinedManager authenticate(HttpPipeline httpPipeline, AzureProfile profile) { - Objects.requireNonNull(httpPipeline, "'httpPipeline' cannot be null."); - Objects.requireNonNull(profile, "'profile' cannot be null."); - return new CombinedManager(httpPipeline, profile, null); - } - - /** - * Gets a Configurable instance that can be used to create CombinedManager with optional configuration. - * - * @return the Configurable instance allowing configurations. - */ - public static Configurable configure() { - return new CombinedManager.Configurable(); - } - - /** - * The Configurable allowing configurations to be set. - */ - public static final class Configurable { - private static final ClientLogger LOGGER = new ClientLogger(Configurable.class); - private static final String SDK_VERSION = "version"; - private static final Map PROPERTIES - = CoreUtils.getProperties("azure-resourcemanager-combined-generated.properties"); - - private HttpClient httpClient; - private HttpLogOptions httpLogOptions; - private final List policies = new ArrayList<>(); - private final List scopes = new ArrayList<>(); - private RetryPolicy retryPolicy; - private RetryOptions retryOptions; - private Duration defaultPollInterval; - - private Configurable() { - } - - /** - * Sets the http client. - * - * @param httpClient the HTTP client. - * @return the configurable object itself. - */ - public Configurable withHttpClient(HttpClient httpClient) { - this.httpClient = Objects.requireNonNull(httpClient, "'httpClient' cannot be null."); - return this; - } - - /** - * Sets the logging options to the HTTP pipeline. - * - * @param httpLogOptions the HTTP log options. - * @return the configurable object itself. - */ - public Configurable withLogOptions(HttpLogOptions httpLogOptions) { - this.httpLogOptions = Objects.requireNonNull(httpLogOptions, "'httpLogOptions' cannot be null."); - return this; - } - - /** - * Adds the pipeline policy to the HTTP pipeline. - * - * @param policy the HTTP pipeline policy. - * @return the configurable object itself. - */ - public Configurable withPolicy(HttpPipelinePolicy policy) { - this.policies.add(Objects.requireNonNull(policy, "'policy' cannot be null.")); - return this; - } - - /** - * Adds the scope to permission sets. - * - * @param scope the scope. - * @return the configurable object itself. - */ - public Configurable withScope(String scope) { - this.scopes.add(Objects.requireNonNull(scope, "'scope' cannot be null.")); - return this; - } - - /** - * Sets the retry policy to the HTTP pipeline. - * - * @param retryPolicy the HTTP pipeline retry policy. - * @return the configurable object itself. - */ - public Configurable withRetryPolicy(RetryPolicy retryPolicy) { - this.retryPolicy = Objects.requireNonNull(retryPolicy, "'retryPolicy' cannot be null."); - return this; - } - - /** - * Sets the retry options for the HTTP pipeline retry policy. - *

- * This setting has no effect, if retry policy is set via {@link #withRetryPolicy(RetryPolicy)}. - * - * @param retryOptions the retry options for the HTTP pipeline retry policy. - * @return the configurable object itself. - */ - public Configurable withRetryOptions(RetryOptions retryOptions) { - this.retryOptions = Objects.requireNonNull(retryOptions, "'retryOptions' cannot be null."); - return this; - } - - /** - * Sets the default poll interval, used when service does not provide "Retry-After" header. - * - * @param defaultPollInterval the default poll interval. - * @return the configurable object itself. - */ - public Configurable withDefaultPollInterval(Duration defaultPollInterval) { - this.defaultPollInterval - = Objects.requireNonNull(defaultPollInterval, "'defaultPollInterval' cannot be null."); - if (this.defaultPollInterval.isNegative()) { - throw LOGGER - .logExceptionAsError(new IllegalArgumentException("'defaultPollInterval' cannot be negative")); - } - return this; - } - - /** - * Creates an instance of combined service API entry point. - * - * @param credential the credential to use. - * @param profile the Azure profile for client. - * @return the combined service API instance. - */ - public CombinedManager authenticate(TokenCredential credential, AzureProfile profile) { - Objects.requireNonNull(credential, "'credential' cannot be null."); - Objects.requireNonNull(profile, "'profile' cannot be null."); - - String clientVersion = PROPERTIES.getOrDefault(SDK_VERSION, "UnknownVersion"); - - StringBuilder userAgentBuilder = new StringBuilder(); - userAgentBuilder.append("azsdk-java") - .append("-") - .append("azure.resourcemanager.multiserviceolderversions.combined") - .append("/") - .append(clientVersion); - if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) { - userAgentBuilder.append(" (") - .append(Configuration.getGlobalConfiguration().get("java.version")) - .append("; ") - .append(Configuration.getGlobalConfiguration().get("os.name")) - .append("; ") - .append(Configuration.getGlobalConfiguration().get("os.version")) - .append("; auto-generated)"); - } else { - userAgentBuilder.append(" (auto-generated)"); - } - - if (scopes.isEmpty()) { - scopes.add(profile.getEnvironment().getManagementEndpoint() + "/.default"); - } - if (retryPolicy == null) { - if (retryOptions != null) { - retryPolicy = new RetryPolicy(retryOptions); - } else { - retryPolicy = new RetryPolicy("Retry-After", ChronoUnit.SECONDS); - } - } - List policies = new ArrayList<>(); - policies.add(new UserAgentPolicy(userAgentBuilder.toString())); - policies.add(new AddHeadersFromContextPolicy()); - policies.add(new RequestIdPolicy()); - policies.addAll(this.policies.stream() - .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL) - .collect(Collectors.toList())); - HttpPolicyProviders.addBeforeRetryPolicies(policies); - policies.add(retryPolicy); - policies.add(new AddDatePolicy()); - policies.add(new BearerTokenAuthenticationPolicy(credential, scopes.toArray(new String[0]))); - policies.addAll(this.policies.stream() - .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY) - .collect(Collectors.toList())); - HttpPolicyProviders.addAfterRetryPolicies(policies); - policies.add(new HttpLoggingPolicy(httpLogOptions)); - HttpPipeline httpPipeline = new HttpPipelineBuilder().httpClient(httpClient) - .policies(policies.toArray(new HttpPipelinePolicy[0])) - .build(); - return new CombinedManager(httpPipeline, profile, defaultPollInterval); - } - } - - /** - * Gets the resource collection API of VirtualMachines. It manages VirtualMachine. - * - * @return Resource collection API of VirtualMachines. - */ - public VirtualMachines virtualMachines() { - if (this.virtualMachines == null) { - this.virtualMachines = new VirtualMachinesImpl(clientObject.getVirtualMachines(), this); - } - return virtualMachines; - } - - /** - * Gets the resource collection API of Disks. It manages Disk. - * - * @return Resource collection API of Disks. - */ - public Disks disks() { - if (this.disks == null) { - this.disks = new DisksImpl(clientObject.getDisks(), this); - } - return disks; - } - - /** - * Gets wrapped service client Combined providing direct access to the underlying auto-generated API implementation, - * based on Azure REST API. - * - * @return Wrapped service client Combined. - */ - public Combined serviceClient() { - return this.clientObject; - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/Combined.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/Combined.java deleted file mode 100644 index c14cf89263c..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/Combined.java +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.fluent; - -import com.azure.core.http.HttpPipeline; -import java.time.Duration; - -/** - * The interface for Combined class. - */ -public interface Combined { - /** - * Gets Service host. - * - * @return the endpoint value. - */ - String getEndpoint(); - - /** - * Gets The ID of the target subscription. The value must be an UUID. - * - * @return the subscriptionId value. - */ - String getSubscriptionId(); - - /** - * Gets The HTTP pipeline to send requests through. - * - * @return the httpPipeline value. - */ - HttpPipeline getHttpPipeline(); - - /** - * Gets The default poll interval for long-running operation. - * - * @return the defaultPollInterval value. - */ - Duration getDefaultPollInterval(); - - /** - * Gets the VirtualMachinesClient object to access its operations. - * - * @return the VirtualMachinesClient object. - */ - VirtualMachinesClient getVirtualMachines(); - - /** - * Gets the DisksClient object to access its operations. - * - * @return the DisksClient object. - */ - DisksClient getDisks(); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/DisksClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/DisksClient.java deleted file mode 100644 index 53d3f79daf9..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/DisksClient.java +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.fluent; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner; -import com.azure.core.annotation.ReturnType; -import com.azure.core.annotation.ServiceMethod; -import com.azure.core.http.rest.Response; -import com.azure.core.management.polling.PollResult; -import com.azure.core.util.Context; -import com.azure.core.util.polling.SyncPoller; - -/** - * An instance of this class provides access to all the operations defined in DisksClient. - */ -public interface DisksClient { - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response getByResourceGroupWithResponse(String resourceGroupName, String diskName, Context context); - - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - DiskInner getByResourceGroup(String resourceGroupName, String diskName); - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of disk resource. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, DiskInner> beginCreateOrUpdate(String resourceGroupName, String diskName, - DiskInner resource); - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of disk resource. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, DiskInner> beginCreateOrUpdate(String resourceGroupName, String diskName, - DiskInner resource, Context context); - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - DiskInner createOrUpdate(String resourceGroupName, String diskName, DiskInner resource); - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - DiskInner createOrUpdate(String resourceGroupName, String diskName, DiskInner resource, Context context); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/VirtualMachinesClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/VirtualMachinesClient.java deleted file mode 100644 index ae8ed67197d..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/VirtualMachinesClient.java +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.fluent; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner; -import com.azure.core.annotation.ReturnType; -import com.azure.core.annotation.ServiceMethod; -import com.azure.core.http.rest.Response; -import com.azure.core.management.polling.PollResult; -import com.azure.core.util.Context; -import com.azure.core.util.polling.SyncPoller; - -/** - * An instance of this class provides access to all the operations defined in VirtualMachinesClient. - */ -public interface VirtualMachinesClient { - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - Response getByResourceGroupWithResponse(String resourceGroupName, String vmName, - Context context); - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - VirtualMachineInner getByResourceGroup(String resourceGroupName, String vmName); - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, VirtualMachineInner> beginCreateOrUpdate(String resourceGroupName, - String vmName, VirtualMachineInner resource); - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - SyncPoller, VirtualMachineInner> beginCreateOrUpdate(String resourceGroupName, - String vmName, VirtualMachineInner resource, Context context); - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - VirtualMachineInner createOrUpdate(String resourceGroupName, String vmName, VirtualMachineInner resource); - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - VirtualMachineInner createOrUpdate(String resourceGroupName, String vmName, VirtualMachineInner resource, - Context context); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/DiskInner.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/DiskInner.java deleted file mode 100644 index 920c05c5c28..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/DiskInner.java +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.fluent.models; - -import azure.resourcemanager.multiserviceolderversions.combined.models.DiskProperties; -import com.azure.core.annotation.Fluent; -import com.azure.core.management.Resource; -import com.azure.core.management.SystemData; -import com.azure.json.JsonReader; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; -import java.util.Map; - -/** - * Disk resource. - */ -@Fluent -public final class DiskInner extends Resource { - /* - * The resource-specific properties for this resource. - */ - private DiskProperties properties; - - /* - * Azure Resource Manager metadata containing createdBy and modifiedBy information. - */ - private SystemData systemData; - - /* - * The type of the resource. - */ - private String type; - - /* - * The name of the resource. - */ - private String name; - - /* - * Fully qualified resource Id for the resource. - */ - private String id; - - /** - * Creates an instance of DiskInner class. - */ - public DiskInner() { - } - - /** - * Get the properties property: The resource-specific properties for this resource. - * - * @return the properties value. - */ - public DiskProperties properties() { - return this.properties; - } - - /** - * Set the properties property: The resource-specific properties for this resource. - * - * @param properties the properties value to set. - * @return the DiskInner object itself. - */ - public DiskInner withProperties(DiskProperties properties) { - this.properties = properties; - return this; - } - - /** - * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. - * - * @return the systemData value. - */ - public SystemData systemData() { - return this.systemData; - } - - /** - * Get the type property: The type of the resource. - * - * @return the type value. - */ - @Override - public String type() { - return this.type; - } - - /** - * Get the name property: The name of the resource. - * - * @return the name value. - */ - @Override - public String name() { - return this.name; - } - - /** - * Get the id property: Fully qualified resource Id for the resource. - * - * @return the id value. - */ - @Override - public String id() { - return this.id; - } - - /** - * {@inheritDoc} - */ - @Override - public DiskInner withLocation(String location) { - super.withLocation(location); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public DiskInner withTags(Map tags) { - super.withTags(tags); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("location", location()); - jsonWriter.writeMapField("tags", tags(), (writer, element) -> writer.writeString(element)); - jsonWriter.writeJsonField("properties", this.properties); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of DiskInner from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of DiskInner if the JsonReader was pointing to an instance of it, or null if it was pointing - * to JSON null. - * @throws IllegalStateException If the deserialized JSON object was missing any required properties. - * @throws IOException If an error occurs while reading the DiskInner. - */ - public static DiskInner fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - DiskInner deserializedDiskInner = new DiskInner(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("id".equals(fieldName)) { - deserializedDiskInner.id = reader.getString(); - } else if ("name".equals(fieldName)) { - deserializedDiskInner.name = reader.getString(); - } else if ("type".equals(fieldName)) { - deserializedDiskInner.type = reader.getString(); - } else if ("location".equals(fieldName)) { - deserializedDiskInner.withLocation(reader.getString()); - } else if ("tags".equals(fieldName)) { - Map tags = reader.readMap(reader1 -> reader1.getString()); - deserializedDiskInner.withTags(tags); - } else if ("properties".equals(fieldName)) { - deserializedDiskInner.properties = DiskProperties.fromJson(reader); - } else if ("systemData".equals(fieldName)) { - deserializedDiskInner.systemData = SystemData.fromJson(reader); - } else { - reader.skipChildren(); - } - } - - return deserializedDiskInner; - }); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/VirtualMachineInner.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/VirtualMachineInner.java deleted file mode 100644 index fbf8b1af82e..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/VirtualMachineInner.java +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.fluent.models; - -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachineProperties; -import com.azure.core.annotation.Fluent; -import com.azure.core.management.Resource; -import com.azure.core.management.SystemData; -import com.azure.json.JsonReader; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; -import java.util.Map; - -/** - * Describes a Virtual Machine. - */ -@Fluent -public final class VirtualMachineInner extends Resource { - /* - * The resource-specific properties for this resource. - */ - private VirtualMachineProperties properties; - - /* - * Azure Resource Manager metadata containing createdBy and modifiedBy information. - */ - private SystemData systemData; - - /* - * The type of the resource. - */ - private String type; - - /* - * The name of the resource. - */ - private String name; - - /* - * Fully qualified resource Id for the resource. - */ - private String id; - - /** - * Creates an instance of VirtualMachineInner class. - */ - public VirtualMachineInner() { - } - - /** - * Get the properties property: The resource-specific properties for this resource. - * - * @return the properties value. - */ - public VirtualMachineProperties properties() { - return this.properties; - } - - /** - * Set the properties property: The resource-specific properties for this resource. - * - * @param properties the properties value to set. - * @return the VirtualMachineInner object itself. - */ - public VirtualMachineInner withProperties(VirtualMachineProperties properties) { - this.properties = properties; - return this; - } - - /** - * Get the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. - * - * @return the systemData value. - */ - public SystemData systemData() { - return this.systemData; - } - - /** - * Get the type property: The type of the resource. - * - * @return the type value. - */ - @Override - public String type() { - return this.type; - } - - /** - * Get the name property: The name of the resource. - * - * @return the name value. - */ - @Override - public String name() { - return this.name; - } - - /** - * Get the id property: Fully qualified resource Id for the resource. - * - * @return the id value. - */ - @Override - public String id() { - return this.id; - } - - /** - * {@inheritDoc} - */ - @Override - public VirtualMachineInner withLocation(String location) { - super.withLocation(location); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public VirtualMachineInner withTags(Map tags) { - super.withTags(tags); - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("location", location()); - jsonWriter.writeMapField("tags", tags(), (writer, element) -> writer.writeString(element)); - jsonWriter.writeJsonField("properties", this.properties); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of VirtualMachineInner from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of VirtualMachineInner if the JsonReader was pointing to an instance of it, or null if it was - * pointing to JSON null. - * @throws IllegalStateException If the deserialized JSON object was missing any required properties. - * @throws IOException If an error occurs while reading the VirtualMachineInner. - */ - public static VirtualMachineInner fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - VirtualMachineInner deserializedVirtualMachineInner = new VirtualMachineInner(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("id".equals(fieldName)) { - deserializedVirtualMachineInner.id = reader.getString(); - } else if ("name".equals(fieldName)) { - deserializedVirtualMachineInner.name = reader.getString(); - } else if ("type".equals(fieldName)) { - deserializedVirtualMachineInner.type = reader.getString(); - } else if ("location".equals(fieldName)) { - deserializedVirtualMachineInner.withLocation(reader.getString()); - } else if ("tags".equals(fieldName)) { - Map tags = reader.readMap(reader1 -> reader1.getString()); - deserializedVirtualMachineInner.withTags(tags); - } else if ("properties".equals(fieldName)) { - deserializedVirtualMachineInner.properties = VirtualMachineProperties.fromJson(reader); - } else if ("systemData".equals(fieldName)) { - deserializedVirtualMachineInner.systemData = SystemData.fromJson(reader); - } else { - reader.skipChildren(); - } - } - - return deserializedVirtualMachineInner; - }); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/package-info.java deleted file mode 100644 index b6f7366cf9f..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -/** - * Package containing the inner data models for Compute. - * Compute Client. - */ -package azure.resourcemanager.multiserviceolderversions.combined.fluent.models; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/package-info.java deleted file mode 100644 index f26ba069655..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -/** - * Package containing the service clients for Compute. - * Compute Client. - */ -package azure.resourcemanager.multiserviceolderversions.combined.fluent; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedBuilder.java deleted file mode 100644 index 3178471ba12..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedBuilder.java +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import com.azure.core.annotation.ServiceClientBuilder; -import com.azure.core.http.HttpPipeline; -import com.azure.core.http.HttpPipelineBuilder; -import com.azure.core.http.policy.RetryPolicy; -import com.azure.core.http.policy.UserAgentPolicy; -import com.azure.core.management.AzureEnvironment; -import com.azure.core.management.serializer.SerializerFactory; -import com.azure.core.util.serializer.SerializerAdapter; -import java.time.Duration; - -/** - * A builder for creating a new instance of the CombinedImpl type. - */ -@ServiceClientBuilder(serviceClients = { CombinedImpl.class }) -public final class CombinedBuilder { - /* - * Service host - */ - private String endpoint; - - /** - * Sets Service host. - * - * @param endpoint the endpoint value. - * @return the CombinedBuilder. - */ - public CombinedBuilder endpoint(String endpoint) { - this.endpoint = endpoint; - return this; - } - - /* - * The ID of the target subscription. The value must be an UUID. - */ - private String subscriptionId; - - /** - * Sets The ID of the target subscription. The value must be an UUID. - * - * @param subscriptionId the subscriptionId value. - * @return the CombinedBuilder. - */ - public CombinedBuilder subscriptionId(String subscriptionId) { - this.subscriptionId = subscriptionId; - return this; - } - - /* - * The environment to connect to - */ - private AzureEnvironment environment; - - /** - * Sets The environment to connect to. - * - * @param environment the environment value. - * @return the CombinedBuilder. - */ - public CombinedBuilder environment(AzureEnvironment environment) { - this.environment = environment; - return this; - } - - /* - * The HTTP pipeline to send requests through - */ - private HttpPipeline pipeline; - - /** - * Sets The HTTP pipeline to send requests through. - * - * @param pipeline the pipeline value. - * @return the CombinedBuilder. - */ - public CombinedBuilder pipeline(HttpPipeline pipeline) { - this.pipeline = pipeline; - return this; - } - - /* - * The default poll interval for long-running operation - */ - private Duration defaultPollInterval; - - /** - * Sets The default poll interval for long-running operation. - * - * @param defaultPollInterval the defaultPollInterval value. - * @return the CombinedBuilder. - */ - public CombinedBuilder defaultPollInterval(Duration defaultPollInterval) { - this.defaultPollInterval = defaultPollInterval; - return this; - } - - /* - * The serializer to serialize an object into a string - */ - private SerializerAdapter serializerAdapter; - - /** - * Sets The serializer to serialize an object into a string. - * - * @param serializerAdapter the serializerAdapter value. - * @return the CombinedBuilder. - */ - public CombinedBuilder serializerAdapter(SerializerAdapter serializerAdapter) { - this.serializerAdapter = serializerAdapter; - return this; - } - - /** - * Builds an instance of CombinedImpl with the provided parameters. - * - * @return an instance of CombinedImpl. - */ - public CombinedImpl buildClient() { - String localEndpoint = (endpoint != null) ? endpoint : "https://management.azure.com"; - AzureEnvironment localEnvironment = (environment != null) ? environment : AzureEnvironment.AZURE; - HttpPipeline localPipeline = (pipeline != null) - ? pipeline - : new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(); - Duration localDefaultPollInterval - = (defaultPollInterval != null) ? defaultPollInterval : Duration.ofSeconds(30); - SerializerAdapter localSerializerAdapter = (serializerAdapter != null) - ? serializerAdapter - : SerializerFactory.createDefaultManagementSerializerAdapter(); - CombinedImpl client = new CombinedImpl(localPipeline, localSerializerAdapter, localDefaultPollInterval, - localEnvironment, localEndpoint, this.subscriptionId); - return client; - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedImpl.java deleted file mode 100644 index 75986505a23..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedImpl.java +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.Combined; -import azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient; -import azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient; -import com.azure.core.annotation.ServiceClient; -import com.azure.core.http.HttpHeaderName; -import com.azure.core.http.HttpHeaders; -import com.azure.core.http.HttpPipeline; -import com.azure.core.http.HttpResponse; -import com.azure.core.http.rest.Response; -import com.azure.core.management.AzureEnvironment; -import com.azure.core.management.exception.ManagementError; -import com.azure.core.management.exception.ManagementException; -import com.azure.core.management.polling.PollResult; -import com.azure.core.management.polling.PollerFactory; -import com.azure.core.management.polling.SyncPollerFactory; -import com.azure.core.util.BinaryData; -import com.azure.core.util.Context; -import com.azure.core.util.CoreUtils; -import com.azure.core.util.logging.ClientLogger; -import com.azure.core.util.polling.AsyncPollResponse; -import com.azure.core.util.polling.LongRunningOperationStatus; -import com.azure.core.util.polling.PollerFlux; -import com.azure.core.util.polling.SyncPoller; -import com.azure.core.util.serializer.SerializerAdapter; -import com.azure.core.util.serializer.SerializerEncoding; -import java.io.IOException; -import java.lang.reflect.Type; -import java.nio.ByteBuffer; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.time.Duration; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -/** - * Initializes a new instance of the CombinedImpl type. - */ -@ServiceClient(builder = CombinedBuilder.class) -public final class CombinedImpl implements Combined { - /** - * Service host. - */ - private final String endpoint; - - /** - * Gets Service host. - * - * @return the endpoint value. - */ - public String getEndpoint() { - return this.endpoint; - } - - /** - * The ID of the target subscription. The value must be an UUID. - */ - private final String subscriptionId; - - /** - * Gets The ID of the target subscription. The value must be an UUID. - * - * @return the subscriptionId value. - */ - public String getSubscriptionId() { - return this.subscriptionId; - } - - /** - * The HTTP pipeline to send requests through. - */ - private final HttpPipeline httpPipeline; - - /** - * Gets The HTTP pipeline to send requests through. - * - * @return the httpPipeline value. - */ - public HttpPipeline getHttpPipeline() { - return this.httpPipeline; - } - - /** - * The serializer to serialize an object into a string. - */ - private final SerializerAdapter serializerAdapter; - - /** - * Gets The serializer to serialize an object into a string. - * - * @return the serializerAdapter value. - */ - SerializerAdapter getSerializerAdapter() { - return this.serializerAdapter; - } - - /** - * The default poll interval for long-running operation. - */ - private final Duration defaultPollInterval; - - /** - * Gets The default poll interval for long-running operation. - * - * @return the defaultPollInterval value. - */ - public Duration getDefaultPollInterval() { - return this.defaultPollInterval; - } - - /** - * The VirtualMachinesClient object to access its operations. - */ - private final VirtualMachinesClient virtualMachines; - - /** - * Gets the VirtualMachinesClient object to access its operations. - * - * @return the VirtualMachinesClient object. - */ - public VirtualMachinesClient getVirtualMachines() { - return this.virtualMachines; - } - - /** - * The DisksClient object to access its operations. - */ - private final DisksClient disks; - - /** - * Gets the DisksClient object to access its operations. - * - * @return the DisksClient object. - */ - public DisksClient getDisks() { - return this.disks; - } - - /** - * Initializes an instance of Combined client. - * - * @param httpPipeline The HTTP pipeline to send requests through. - * @param serializerAdapter The serializer to serialize an object into a string. - * @param defaultPollInterval The default poll interval for long-running operation. - * @param environment The Azure environment. - * @param endpoint Service host. - * @param subscriptionId The ID of the target subscription. The value must be an UUID. - */ - CombinedImpl(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, Duration defaultPollInterval, - AzureEnvironment environment, String endpoint, String subscriptionId) { - this.httpPipeline = httpPipeline; - this.serializerAdapter = serializerAdapter; - this.defaultPollInterval = defaultPollInterval; - this.endpoint = endpoint; - this.subscriptionId = subscriptionId; - this.virtualMachines = new VirtualMachinesClientImpl(this); - this.disks = new DisksClientImpl(this); - } - - /** - * Gets default client context. - * - * @return the default client context. - */ - public Context getContext() { - return Context.NONE; - } - - /** - * Merges default client context with provided context. - * - * @param context the context to be merged with default client context. - * @return the merged context. - */ - public Context mergeContext(Context context) { - return CoreUtils.mergeContexts(this.getContext(), context); - } - - /** - * Gets long running operation result. - * - * @param activationResponse the response of activation operation. - * @param httpPipeline the http pipeline. - * @param pollResultType type of poll result. - * @param finalResultType type of final result. - * @param context the context shared by all requests. - * @param type of poll result. - * @param type of final result. - * @return poller flux for poll result and final result. - */ - public PollerFlux, U> getLroResult(Mono>> activationResponse, - HttpPipeline httpPipeline, Type pollResultType, Type finalResultType, Context context) { - return PollerFactory.create(serializerAdapter, httpPipeline, pollResultType, finalResultType, - defaultPollInterval, activationResponse, context); - } - - /** - * Gets long running operation result. - * - * @param activationResponse the response of activation operation. - * @param pollResultType type of poll result. - * @param finalResultType type of final result. - * @param context the context shared by all requests. - * @param type of poll result. - * @param type of final result. - * @return SyncPoller for poll result and final result. - */ - public SyncPoller, U> getLroResult(Response activationResponse, - Type pollResultType, Type finalResultType, Context context) { - return SyncPollerFactory.create(serializerAdapter, httpPipeline, pollResultType, finalResultType, - defaultPollInterval, () -> activationResponse, context); - } - - /** - * Gets the final result, or an error, based on last async poll response. - * - * @param response the last async poll response. - * @param type of poll result. - * @param type of final result. - * @return the final result, or an error. - */ - public Mono getLroFinalResultOrError(AsyncPollResponse, U> response) { - if (response.getStatus() != LongRunningOperationStatus.SUCCESSFULLY_COMPLETED) { - String errorMessage; - ManagementError managementError = null; - HttpResponse errorResponse = null; - PollResult.Error lroError = response.getValue().getError(); - if (lroError != null) { - errorResponse = new HttpResponseImpl(lroError.getResponseStatusCode(), lroError.getResponseHeaders(), - lroError.getResponseBody()); - - errorMessage = response.getValue().getError().getMessage(); - String errorBody = response.getValue().getError().getResponseBody(); - if (errorBody != null) { - // try to deserialize error body to ManagementError - try { - managementError = this.getSerializerAdapter() - .deserialize(errorBody, ManagementError.class, SerializerEncoding.JSON); - if (managementError.getCode() == null || managementError.getMessage() == null) { - managementError = null; - } - } catch (IOException | RuntimeException ioe) { - LOGGER.logThrowableAsWarning(ioe); - } - } - } else { - // fallback to default error message - errorMessage = "Long running operation failed."; - } - if (managementError == null) { - // fallback to default ManagementError - managementError = new ManagementError(response.getStatus().toString(), errorMessage); - } - return Mono.error(new ManagementException(errorMessage, errorResponse, managementError)); - } else { - return response.getFinalResult(); - } - } - - private static final class HttpResponseImpl extends HttpResponse { - private final int statusCode; - - private final byte[] responseBody; - - private final HttpHeaders httpHeaders; - - HttpResponseImpl(int statusCode, HttpHeaders httpHeaders, String responseBody) { - super(null); - this.statusCode = statusCode; - this.httpHeaders = httpHeaders; - this.responseBody = responseBody == null ? null : responseBody.getBytes(StandardCharsets.UTF_8); - } - - public int getStatusCode() { - return statusCode; - } - - public String getHeaderValue(String s) { - return httpHeaders.getValue(HttpHeaderName.fromString(s)); - } - - public HttpHeaders getHeaders() { - return httpHeaders; - } - - public Flux getBody() { - return Flux.just(ByteBuffer.wrap(responseBody)); - } - - public Mono getBodyAsByteArray() { - return Mono.just(responseBody); - } - - public Mono getBodyAsString() { - return Mono.just(new String(responseBody, StandardCharsets.UTF_8)); - } - - public Mono getBodyAsString(Charset charset) { - return Mono.just(new String(responseBody, charset)); - } - } - - private static final ClientLogger LOGGER = new ClientLogger(CombinedImpl.class); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DiskImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DiskImpl.java deleted file mode 100644 index 4c8b72cd4c2..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DiskImpl.java +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner; -import azure.resourcemanager.multiserviceolderversions.combined.models.Disk; -import azure.resourcemanager.multiserviceolderversions.combined.models.DiskProperties; -import com.azure.core.management.Region; -import com.azure.core.management.SystemData; -import com.azure.core.util.Context; -import java.util.Collections; -import java.util.Map; - -public final class DiskImpl implements Disk, Disk.Definition, Disk.Update { - private DiskInner innerObject; - - private final azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager; - - public String id() { - return this.innerModel().id(); - } - - public String name() { - return this.innerModel().name(); - } - - public String type() { - return this.innerModel().type(); - } - - public String location() { - return this.innerModel().location(); - } - - public Map tags() { - Map inner = this.innerModel().tags(); - if (inner != null) { - return Collections.unmodifiableMap(inner); - } else { - return Collections.emptyMap(); - } - } - - public DiskProperties properties() { - return this.innerModel().properties(); - } - - public SystemData systemData() { - return this.innerModel().systemData(); - } - - public Region region() { - return Region.fromName(this.regionName()); - } - - public String regionName() { - return this.location(); - } - - public String resourceGroupName() { - return resourceGroupName; - } - - public DiskInner innerModel() { - return this.innerObject; - } - - private azure.resourcemanager.multiserviceolderversions.combined.CombinedManager manager() { - return this.serviceManager; - } - - private String resourceGroupName; - - private String diskName; - - public DiskImpl withExistingResourceGroup(String resourceGroupName) { - this.resourceGroupName = resourceGroupName; - return this; - } - - public Disk create() { - this.innerObject = serviceManager.serviceClient() - .getDisks() - .createOrUpdate(resourceGroupName, diskName, this.innerModel(), Context.NONE); - return this; - } - - public Disk create(Context context) { - this.innerObject = serviceManager.serviceClient() - .getDisks() - .createOrUpdate(resourceGroupName, diskName, this.innerModel(), context); - return this; - } - - DiskImpl(String name, azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager) { - this.innerObject = new DiskInner(); - this.serviceManager = serviceManager; - this.diskName = name; - } - - public DiskImpl update() { - return this; - } - - public Disk apply() { - this.innerObject = serviceManager.serviceClient() - .getDisks() - .createOrUpdate(resourceGroupName, diskName, this.innerModel(), Context.NONE); - return this; - } - - public Disk apply(Context context) { - this.innerObject = serviceManager.serviceClient() - .getDisks() - .createOrUpdate(resourceGroupName, diskName, this.innerModel(), context); - return this; - } - - DiskImpl(DiskInner innerObject, - azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager) { - this.innerObject = innerObject; - this.serviceManager = serviceManager; - this.resourceGroupName = ResourceManagerUtils.getValueFromIdByName(innerObject.id(), "resourceGroups"); - this.diskName = ResourceManagerUtils.getValueFromIdByName(innerObject.id(), "disksOld"); - } - - public Disk refresh() { - this.innerObject = serviceManager.serviceClient() - .getDisks() - .getByResourceGroupWithResponse(resourceGroupName, diskName, Context.NONE) - .getValue(); - return this; - } - - public Disk refresh(Context context) { - this.innerObject = serviceManager.serviceClient() - .getDisks() - .getByResourceGroupWithResponse(resourceGroupName, diskName, context) - .getValue(); - return this; - } - - public DiskImpl withRegion(Region location) { - this.innerModel().withLocation(location.toString()); - return this; - } - - public DiskImpl withRegion(String location) { - this.innerModel().withLocation(location); - return this; - } - - public DiskImpl withTags(Map tags) { - this.innerModel().withTags(tags); - return this; - } - - public DiskImpl withProperties(DiskProperties properties) { - this.innerModel().withProperties(properties); - return this; - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksClientImpl.java deleted file mode 100644 index c81a1b18357..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksClientImpl.java +++ /dev/null @@ -1,345 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient; -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner; -import com.azure.core.annotation.BodyParam; -import com.azure.core.annotation.ExpectedResponses; -import com.azure.core.annotation.Get; -import com.azure.core.annotation.HeaderParam; -import com.azure.core.annotation.Headers; -import com.azure.core.annotation.Host; -import com.azure.core.annotation.HostParam; -import com.azure.core.annotation.PathParam; -import com.azure.core.annotation.Put; -import com.azure.core.annotation.QueryParam; -import com.azure.core.annotation.ReturnType; -import com.azure.core.annotation.ServiceInterface; -import com.azure.core.annotation.ServiceMethod; -import com.azure.core.annotation.UnexpectedResponseExceptionType; -import com.azure.core.http.rest.Response; -import com.azure.core.http.rest.RestProxy; -import com.azure.core.management.exception.ManagementException; -import com.azure.core.management.polling.PollResult; -import com.azure.core.util.BinaryData; -import com.azure.core.util.Context; -import com.azure.core.util.FluxUtil; -import com.azure.core.util.polling.PollerFlux; -import com.azure.core.util.polling.SyncPoller; -import java.nio.ByteBuffer; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -/** - * An instance of this class provides access to all the operations defined in DisksClient. - */ -public final class DisksClientImpl implements DisksClient { - /** - * The proxy service used to perform REST calls. - */ - private final DisksService service; - - /** - * The service client containing this operation class. - */ - private final CombinedImpl client; - - /** - * Initializes an instance of DisksClientImpl. - * - * @param client the instance of the service client containing this operation class. - */ - DisksClientImpl(CombinedImpl client) { - this.service = RestProxy.create(DisksService.class, client.getHttpPipeline(), client.getSerializerAdapter()); - this.client = client; - } - - /** - * The interface defining all the services for CombinedDisks to be used by the proxy service to perform REST calls. - */ - @Host("{endpoint}") - @ServiceInterface(name = "CombinedDisks") - public interface DisksService { - @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disksOld/{diskName}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono> getByResourceGroup(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("diskName") String diskName, - @HeaderParam("Accept") String accept, Context context); - - @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disksOld/{diskName}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Response getByResourceGroupSync(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("diskName") String diskName, - @HeaderParam("Accept") String accept, Context context); - - @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disksOld/{diskName}") - @ExpectedResponses({ 200, 201 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono>> createOrUpdate(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("diskName") String diskName, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") DiskInner resource, Context context); - - @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disksOld/{diskName}") - @ExpectedResponses({ 200, 201 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Response createOrUpdateSync(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("diskName") String diskName, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") DiskInner resource, Context context); - } - - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getByResourceGroupWithResponseAsync(String resourceGroupName, String diskName) { - final String apiVersion = "2024-03-02"; - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), apiVersion, - this.client.getSubscriptionId(), resourceGroupName, diskName, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono getByResourceGroupAsync(String resourceGroupName, String diskName) { - return getByResourceGroupWithResponseAsync(resourceGroupName, diskName) - .flatMap(res -> Mono.justOrEmpty(res.getValue())); - } - - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getByResourceGroupWithResponse(String resourceGroupName, String diskName, - Context context) { - final String apiVersion = "2024-03-02"; - final String accept = "application/json"; - return service.getByResourceGroupSync(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, diskName, accept, context); - } - - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public DiskInner getByResourceGroup(String resourceGroupName, String diskName) { - return getByResourceGroupWithResponse(resourceGroupName, diskName, Context.NONE).getValue(); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> createOrUpdateWithResponseAsync(String resourceGroupName, String diskName, - DiskInner resource) { - final String apiVersion = "2024-03-02"; - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), apiVersion, - this.client.getSubscriptionId(), resourceGroupName, diskName, contentType, accept, resource, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Response createOrUpdateWithResponse(String resourceGroupName, String diskName, - DiskInner resource) { - final String apiVersion = "2024-03-02"; - final String contentType = "application/json"; - final String accept = "application/json"; - return service.createOrUpdateSync(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, diskName, contentType, accept, resource, Context.NONE); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Response createOrUpdateWithResponse(String resourceGroupName, String diskName, - DiskInner resource, Context context) { - final String apiVersion = "2024-03-02"; - final String contentType = "application/json"; - final String accept = "application/json"; - return service.createOrUpdateSync(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, diskName, contentType, accept, resource, context); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of disk resource. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, DiskInner> beginCreateOrUpdateAsync(String resourceGroupName, - String diskName, DiskInner resource) { - Mono>> mono = createOrUpdateWithResponseAsync(resourceGroupName, diskName, resource); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), DiskInner.class, - DiskInner.class, this.client.getContext()); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of disk resource. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, DiskInner> beginCreateOrUpdate(String resourceGroupName, String diskName, - DiskInner resource) { - Response response = createOrUpdateWithResponse(resourceGroupName, diskName, resource); - return this.client.getLroResult(response, DiskInner.class, DiskInner.class, Context.NONE); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of disk resource. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, DiskInner> beginCreateOrUpdate(String resourceGroupName, String diskName, - DiskInner resource, Context context) { - Response response = createOrUpdateWithResponse(resourceGroupName, diskName, resource, context); - return this.client.getLroResult(response, DiskInner.class, DiskInner.class, context); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createOrUpdateAsync(String resourceGroupName, String diskName, DiskInner resource) { - return beginCreateOrUpdateAsync(resourceGroupName, diskName, resource).last() - .flatMap(this.client::getLroFinalResultOrError); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public DiskInner createOrUpdate(String resourceGroupName, String diskName, DiskInner resource) { - return beginCreateOrUpdate(resourceGroupName, diskName, resource).getFinalResult(); - } - - /** - * Creates or updates a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return disk resource. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public DiskInner createOrUpdate(String resourceGroupName, String diskName, DiskInner resource, Context context) { - return beginCreateOrUpdate(resourceGroupName, diskName, resource, context).getFinalResult(); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksImpl.java deleted file mode 100644 index aa536e533b0..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient; -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner; -import azure.resourcemanager.multiserviceolderversions.combined.models.Disk; -import azure.resourcemanager.multiserviceolderversions.combined.models.Disks; -import com.azure.core.http.rest.Response; -import com.azure.core.http.rest.SimpleResponse; -import com.azure.core.util.Context; -import com.azure.core.util.logging.ClientLogger; - -public final class DisksImpl implements Disks { - private static final ClientLogger LOGGER = new ClientLogger(DisksImpl.class); - - private final DisksClient innerClient; - - private final azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager; - - public DisksImpl(DisksClient innerClient, - azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager) { - this.innerClient = innerClient; - this.serviceManager = serviceManager; - } - - public Response getByResourceGroupWithResponse(String resourceGroupName, String diskName, Context context) { - Response inner - = this.serviceClient().getByResourceGroupWithResponse(resourceGroupName, diskName, context); - return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new DiskImpl(inner.getValue(), this.manager())); - } - - public Disk getByResourceGroup(String resourceGroupName, String diskName) { - DiskInner inner = this.serviceClient().getByResourceGroup(resourceGroupName, diskName); - if (inner != null) { - return new DiskImpl(inner, this.manager()); - } else { - return null; - } - } - - public Disk getById(String id) { - String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); - if (resourceGroupName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); - } - String diskName = ResourceManagerUtils.getValueFromIdByName(id, "disksOld"); - if (diskName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'disksOld'.", id))); - } - return this.getByResourceGroupWithResponse(resourceGroupName, diskName, Context.NONE).getValue(); - } - - public Response getByIdWithResponse(String id, Context context) { - String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); - if (resourceGroupName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); - } - String diskName = ResourceManagerUtils.getValueFromIdByName(id, "disksOld"); - if (diskName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'disksOld'.", id))); - } - return this.getByResourceGroupWithResponse(resourceGroupName, diskName, context); - } - - private DisksClient serviceClient() { - return this.innerClient; - } - - private azure.resourcemanager.multiserviceolderversions.combined.CombinedManager manager() { - return this.serviceManager; - } - - public DiskImpl define(String name) { - return new DiskImpl(name, this.manager()); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/ResourceManagerUtils.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/ResourceManagerUtils.java deleted file mode 100644 index e2a37af0be2..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/ResourceManagerUtils.java +++ /dev/null @@ -1,195 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import com.azure.core.http.rest.PagedFlux; -import com.azure.core.http.rest.PagedIterable; -import com.azure.core.http.rest.PagedResponse; -import com.azure.core.http.rest.PagedResponseBase; -import com.azure.core.util.CoreUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import reactor.core.publisher.Flux; - -final class ResourceManagerUtils { - private ResourceManagerUtils() { - } - - static String getValueFromIdByName(String id, String name) { - if (id == null) { - return null; - } - Iterator itr = Arrays.stream(id.split("/")).iterator(); - while (itr.hasNext()) { - String part = itr.next(); - if (part != null && !part.trim().isEmpty()) { - if (part.equalsIgnoreCase(name)) { - if (itr.hasNext()) { - return itr.next(); - } else { - return null; - } - } - } - } - return null; - } - - static String getValueFromIdByParameterName(String id, String pathTemplate, String parameterName) { - if (id == null || pathTemplate == null) { - return null; - } - String parameterNameParentheses = "{" + parameterName + "}"; - List idSegmentsReverted = Arrays.asList(id.split("/")); - List pathSegments = Arrays.asList(pathTemplate.split("/")); - Collections.reverse(idSegmentsReverted); - Iterator idItrReverted = idSegmentsReverted.iterator(); - int pathIndex = pathSegments.size(); - while (idItrReverted.hasNext() && pathIndex > 0) { - String idSegment = idItrReverted.next(); - String pathSegment = pathSegments.get(--pathIndex); - if (!CoreUtils.isNullOrEmpty(idSegment) && !CoreUtils.isNullOrEmpty(pathSegment)) { - if (pathSegment.equalsIgnoreCase(parameterNameParentheses)) { - if (pathIndex == 0 || (pathIndex == 1 && pathSegments.get(0).isEmpty())) { - List segments = new ArrayList<>(); - segments.add(idSegment); - idItrReverted.forEachRemaining(segments::add); - Collections.reverse(segments); - if (!segments.isEmpty() && segments.get(0).isEmpty()) { - segments.remove(0); - } - return String.join("/", segments); - } else { - return idSegment; - } - } - } - } - return null; - } - - static PagedIterable mapPage(PagedIterable pageIterable, Function mapper) { - return new PagedIterableImpl<>(pageIterable, mapper); - } - - private static final class PagedIterableImpl extends PagedIterable { - - private final PagedIterable pagedIterable; - private final Function mapper; - private final Function, PagedResponse> pageMapper; - - private PagedIterableImpl(PagedIterable pagedIterable, Function mapper) { - super(PagedFlux.create(() -> (continuationToken, pageSize) -> Flux - .fromStream(pagedIterable.streamByPage().map(getPageMapper(mapper))))); - this.pagedIterable = pagedIterable; - this.mapper = mapper; - this.pageMapper = getPageMapper(mapper); - } - - private static Function, PagedResponse> getPageMapper(Function mapper) { - return page -> new PagedResponseBase(page.getRequest(), page.getStatusCode(), page.getHeaders(), - page.getElements().stream().map(mapper).collect(Collectors.toList()), page.getContinuationToken(), - null); - } - - @Override - public Stream stream() { - return pagedIterable.stream().map(mapper); - } - - @Override - public Stream> streamByPage() { - return pagedIterable.streamByPage().map(pageMapper); - } - - @Override - public Stream> streamByPage(String continuationToken) { - return pagedIterable.streamByPage(continuationToken).map(pageMapper); - } - - @Override - public Stream> streamByPage(int preferredPageSize) { - return pagedIterable.streamByPage(preferredPageSize).map(pageMapper); - } - - @Override - public Stream> streamByPage(String continuationToken, int preferredPageSize) { - return pagedIterable.streamByPage(continuationToken, preferredPageSize).map(pageMapper); - } - - @Override - public Iterator iterator() { - return new IteratorImpl<>(pagedIterable.iterator(), mapper); - } - - @Override - public Iterable> iterableByPage() { - return new IterableImpl<>(pagedIterable.iterableByPage(), pageMapper); - } - - @Override - public Iterable> iterableByPage(String continuationToken) { - return new IterableImpl<>(pagedIterable.iterableByPage(continuationToken), pageMapper); - } - - @Override - public Iterable> iterableByPage(int preferredPageSize) { - return new IterableImpl<>(pagedIterable.iterableByPage(preferredPageSize), pageMapper); - } - - @Override - public Iterable> iterableByPage(String continuationToken, int preferredPageSize) { - return new IterableImpl<>(pagedIterable.iterableByPage(continuationToken, preferredPageSize), pageMapper); - } - } - - private static final class IteratorImpl implements Iterator { - - private final Iterator iterator; - private final Function mapper; - - private IteratorImpl(Iterator iterator, Function mapper) { - this.iterator = iterator; - this.mapper = mapper; - } - - @Override - public boolean hasNext() { - return iterator.hasNext(); - } - - @Override - public S next() { - return mapper.apply(iterator.next()); - } - - @Override - public void remove() { - iterator.remove(); - } - } - - private static final class IterableImpl implements Iterable { - - private final Iterable iterable; - private final Function mapper; - - private IterableImpl(Iterable iterable, Function mapper) { - this.iterable = iterable; - this.mapper = mapper; - } - - @Override - public Iterator iterator() { - return new IteratorImpl<>(iterable.iterator(), mapper); - } - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachineImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachineImpl.java deleted file mode 100644 index 5b3de7436c8..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachineImpl.java +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner; -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachine; -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachineProperties; -import com.azure.core.management.Region; -import com.azure.core.management.SystemData; -import com.azure.core.util.Context; -import java.util.Collections; -import java.util.Map; - -public final class VirtualMachineImpl implements VirtualMachine, VirtualMachine.Definition, VirtualMachine.Update { - private VirtualMachineInner innerObject; - - private final azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager; - - public String id() { - return this.innerModel().id(); - } - - public String name() { - return this.innerModel().name(); - } - - public String type() { - return this.innerModel().type(); - } - - public String location() { - return this.innerModel().location(); - } - - public Map tags() { - Map inner = this.innerModel().tags(); - if (inner != null) { - return Collections.unmodifiableMap(inner); - } else { - return Collections.emptyMap(); - } - } - - public VirtualMachineProperties properties() { - return this.innerModel().properties(); - } - - public SystemData systemData() { - return this.innerModel().systemData(); - } - - public Region region() { - return Region.fromName(this.regionName()); - } - - public String regionName() { - return this.location(); - } - - public String resourceGroupName() { - return resourceGroupName; - } - - public VirtualMachineInner innerModel() { - return this.innerObject; - } - - private azure.resourcemanager.multiserviceolderversions.combined.CombinedManager manager() { - return this.serviceManager; - } - - private String resourceGroupName; - - private String vmName; - - public VirtualMachineImpl withExistingResourceGroup(String resourceGroupName) { - this.resourceGroupName = resourceGroupName; - return this; - } - - public VirtualMachine create() { - this.innerObject = serviceManager.serviceClient() - .getVirtualMachines() - .createOrUpdate(resourceGroupName, vmName, this.innerModel(), Context.NONE); - return this; - } - - public VirtualMachine create(Context context) { - this.innerObject = serviceManager.serviceClient() - .getVirtualMachines() - .createOrUpdate(resourceGroupName, vmName, this.innerModel(), context); - return this; - } - - VirtualMachineImpl(String name, - azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager) { - this.innerObject = new VirtualMachineInner(); - this.serviceManager = serviceManager; - this.vmName = name; - } - - public VirtualMachineImpl update() { - return this; - } - - public VirtualMachine apply() { - this.innerObject = serviceManager.serviceClient() - .getVirtualMachines() - .createOrUpdate(resourceGroupName, vmName, this.innerModel(), Context.NONE); - return this; - } - - public VirtualMachine apply(Context context) { - this.innerObject = serviceManager.serviceClient() - .getVirtualMachines() - .createOrUpdate(resourceGroupName, vmName, this.innerModel(), context); - return this; - } - - VirtualMachineImpl(VirtualMachineInner innerObject, - azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager) { - this.innerObject = innerObject; - this.serviceManager = serviceManager; - this.resourceGroupName = ResourceManagerUtils.getValueFromIdByName(innerObject.id(), "resourceGroups"); - this.vmName = ResourceManagerUtils.getValueFromIdByName(innerObject.id(), "virtualMachinesOld"); - } - - public VirtualMachine refresh() { - this.innerObject = serviceManager.serviceClient() - .getVirtualMachines() - .getByResourceGroupWithResponse(resourceGroupName, vmName, Context.NONE) - .getValue(); - return this; - } - - public VirtualMachine refresh(Context context) { - this.innerObject = serviceManager.serviceClient() - .getVirtualMachines() - .getByResourceGroupWithResponse(resourceGroupName, vmName, context) - .getValue(); - return this; - } - - public VirtualMachineImpl withRegion(Region location) { - this.innerModel().withLocation(location.toString()); - return this; - } - - public VirtualMachineImpl withRegion(String location) { - this.innerModel().withLocation(location); - return this; - } - - public VirtualMachineImpl withTags(Map tags) { - this.innerModel().withTags(tags); - return this; - } - - public VirtualMachineImpl withProperties(VirtualMachineProperties properties) { - this.innerModel().withProperties(properties); - return this; - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesClientImpl.java deleted file mode 100644 index eafb898b300..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesClientImpl.java +++ /dev/null @@ -1,361 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient; -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner; -import com.azure.core.annotation.BodyParam; -import com.azure.core.annotation.ExpectedResponses; -import com.azure.core.annotation.Get; -import com.azure.core.annotation.HeaderParam; -import com.azure.core.annotation.Headers; -import com.azure.core.annotation.Host; -import com.azure.core.annotation.HostParam; -import com.azure.core.annotation.PathParam; -import com.azure.core.annotation.Put; -import com.azure.core.annotation.QueryParam; -import com.azure.core.annotation.ReturnType; -import com.azure.core.annotation.ServiceInterface; -import com.azure.core.annotation.ServiceMethod; -import com.azure.core.annotation.UnexpectedResponseExceptionType; -import com.azure.core.http.rest.Response; -import com.azure.core.http.rest.RestProxy; -import com.azure.core.management.exception.ManagementException; -import com.azure.core.management.polling.PollResult; -import com.azure.core.util.BinaryData; -import com.azure.core.util.Context; -import com.azure.core.util.FluxUtil; -import com.azure.core.util.polling.PollerFlux; -import com.azure.core.util.polling.SyncPoller; -import java.nio.ByteBuffer; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -/** - * An instance of this class provides access to all the operations defined in VirtualMachinesClient. - */ -public final class VirtualMachinesClientImpl implements VirtualMachinesClient { - /** - * The proxy service used to perform REST calls. - */ - private final VirtualMachinesService service; - - /** - * The service client containing this operation class. - */ - private final CombinedImpl client; - - /** - * Initializes an instance of VirtualMachinesClientImpl. - * - * @param client the instance of the service client containing this operation class. - */ - VirtualMachinesClientImpl(CombinedImpl client) { - this.service - = RestProxy.create(VirtualMachinesService.class, client.getHttpPipeline(), client.getSerializerAdapter()); - this.client = client; - } - - /** - * The interface defining all the services for CombinedVirtualMachines to be used by the proxy service to perform - * REST calls. - */ - @Host("{endpoint}") - @ServiceInterface(name = "CombinedVirtualMachines") - public interface VirtualMachinesService { - @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachinesOld/{vmName}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono> getByResourceGroup(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("vmName") String vmName, - @HeaderParam("Accept") String accept, Context context); - - @Headers({ "Content-Type: application/json" }) - @Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachinesOld/{vmName}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Response getByResourceGroupSync(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("vmName") String vmName, - @HeaderParam("Accept") String accept, Context context); - - @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachinesOld/{vmName}") - @ExpectedResponses({ 200, 201 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Mono>> createOrUpdate(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("vmName") String vmName, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") VirtualMachineInner resource, Context context); - - @Put("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachinesOld/{vmName}") - @ExpectedResponses({ 200, 201 }) - @UnexpectedResponseExceptionType(ManagementException.class) - Response createOrUpdateSync(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId, - @PathParam("resourceGroupName") String resourceGroupName, @PathParam("vmName") String vmName, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") VirtualMachineInner resource, Context context); - } - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> getByResourceGroupWithResponseAsync(String resourceGroupName, - String vmName) { - final String apiVersion = "2024-11-01"; - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.getByResourceGroup(this.client.getEndpoint(), apiVersion, - this.client.getSubscriptionId(), resourceGroupName, vmName, accept, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono getByResourceGroupAsync(String resourceGroupName, String vmName) { - return getByResourceGroupWithResponseAsync(resourceGroupName, vmName) - .flatMap(res -> Mono.justOrEmpty(res.getValue())); - } - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getByResourceGroupWithResponse(String resourceGroupName, String vmName, - Context context) { - final String apiVersion = "2024-11-01"; - final String accept = "application/json"; - return service.getByResourceGroupSync(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, vmName, accept, context); - } - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public VirtualMachineInner getByResourceGroup(String resourceGroupName, String vmName) { - return getByResourceGroupWithResponse(resourceGroupName, vmName, Context.NONE).getValue(); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono>> createOrUpdateWithResponseAsync(String resourceGroupName, String vmName, - VirtualMachineInner resource) { - final String apiVersion = "2024-11-01"; - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.createOrUpdate(this.client.getEndpoint(), apiVersion, - this.client.getSubscriptionId(), resourceGroupName, vmName, contentType, accept, resource, context)) - .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Response createOrUpdateWithResponse(String resourceGroupName, String vmName, - VirtualMachineInner resource) { - final String apiVersion = "2024-11-01"; - final String contentType = "application/json"; - final String accept = "application/json"; - return service.createOrUpdateSync(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, vmName, contentType, accept, resource, Context.NONE); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Response createOrUpdateWithResponse(String resourceGroupName, String vmName, - VirtualMachineInner resource, Context context) { - final String apiVersion = "2024-11-01"; - final String contentType = "application/json"; - final String accept = "application/json"; - return service.createOrUpdateSync(this.client.getEndpoint(), apiVersion, this.client.getSubscriptionId(), - resourceGroupName, vmName, contentType, accept, resource, context); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link PollerFlux} for polling of describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - private PollerFlux, VirtualMachineInner> - beginCreateOrUpdateAsync(String resourceGroupName, String vmName, VirtualMachineInner resource) { - Mono>> mono = createOrUpdateWithResponseAsync(resourceGroupName, vmName, resource); - return this.client.getLroResult(mono, this.client.getHttpPipeline(), - VirtualMachineInner.class, VirtualMachineInner.class, this.client.getContext()); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, VirtualMachineInner> - beginCreateOrUpdate(String resourceGroupName, String vmName, VirtualMachineInner resource) { - Response response = createOrUpdateWithResponse(resourceGroupName, vmName, resource); - return this.client.getLroResult(response, VirtualMachineInner.class, - VirtualMachineInner.class, Context.NONE); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the {@link SyncPoller} for polling of describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) - public SyncPoller, VirtualMachineInner> - beginCreateOrUpdate(String resourceGroupName, String vmName, VirtualMachineInner resource, Context context) { - Response response = createOrUpdateWithResponse(resourceGroupName, vmName, resource, context); - return this.client.getLroResult(response, VirtualMachineInner.class, - VirtualMachineInner.class, context); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono createOrUpdateAsync(String resourceGroupName, String vmName, - VirtualMachineInner resource) { - return beginCreateOrUpdateAsync(resourceGroupName, vmName, resource).last() - .flatMap(this.client::getLroFinalResultOrError); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public VirtualMachineInner createOrUpdate(String resourceGroupName, String vmName, VirtualMachineInner resource) { - return beginCreateOrUpdate(resourceGroupName, vmName, resource).getFinalResult(); - } - - /** - * The operation to create or update a virtual machine. Please note some properties can be set only during virtual - * machine creation. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param resource Resource create parameters. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public VirtualMachineInner createOrUpdate(String resourceGroupName, String vmName, VirtualMachineInner resource, - Context context) { - return beginCreateOrUpdate(resourceGroupName, vmName, resource, context).getFinalResult(); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesImpl.java deleted file mode 100644 index c9e67bd5e94..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesImpl.java +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.implementation; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient; -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner; -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachine; -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachines; -import com.azure.core.http.rest.Response; -import com.azure.core.http.rest.SimpleResponse; -import com.azure.core.util.Context; -import com.azure.core.util.logging.ClientLogger; - -public final class VirtualMachinesImpl implements VirtualMachines { - private static final ClientLogger LOGGER = new ClientLogger(VirtualMachinesImpl.class); - - private final VirtualMachinesClient innerClient; - - private final azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager; - - public VirtualMachinesImpl(VirtualMachinesClient innerClient, - azure.resourcemanager.multiserviceolderversions.combined.CombinedManager serviceManager) { - this.innerClient = innerClient; - this.serviceManager = serviceManager; - } - - public Response getByResourceGroupWithResponse(String resourceGroupName, String vmName, - Context context) { - Response inner - = this.serviceClient().getByResourceGroupWithResponse(resourceGroupName, vmName, context); - return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), - new VirtualMachineImpl(inner.getValue(), this.manager())); - } - - public VirtualMachine getByResourceGroup(String resourceGroupName, String vmName) { - VirtualMachineInner inner = this.serviceClient().getByResourceGroup(resourceGroupName, vmName); - if (inner != null) { - return new VirtualMachineImpl(inner, this.manager()); - } else { - return null; - } - } - - public VirtualMachine getById(String id) { - String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); - if (resourceGroupName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); - } - String vmName = ResourceManagerUtils.getValueFromIdByName(id, "virtualMachinesOld"); - if (vmName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'virtualMachinesOld'.", id))); - } - return this.getByResourceGroupWithResponse(resourceGroupName, vmName, Context.NONE).getValue(); - } - - public Response getByIdWithResponse(String id, Context context) { - String resourceGroupName = ResourceManagerUtils.getValueFromIdByName(id, "resourceGroups"); - if (resourceGroupName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'resourceGroups'.", id))); - } - String vmName = ResourceManagerUtils.getValueFromIdByName(id, "virtualMachinesOld"); - if (vmName == null) { - throw LOGGER.logExceptionAsError(new IllegalArgumentException( - String.format("The resource ID '%s' is not valid. Missing path segment 'virtualMachinesOld'.", id))); - } - return this.getByResourceGroupWithResponse(resourceGroupName, vmName, context); - } - - private VirtualMachinesClient serviceClient() { - return this.innerClient; - } - - private azure.resourcemanager.multiserviceolderversions.combined.CombinedManager manager() { - return this.serviceManager; - } - - public VirtualMachineImpl define(String name) { - return new VirtualMachineImpl(name, this.manager()); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/package-info.java deleted file mode 100644 index 0fe238e297b..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -/** - * Package containing the implementations for Compute. - * Compute Client. - */ -package azure.resourcemanager.multiserviceolderversions.combined.implementation; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disk.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disk.java deleted file mode 100644 index 29add8d7ce7..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disk.java +++ /dev/null @@ -1,265 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.models; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner; -import com.azure.core.management.Region; -import com.azure.core.management.SystemData; -import com.azure.core.util.Context; -import java.util.Map; - -/** - * An immutable client-side representation of Disk. - */ -public interface Disk { - /** - * Gets the id property: Fully qualified resource Id for the resource. - * - * @return the id value. - */ - String id(); - - /** - * Gets the name property: The name of the resource. - * - * @return the name value. - */ - String name(); - - /** - * Gets the type property: The type of the resource. - * - * @return the type value. - */ - String type(); - - /** - * Gets the location property: The geo-location where the resource lives. - * - * @return the location value. - */ - String location(); - - /** - * Gets the tags property: Resource tags. - * - * @return the tags value. - */ - Map tags(); - - /** - * Gets the properties property: The resource-specific properties for this resource. - * - * @return the properties value. - */ - DiskProperties properties(); - - /** - * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. - * - * @return the systemData value. - */ - SystemData systemData(); - - /** - * Gets the region of the resource. - * - * @return the region of the resource. - */ - Region region(); - - /** - * Gets the name of the resource region. - * - * @return the name of the resource region. - */ - String regionName(); - - /** - * Gets the name of the resource group. - * - * @return the name of the resource group. - */ - String resourceGroupName(); - - /** - * Gets the inner azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner object. - * - * @return the inner object. - */ - DiskInner innerModel(); - - /** - * The entirety of the Disk definition. - */ - interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLocation, - DefinitionStages.WithResourceGroup, DefinitionStages.WithCreate { - } - - /** - * The Disk definition stages. - */ - interface DefinitionStages { - /** - * The first stage of the Disk definition. - */ - interface Blank extends WithLocation { - } - - /** - * The stage of the Disk definition allowing to specify location. - */ - interface WithLocation { - /** - * Specifies the region for the resource. - * - * @param location The geo-location where the resource lives. - * @return the next definition stage. - */ - WithResourceGroup withRegion(Region location); - - /** - * Specifies the region for the resource. - * - * @param location The geo-location where the resource lives. - * @return the next definition stage. - */ - WithResourceGroup withRegion(String location); - } - - /** - * The stage of the Disk definition allowing to specify parent resource. - */ - interface WithResourceGroup { - /** - * Specifies resourceGroupName. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @return the next definition stage. - */ - WithCreate withExistingResourceGroup(String resourceGroupName); - } - - /** - * The stage of the Disk definition which contains all the minimum required properties for the resource to be - * created, but also allows for any other optional properties to be specified. - */ - interface WithCreate extends DefinitionStages.WithTags, DefinitionStages.WithProperties { - /** - * Executes the create request. - * - * @return the created resource. - */ - Disk create(); - - /** - * Executes the create request. - * - * @param context The context to associate with this operation. - * @return the created resource. - */ - Disk create(Context context); - } - - /** - * The stage of the Disk definition allowing to specify tags. - */ - interface WithTags { - /** - * Specifies the tags property: Resource tags.. - * - * @param tags Resource tags. - * @return the next definition stage. - */ - WithCreate withTags(Map tags); - } - - /** - * The stage of the Disk definition allowing to specify properties. - */ - interface WithProperties { - /** - * Specifies the properties property: The resource-specific properties for this resource.. - * - * @param properties The resource-specific properties for this resource. - * @return the next definition stage. - */ - WithCreate withProperties(DiskProperties properties); - } - } - - /** - * Begins update for the Disk resource. - * - * @return the stage of resource update. - */ - Disk.Update update(); - - /** - * The template for Disk update. - */ - interface Update extends UpdateStages.WithTags, UpdateStages.WithProperties { - /** - * Executes the update request. - * - * @return the updated resource. - */ - Disk apply(); - - /** - * Executes the update request. - * - * @param context The context to associate with this operation. - * @return the updated resource. - */ - Disk apply(Context context); - } - - /** - * The Disk update stages. - */ - interface UpdateStages { - /** - * The stage of the Disk update allowing to specify tags. - */ - interface WithTags { - /** - * Specifies the tags property: Resource tags.. - * - * @param tags Resource tags. - * @return the next definition stage. - */ - Update withTags(Map tags); - } - - /** - * The stage of the Disk update allowing to specify properties. - */ - interface WithProperties { - /** - * Specifies the properties property: The resource-specific properties for this resource.. - * - * @param properties The resource-specific properties for this resource. - * @return the next definition stage. - */ - Update withProperties(DiskProperties properties); - } - } - - /** - * Refreshes the resource to sync with Azure. - * - * @return the refreshed resource. - */ - Disk refresh(); - - /** - * Refreshes the resource to sync with Azure. - * - * @param context The context to associate with this operation. - * @return the refreshed resource. - */ - Disk refresh(Context context); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/DiskProperties.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/DiskProperties.java deleted file mode 100644 index f3fa7ddcc02..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/DiskProperties.java +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.models; - -import com.azure.core.annotation.Fluent; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; - -/** - * Disk resource properties. - */ -@Fluent -public final class DiskProperties implements JsonSerializable { - /* - * The provisioningState property. - */ - private ResourceProvisioningState provisioningState; - - /* - * Size of the disk in GB. Only available in version 2024-03-02. - */ - private Integer diskSizeGB; - - /** - * Creates an instance of DiskProperties class. - */ - public DiskProperties() { - } - - /** - * Get the provisioningState property: The provisioningState property. - * - * @return the provisioningState value. - */ - public ResourceProvisioningState provisioningState() { - return this.provisioningState; - } - - /** - * Get the diskSizeGB property: Size of the disk in GB. Only available in version 2024-03-02. - * - * @return the diskSizeGB value. - */ - public Integer diskSizeGB() { - return this.diskSizeGB; - } - - /** - * Set the diskSizeGB property: Size of the disk in GB. Only available in version 2024-03-02. - * - * @param diskSizeGB the diskSizeGB value to set. - * @return the DiskProperties object itself. - */ - public DiskProperties withDiskSizeGB(Integer diskSizeGB) { - this.diskSizeGB = diskSizeGB; - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeNumberField("diskSizeGB", this.diskSizeGB); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of DiskProperties from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of DiskProperties if the JsonReader was pointing to an instance of it, or null if it was - * pointing to JSON null. - * @throws IOException If an error occurs while reading the DiskProperties. - */ - public static DiskProperties fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - DiskProperties deserializedDiskProperties = new DiskProperties(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("provisioningState".equals(fieldName)) { - deserializedDiskProperties.provisioningState - = ResourceProvisioningState.fromString(reader.getString()); - } else if ("diskSizeGB".equals(fieldName)) { - deserializedDiskProperties.diskSizeGB = reader.getNullable(JsonReader::getInt); - } else { - reader.skipChildren(); - } - } - - return deserializedDiskProperties; - }); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disks.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disks.java deleted file mode 100644 index 8f025c9db86..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disks.java +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.models; - -import com.azure.core.http.rest.Response; -import com.azure.core.util.Context; - -/** - * Resource collection API of Disks. - */ -public interface Disks { - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk along with {@link Response}. - */ - Response getByResourceGroupWithResponse(String resourceGroupName, String diskName, Context context); - - /** - * Gets information about a disk. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param diskName The name of the Disk. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk. - */ - Disk getByResourceGroup(String resourceGroupName, String diskName); - - /** - * Gets information about a disk. - * - * @param id the resource ID. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk along with {@link Response}. - */ - Disk getById(String id); - - /** - * Gets information about a disk. - * - * @param id the resource ID. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return information about a disk along with {@link Response}. - */ - Response getByIdWithResponse(String id, Context context); - - /** - * Begins definition for a new Disk resource. - * - * @param name resource name. - * @return the first stage of the new Disk definition. - */ - Disk.DefinitionStages.Blank define(String name); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/ResourceProvisioningState.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/ResourceProvisioningState.java deleted file mode 100644 index cbd8e8c6912..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/ResourceProvisioningState.java +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.models; - -import com.azure.core.util.ExpandableStringEnum; -import java.util.Collection; - -/** - * The provisioning state of a resource type. - */ -public final class ResourceProvisioningState extends ExpandableStringEnum { - /** - * Resource has been created. - */ - public static final ResourceProvisioningState SUCCEEDED = fromString("Succeeded"); - - /** - * Resource creation failed. - */ - public static final ResourceProvisioningState FAILED = fromString("Failed"); - - /** - * Resource creation was canceled. - */ - public static final ResourceProvisioningState CANCELED = fromString("Canceled"); - - /** - * Creates a new instance of ResourceProvisioningState value. - * - * @deprecated Use the {@link #fromString(String)} factory method. - */ - @Deprecated - public ResourceProvisioningState() { - } - - /** - * Creates or finds a ResourceProvisioningState from its string representation. - * - * @param name a name to look for. - * @return the corresponding ResourceProvisioningState. - */ - public static ResourceProvisioningState fromString(String name) { - return fromString(name, ResourceProvisioningState.class); - } - - /** - * Gets known ResourceProvisioningState values. - * - * @return known ResourceProvisioningState values. - */ - public static Collection values() { - return values(ResourceProvisioningState.class); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachine.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachine.java deleted file mode 100644 index e082f9f5600..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachine.java +++ /dev/null @@ -1,265 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.models; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner; -import com.azure.core.management.Region; -import com.azure.core.management.SystemData; -import com.azure.core.util.Context; -import java.util.Map; - -/** - * An immutable client-side representation of VirtualMachine. - */ -public interface VirtualMachine { - /** - * Gets the id property: Fully qualified resource Id for the resource. - * - * @return the id value. - */ - String id(); - - /** - * Gets the name property: The name of the resource. - * - * @return the name value. - */ - String name(); - - /** - * Gets the type property: The type of the resource. - * - * @return the type value. - */ - String type(); - - /** - * Gets the location property: The geo-location where the resource lives. - * - * @return the location value. - */ - String location(); - - /** - * Gets the tags property: Resource tags. - * - * @return the tags value. - */ - Map tags(); - - /** - * Gets the properties property: The resource-specific properties for this resource. - * - * @return the properties value. - */ - VirtualMachineProperties properties(); - - /** - * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information. - * - * @return the systemData value. - */ - SystemData systemData(); - - /** - * Gets the region of the resource. - * - * @return the region of the resource. - */ - Region region(); - - /** - * Gets the name of the resource region. - * - * @return the name of the resource region. - */ - String regionName(); - - /** - * Gets the name of the resource group. - * - * @return the name of the resource group. - */ - String resourceGroupName(); - - /** - * Gets the inner azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner object. - * - * @return the inner object. - */ - VirtualMachineInner innerModel(); - - /** - * The entirety of the VirtualMachine definition. - */ - interface Definition extends DefinitionStages.Blank, DefinitionStages.WithLocation, - DefinitionStages.WithResourceGroup, DefinitionStages.WithCreate { - } - - /** - * The VirtualMachine definition stages. - */ - interface DefinitionStages { - /** - * The first stage of the VirtualMachine definition. - */ - interface Blank extends WithLocation { - } - - /** - * The stage of the VirtualMachine definition allowing to specify location. - */ - interface WithLocation { - /** - * Specifies the region for the resource. - * - * @param location The geo-location where the resource lives. - * @return the next definition stage. - */ - WithResourceGroup withRegion(Region location); - - /** - * Specifies the region for the resource. - * - * @param location The geo-location where the resource lives. - * @return the next definition stage. - */ - WithResourceGroup withRegion(String location); - } - - /** - * The stage of the VirtualMachine definition allowing to specify parent resource. - */ - interface WithResourceGroup { - /** - * Specifies resourceGroupName. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @return the next definition stage. - */ - WithCreate withExistingResourceGroup(String resourceGroupName); - } - - /** - * The stage of the VirtualMachine definition which contains all the minimum required properties for the - * resource to be created, but also allows for any other optional properties to be specified. - */ - interface WithCreate extends DefinitionStages.WithTags, DefinitionStages.WithProperties { - /** - * Executes the create request. - * - * @return the created resource. - */ - VirtualMachine create(); - - /** - * Executes the create request. - * - * @param context The context to associate with this operation. - * @return the created resource. - */ - VirtualMachine create(Context context); - } - - /** - * The stage of the VirtualMachine definition allowing to specify tags. - */ - interface WithTags { - /** - * Specifies the tags property: Resource tags.. - * - * @param tags Resource tags. - * @return the next definition stage. - */ - WithCreate withTags(Map tags); - } - - /** - * The stage of the VirtualMachine definition allowing to specify properties. - */ - interface WithProperties { - /** - * Specifies the properties property: The resource-specific properties for this resource.. - * - * @param properties The resource-specific properties for this resource. - * @return the next definition stage. - */ - WithCreate withProperties(VirtualMachineProperties properties); - } - } - - /** - * Begins update for the VirtualMachine resource. - * - * @return the stage of resource update. - */ - VirtualMachine.Update update(); - - /** - * The template for VirtualMachine update. - */ - interface Update extends UpdateStages.WithTags, UpdateStages.WithProperties { - /** - * Executes the update request. - * - * @return the updated resource. - */ - VirtualMachine apply(); - - /** - * Executes the update request. - * - * @param context The context to associate with this operation. - * @return the updated resource. - */ - VirtualMachine apply(Context context); - } - - /** - * The VirtualMachine update stages. - */ - interface UpdateStages { - /** - * The stage of the VirtualMachine update allowing to specify tags. - */ - interface WithTags { - /** - * Specifies the tags property: Resource tags.. - * - * @param tags Resource tags. - * @return the next definition stage. - */ - Update withTags(Map tags); - } - - /** - * The stage of the VirtualMachine update allowing to specify properties. - */ - interface WithProperties { - /** - * Specifies the properties property: The resource-specific properties for this resource.. - * - * @param properties The resource-specific properties for this resource. - * @return the next definition stage. - */ - Update withProperties(VirtualMachineProperties properties); - } - } - - /** - * Refreshes the resource to sync with Azure. - * - * @return the refreshed resource. - */ - VirtualMachine refresh(); - - /** - * Refreshes the resource to sync with Azure. - * - * @param context The context to associate with this operation. - * @return the refreshed resource. - */ - VirtualMachine refresh(Context context); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachineProperties.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachineProperties.java deleted file mode 100644 index 0a5e9296e9e..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachineProperties.java +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.models; - -import com.azure.core.annotation.Fluent; -import com.azure.json.JsonReader; -import com.azure.json.JsonSerializable; -import com.azure.json.JsonToken; -import com.azure.json.JsonWriter; -import java.io.IOException; - -/** - * The VirtualMachineProperties model. - */ -@Fluent -public final class VirtualMachineProperties implements JsonSerializable { - /* - * The provisioningState property. - */ - private ResourceProvisioningState provisioningState; - - /* - * Size of the virtual machine. Only available in version 2024-11-01. - */ - private String size; - - /** - * Creates an instance of VirtualMachineProperties class. - */ - public VirtualMachineProperties() { - } - - /** - * Get the provisioningState property: The provisioningState property. - * - * @return the provisioningState value. - */ - public ResourceProvisioningState provisioningState() { - return this.provisioningState; - } - - /** - * Get the size property: Size of the virtual machine. Only available in version 2024-11-01. - * - * @return the size value. - */ - public String size() { - return this.size; - } - - /** - * Set the size property: Size of the virtual machine. Only available in version 2024-11-01. - * - * @param size the size value to set. - * @return the VirtualMachineProperties object itself. - */ - public VirtualMachineProperties withSize(String size) { - this.size = size; - return this; - } - - /** - * {@inheritDoc} - */ - @Override - public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { - jsonWriter.writeStartObject(); - jsonWriter.writeStringField("size", this.size); - return jsonWriter.writeEndObject(); - } - - /** - * Reads an instance of VirtualMachineProperties from the JsonReader. - * - * @param jsonReader The JsonReader being read. - * @return An instance of VirtualMachineProperties if the JsonReader was pointing to an instance of it, or null if - * it was pointing to JSON null. - * @throws IOException If an error occurs while reading the VirtualMachineProperties. - */ - public static VirtualMachineProperties fromJson(JsonReader jsonReader) throws IOException { - return jsonReader.readObject(reader -> { - VirtualMachineProperties deserializedVirtualMachineProperties = new VirtualMachineProperties(); - while (reader.nextToken() != JsonToken.END_OBJECT) { - String fieldName = reader.getFieldName(); - reader.nextToken(); - - if ("provisioningState".equals(fieldName)) { - deserializedVirtualMachineProperties.provisioningState - = ResourceProvisioningState.fromString(reader.getString()); - } else if ("size".equals(fieldName)) { - deserializedVirtualMachineProperties.size = reader.getString(); - } else { - reader.skipChildren(); - } - } - - return deserializedVirtualMachineProperties; - }); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachines.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachines.java deleted file mode 100644 index 085e55909fd..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachines.java +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.models; - -import com.azure.core.http.rest.Response; -import com.azure.core.util.Context; - -/** - * Resource collection API of VirtualMachines. - */ -public interface VirtualMachines { - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response}. - */ - Response getByResourceGroupWithResponse(String resourceGroupName, String vmName, Context context); - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param resourceGroupName The name of the resource group. The name is case insensitive. - * @param vmName The name of the VirtualMachine. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine. - */ - VirtualMachine getByResourceGroup(String resourceGroupName, String vmName); - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param id the resource ID. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response}. - */ - VirtualMachine getById(String id); - - /** - * Retrieves information about the model view or the instance view of a virtual machine. - * - * @param id the resource ID. - * @param context The context to associate with this operation. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return describes a Virtual Machine along with {@link Response}. - */ - Response getByIdWithResponse(String id, Context context); - - /** - * Begins definition for a new VirtualMachine resource. - * - * @param name resource name. - * @return the first stage of the new VirtualMachine definition. - */ - VirtualMachine.DefinitionStages.Blank define(String name); -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/package-info.java deleted file mode 100644 index 221f269dbfb..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -/** - * Package containing the data models for Compute. - * Compute Client. - */ -package azure.resourcemanager.multiserviceolderversions.combined.models; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/package-info.java deleted file mode 100644 index af6d0a09834..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/azure/resourcemanager/multiserviceolderversions/combined/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -/** - * Package containing the classes for Compute. - * Compute Client. - */ -package azure.resourcemanager.multiserviceolderversions.combined; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/ExtensibleStringsAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/ExtensibleStringsAsyncClient.java new file mode 100644 index 00000000000..aeeab3d03ff --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/ExtensibleStringsAsyncClient.java @@ -0,0 +1,97 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package specialwords; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.util.BinaryData; +import com.azure.core.util.FluxUtil; +import reactor.core.publisher.Mono; +import specialwords.extensiblestrings.models.ExtensibleString; +import specialwords.implementation.ExtensibleStringsImpl; + +/** + * Initializes a new instance of the asynchronous SpecialWordsClient type. + */ +@ServiceClient(builder = SpecialWordsClientBuilder.class, isAsync = true) +public final class ExtensibleStringsAsyncClient { + @Generated + private final ExtensibleStringsImpl serviceClient; + + /** + * Initializes an instance of ExtensibleStringsAsyncClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + ExtensibleStringsAsyncClient(ExtensibleStringsImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * The putExtensibleStringValue operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return verify enum member names that are special words using extensible enum (union) along with {@link Response} + * on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> putExtensibleStringValueWithResponse(BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.putExtensibleStringValueWithResponseAsync(body, requestOptions); + } + + /** + * The putExtensibleStringValue operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return verify enum member names that are special words using extensible enum (union) on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono putExtensibleStringValue(ExtensibleString body) { + // Generated convenience method for putExtensibleStringValueWithResponse + RequestOptions requestOptions = new RequestOptions(); + return putExtensibleStringValueWithResponse(BinaryData.fromObject(body == null ? null : body.toString()), + requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> ExtensibleString.fromString(protocolMethodData.toObject(String.class))); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/ExtensibleStringsClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/ExtensibleStringsClient.java new file mode 100644 index 00000000000..05656c704df --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/ExtensibleStringsClient.java @@ -0,0 +1,93 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package specialwords; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.util.BinaryData; +import specialwords.extensiblestrings.models.ExtensibleString; +import specialwords.implementation.ExtensibleStringsImpl; + +/** + * Initializes a new instance of the synchronous SpecialWordsClient type. + */ +@ServiceClient(builder = SpecialWordsClientBuilder.class) +public final class ExtensibleStringsClient { + @Generated + private final ExtensibleStringsImpl serviceClient; + + /** + * Initializes an instance of ExtensibleStringsClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + ExtensibleStringsClient(ExtensibleStringsImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * The putExtensibleStringValue operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return verify enum member names that are special words using extensible enum (union) along with + * {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putExtensibleStringValueWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.putExtensibleStringValueWithResponse(body, requestOptions); + } + + /** + * The putExtensibleStringValue operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return verify enum member names that are special words using extensible enum (union). + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public ExtensibleString putExtensibleStringValue(ExtensibleString body) { + // Generated convenience method for putExtensibleStringValueWithResponse + RequestOptions requestOptions = new RequestOptions(); + return ExtensibleString.fromString( + putExtensibleStringValueWithResponse(BinaryData.fromObject(body == null ? null : body.toString()), + requestOptions).getValue().toObject(String.class)); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/SpecialWordsClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/SpecialWordsClientBuilder.java index ea87d109d89..66786237ef1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/SpecialWordsClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/SpecialWordsClientBuilder.java @@ -44,10 +44,12 @@ serviceClients = { ModelsClient.class, ModelPropertiesClient.class, + ExtensibleStringsClient.class, OperationsClient.class, ParametersClient.class, ModelsAsyncClient.class, ModelPropertiesAsyncClient.class, + ExtensibleStringsAsyncClient.class, OperationsAsyncClient.class, ParametersAsyncClient.class }) public final class SpecialWordsClientBuilder implements HttpTrait, @@ -292,6 +294,16 @@ public ModelPropertiesAsyncClient buildModelPropertiesAsyncClient() { return new ModelPropertiesAsyncClient(buildInnerClient().getModelProperties()); } + /** + * Builds an instance of ExtensibleStringsAsyncClient class. + * + * @return an instance of ExtensibleStringsAsyncClient. + */ + @Generated + public ExtensibleStringsAsyncClient buildExtensibleStringsAsyncClient() { + return new ExtensibleStringsAsyncClient(buildInnerClient().getExtensibleStrings()); + } + /** * Builds an instance of OperationsAsyncClient class. * @@ -332,6 +344,16 @@ public ModelPropertiesClient buildModelPropertiesClient() { return new ModelPropertiesClient(buildInnerClient().getModelProperties()); } + /** + * Builds an instance of ExtensibleStringsClient class. + * + * @return an instance of ExtensibleStringsClient. + */ + @Generated + public ExtensibleStringsClient buildExtensibleStringsClient() { + return new ExtensibleStringsClient(buildInnerClient().getExtensibleStrings()); + } + /** * Builds an instance of OperationsClient class. * diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/extensiblestrings/models/ExtensibleString.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/extensiblestrings/models/ExtensibleString.java new file mode 100644 index 00000000000..52fdb2469ce --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/extensiblestrings/models/ExtensibleString.java @@ -0,0 +1,243 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package specialwords.extensiblestrings.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Verify enum member names that are special words using extensible enum (union). + */ +public final class ExtensibleString extends ExpandableStringEnum { + /** + * Static value and for ExtensibleString. + */ + @Generated + public static final ExtensibleString AND = fromString("and"); + + /** + * Static value as for ExtensibleString. + */ + @Generated + public static final ExtensibleString AS = fromString("as"); + + /** + * Static value assert for ExtensibleString. + */ + @Generated + public static final ExtensibleString ASSERT = fromString("assert"); + + /** + * Static value async for ExtensibleString. + */ + @Generated + public static final ExtensibleString ASYNC = fromString("async"); + + /** + * Static value await for ExtensibleString. + */ + @Generated + public static final ExtensibleString AWAIT = fromString("await"); + + /** + * Static value break for ExtensibleString. + */ + @Generated + public static final ExtensibleString BREAK = fromString("break"); + + /** + * Static value class for ExtensibleString. + */ + @Generated + public static final ExtensibleString CLASS = fromString("class"); + + /** + * Static value constructor for ExtensibleString. + */ + @Generated + public static final ExtensibleString CONSTRUCTOR = fromString("constructor"); + + /** + * Static value continue for ExtensibleString. + */ + @Generated + public static final ExtensibleString CONTINUE = fromString("continue"); + + /** + * Static value def for ExtensibleString. + */ + @Generated + public static final ExtensibleString DEF = fromString("def"); + + /** + * Static value del for ExtensibleString. + */ + @Generated + public static final ExtensibleString DEL = fromString("del"); + + /** + * Static value elif for ExtensibleString. + */ + @Generated + public static final ExtensibleString ELIF = fromString("elif"); + + /** + * Static value else for ExtensibleString. + */ + @Generated + public static final ExtensibleString ELSE = fromString("else"); + + /** + * Static value except for ExtensibleString. + */ + @Generated + public static final ExtensibleString EXCEPT = fromString("except"); + + /** + * Static value exec for ExtensibleString. + */ + @Generated + public static final ExtensibleString EXEC = fromString("exec"); + + /** + * Static value finally for ExtensibleString. + */ + @Generated + public static final ExtensibleString FINALLY = fromString("finally"); + + /** + * Static value for for ExtensibleString. + */ + @Generated + public static final ExtensibleString FOR = fromString("for"); + + /** + * Static value from for ExtensibleString. + */ + @Generated + public static final ExtensibleString FROM = fromString("from"); + + /** + * Static value global for ExtensibleString. + */ + @Generated + public static final ExtensibleString GLOBAL = fromString("global"); + + /** + * Static value if for ExtensibleString. + */ + @Generated + public static final ExtensibleString IF = fromString("if"); + + /** + * Static value import for ExtensibleString. + */ + @Generated + public static final ExtensibleString IMPORT = fromString("import"); + + /** + * Static value in for ExtensibleString. + */ + @Generated + public static final ExtensibleString IN = fromString("in"); + + /** + * Static value is for ExtensibleString. + */ + @Generated + public static final ExtensibleString IS = fromString("is"); + + /** + * Static value lambda for ExtensibleString. + */ + @Generated + public static final ExtensibleString LAMBDA = fromString("lambda"); + + /** + * Static value not for ExtensibleString. + */ + @Generated + public static final ExtensibleString NOT = fromString("not"); + + /** + * Static value or for ExtensibleString. + */ + @Generated + public static final ExtensibleString OR = fromString("or"); + + /** + * Static value pass for ExtensibleString. + */ + @Generated + public static final ExtensibleString PASS = fromString("pass"); + + /** + * Static value raise for ExtensibleString. + */ + @Generated + public static final ExtensibleString RAISE = fromString("raise"); + + /** + * Static value return for ExtensibleString. + */ + @Generated + public static final ExtensibleString RETURN = fromString("return"); + + /** + * Static value try for ExtensibleString. + */ + @Generated + public static final ExtensibleString TRY = fromString("try"); + + /** + * Static value while for ExtensibleString. + */ + @Generated + public static final ExtensibleString WHILE = fromString("while"); + + /** + * Static value with for ExtensibleString. + */ + @Generated + public static final ExtensibleString WITH = fromString("with"); + + /** + * Static value yield for ExtensibleString. + */ + @Generated + public static final ExtensibleString YIELD = fromString("yield"); + + /** + * Creates a new instance of ExtensibleString value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public ExtensibleString() { + } + + /** + * Creates or finds a ExtensibleString from its string representation. + * + * @param name a name to look for. + * @return the corresponding ExtensibleString. + */ + @Generated + public static ExtensibleString fromString(String name) { + return fromString(name, ExtensibleString.class); + } + + /** + * Gets known ExtensibleString values. + * + * @return known ExtensibleString values. + */ + @Generated + public static Collection values() { + return values(ExtensibleString.class); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/extensiblestrings/models/package-info.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/extensiblestrings/models/package-info.java new file mode 100644 index 00000000000..521c13ab8f5 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/extensiblestrings/models/package-info.java @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +/** + * + * Package containing the data models for SpecialWords. + * Scenarios to verify that reserved words can be used in service and generators will handle it appropriately. + * + * Current list of special words + * ```txt + * and + * as + * assert + * async + * await + * break + * class + * constructor + * continue + * def + * del + * elif + * else + * except + * exec + * finally + * for + * from + * global + * if + * import + * in + * is + * lambda + * list + * not + * or + * pass + * raise + * return + * try + * while + * with + * yield + * ```. + * + */ +package specialwords.extensiblestrings.models; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/implementation/ExtensibleStringsImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/implementation/ExtensibleStringsImpl.java new file mode 100644 index 00000000000..bfc14dc2403 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/implementation/ExtensibleStringsImpl.java @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package specialwords.implementation; + +import com.azure.core.annotation.BodyParam; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.Put; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in ExtensibleStrings. + */ +public final class ExtensibleStringsImpl { + /** + * The proxy service used to perform REST calls. + */ + private final ExtensibleStringsService service; + + /** + * The service client containing this operation class. + */ + private final SpecialWordsClientImpl client; + + /** + * Initializes an instance of ExtensibleStringsImpl. + * + * @param client the instance of the service client containing this operation class. + */ + ExtensibleStringsImpl(SpecialWordsClientImpl client) { + this.service + = RestProxy.create(ExtensibleStringsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); + this.client = client; + } + + /** + * The interface defining all the services for SpecialWordsClientExtensibleStrings to be used by the proxy service + * to perform REST calls. + */ + @Host("{endpoint}") + @ServiceInterface(name = "SpecialWordsClientExtensibleStrings") + public interface ExtensibleStringsService { + @Put("/special-words/extensible-strings/string") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> putExtensibleStringValue(@HostParam("endpoint") String endpoint, + @HeaderParam("content-type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Put("/special-words/extensible-strings/string") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response putExtensibleStringValueSync(@HostParam("endpoint") String endpoint, + @HeaderParam("content-type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + } + + /** + * The putExtensibleStringValue operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return verify enum member names that are special words using extensible enum (union) along with {@link Response} + * on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> putExtensibleStringValueWithResponseAsync(BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.putExtensibleStringValue(this.client.getEndpoint(), contentType, + accept, body, requestOptions, context)); + } + + /** + * The putExtensibleStringValue operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String(and/as/assert/async/await/break/class/constructor/continue/def/del/elif/else/except/exec/finally/for/from/global/if/import/in/is/lambda/not/or/pass/raise/return/try/while/with/yield)
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return verify enum member names that are special words using extensible enum (union) along with + * {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response putExtensibleStringValueWithResponse(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.putExtensibleStringValueSync(this.client.getEndpoint(), contentType, accept, body, + requestOptions, Context.NONE); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java index 0228a3a8eff..5ff3f977f51 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/specialwords/implementation/SpecialWordsClientImpl.java @@ -85,6 +85,20 @@ public ModelPropertiesImpl getModelProperties() { return this.modelProperties; } + /** + * The ExtensibleStringsImpl object to access its operations. + */ + private final ExtensibleStringsImpl extensibleStrings; + + /** + * Gets the ExtensibleStringsImpl object to access its operations. + * + * @return the ExtensibleStringsImpl object. + */ + public ExtensibleStringsImpl getExtensibleStrings() { + return this.extensibleStrings; + } + /** * The OperationsImpl object to access its operations. */ @@ -146,6 +160,7 @@ public SpecialWordsClientImpl(HttpPipeline httpPipeline, SerializerAdapter seria this.endpoint = endpoint; this.models = new ModelsImpl(this); this.modelProperties = new ModelPropertiesImpl(this); + this.extensibleStrings = new ExtensibleStringsImpl(this); this.operations = new OperationsImpl(this); this.parameters = new ParametersImpl(this); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/fluent/ItemsClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/fluent/ItemsClient.java index b12428994a8..39dcb7ec1be 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/fluent/ItemsClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/fluent/ItemsClient.java @@ -7,7 +7,10 @@ import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceMethod; import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; import com.azure.core.util.Context; +import tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner; +import tsptest.armstreamstyleserialization.models.ListResult3; import tsptest.armstreamstyleserialization.models.Result; /** @@ -35,4 +38,116 @@ public interface ItemsClient { */ @ServiceMethod(returns = ReturnType.COLLECTION) PagedIterable list(Context context); + + /** + * The summary operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable summary(); + + /** + * The summary operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable summary(Context context); + + /** + * The list2 operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list2(); + + /** + * The list2 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list2(Context context); + + /** + * The summary2 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response summary2WithResponse(Context context); + + /** + * The summary2 operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + ListResultSummary2Inner summary2(); + + /** + * The list3 operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list3(); + + /** + * The list3 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + PagedIterable list3(Context context); + + /** + * The post operation. + * + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + Response postWithResponse(ListResult3 body, Context context); + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + void post(ListResult3 body); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/fluent/models/ListResultSummary2Inner.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/fluent/models/ListResultSummary2Inner.java new file mode 100644 index 00000000000..98b509fdb1c --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/fluent/models/ListResultSummary2Inner.java @@ -0,0 +1,132 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.armstreamstyleserialization.fluent.models; + +import com.azure.core.annotation.Immutable; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import tsptest.armstreamstyleserialization.models.ListResult2; +import tsptest.armstreamstyleserialization.models.Result; + +/** + * The ListResultSummary2 model. + */ +@Immutable +public final class ListResultSummary2Inner extends ListResult2 { + /* + * The summary property. + */ + private String summary; + + /* + * The nextLink property. + */ + private String nextLink; + + /* + * The items property. + */ + private List items; + + /** + * Creates an instance of ListResultSummary2Inner class. + */ + private ListResultSummary2Inner() { + } + + /** + * Get the summary property: The summary property. + * + * @return the summary value. + */ + public String summary() { + return this.summary; + } + + /** + * Get the nextLink property: The nextLink property. + * + * @return the nextLink value. + */ + @Override + public String nextLink() { + return this.nextLink; + } + + /** + * Get the items property: The items property. + * + * @return the items value. + */ + @Override + public List items() { + return this.items; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + @Override + public void validate() { + if (items() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Missing required property items in model ListResultSummary2Inner")); + } else { + items().forEach(e -> e.validate()); + } + } + + private static final ClientLogger LOGGER = new ClientLogger(ListResultSummary2Inner.class); + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("items", items(), (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("nextLink", nextLink()); + jsonWriter.writeStringField("summary", this.summary); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ListResultSummary2Inner from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ListResultSummary2Inner if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ListResultSummary2Inner. + */ + public static ListResultSummary2Inner fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ListResultSummary2Inner deserializedListResultSummary2Inner = new ListResultSummary2Inner(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("items".equals(fieldName)) { + List items = reader.readArray(reader1 -> Result.fromJson(reader1)); + deserializedListResultSummary2Inner.items = items; + } else if ("nextLink".equals(fieldName)) { + deserializedListResultSummary2Inner.nextLink = reader.getString(); + } else if ("summary".equals(fieldName)) { + deserializedListResultSummary2Inner.summary = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedListResultSummary2Inner; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsClientImpl.java index 70d6dc0ac48..c835c1e1715 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsClientImpl.java @@ -4,6 +4,7 @@ package tsptest.armstreamstyleserialization.implementation; +import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.ExpectedResponses; import com.azure.core.annotation.Get; import com.azure.core.annotation.HeaderParam; @@ -11,6 +12,7 @@ import com.azure.core.annotation.Host; import com.azure.core.annotation.HostParam; import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.Post; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceInterface; import com.azure.core.annotation.ServiceMethod; @@ -30,7 +32,11 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import tsptest.armstreamstyleserialization.fluent.ItemsClient; +import tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner; import tsptest.armstreamstyleserialization.implementation.models.ListResult; +import tsptest.armstreamstyleserialization.implementation.models.ListResultSummary; +import tsptest.armstreamstyleserialization.models.ListResult2; +import tsptest.armstreamstyleserialization.models.ListResult3; import tsptest.armstreamstyleserialization.models.Result; /** @@ -78,6 +84,77 @@ Mono>> list(@HostParam("endpoint") String endpoint, Response listSync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + @Headers({ "Content-Type: application/json" }) + @Get("/items/summary") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> summary(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/items/summary") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response summarySync(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/items/list2") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> list2(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/items/list2") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response list2Sync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/items/summary2") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> summary2(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/items/summary2") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response summary2Sync(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/items/list3") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> list3(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("/items/list3") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response list3Sync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + Context context); + + @Headers({ "Accept: application/json;q=0.9" }) + @Post("/items") + @ExpectedResponses({ 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> post(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @BodyParam("application/json") ListResult3 body, + Context context); + + @Headers({ "Accept: application/json;q=0.9" }) + @Post("/items") + @ExpectedResponses({ 204 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response postSync(@HostParam("endpoint") String endpoint, @HeaderParam("Content-Type") String contentType, + @BodyParam("application/json") ListResult3 body, Context context); + @Headers({ "Content-Type: application/json" }) @Get("{nextLink}") @ExpectedResponses({ 200 }) @@ -91,6 +168,48 @@ Mono> listNext(@PathParam(value = "nextLink", encoded = tru @UnexpectedResponseExceptionType(ManagementException.class) Response listNextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> summaryNext(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response summaryNextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> list2Next(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response list2NextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Mono> list3Next(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); + + @Headers({ "Content-Type: application/json" }) + @Get("{nextLink}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(ManagementException.class) + Response list3NextSync(@PathParam(value = "nextLink", encoded = true) String nextLink, + @HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, Context context); } /** @@ -209,60 +328,161 @@ public PagedIterable list(Context context) { } /** - * Get the next page of items. + * The summary operation. * - * @param nextLink The URL to get the next list of items. - * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the response body along with {@link PagedResponse} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listNextSinglePageAsync(String nextLink) { - if (nextLink == null) { - return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); - } + private Mono> summarySinglePageAsync() { if (this.client.getEndpoint() == null) { return Mono.error( new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - return FluxUtil.withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context)) + return FluxUtil.withContext(context -> service.summary(this.client.getEndpoint(), accept, context)) .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); } /** - * Get the next page of items. + * The summary operation. * - * @param nextLink The URL to get the next list of items. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux summaryAsync() { + return new PagedFlux<>(() -> summarySinglePageAsync(), nextLink -> summaryNextSinglePageAsync(nextLink)); + } + + /** + * The summary operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse summarySinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.summarySync(this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * The summary operation. + * + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. * @return the response body along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listNextSinglePage(String nextLink) { - if (nextLink == null) { + private PagedResponse summarySinglePage(Context context) { + if (this.client.getEndpoint() == null) { throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.summarySync(this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * The summary operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable summary() { + return new PagedIterable<>(() -> summarySinglePage(), nextLink -> summaryNextSinglePage(nextLink)); + } + + /** + * The summary operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable summary(Context context) { + return new PagedIterable<>(() -> summarySinglePage(context), + nextLink -> summaryNextSinglePage(nextLink, context)); + } + + /** + * The list2 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> list2SinglePageAsync() { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.list2(this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * The list2 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux list2Async() { + return new PagedFlux<>(() -> list2SinglePageAsync(), nextLink -> list2NextSinglePageAsync(nextLink)); + } + + /** + * The list2 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse list2SinglePage() { if (this.client.getEndpoint() == null) { throw LOGGER.atError() .log(new IllegalArgumentException( "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + Response res = service.list2Sync(this.client.getEndpoint(), accept, Context.NONE); return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null); } /** - * Get the next page of items. + * The list2 operation. * - * @param nextLink The URL to get the next list of items. * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. @@ -270,18 +490,594 @@ private PagedResponse listNextSinglePage(String nextLink) { * @return the response body along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listNextSinglePage(String nextLink, Context context) { - if (nextLink == null) { + private PagedResponse list2SinglePage(Context context) { + if (this.client.getEndpoint() == null) { throw LOGGER.atError() - .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.list2Sync(this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * The list2 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable list2() { + return new PagedIterable<>(() -> list2SinglePage(), nextLink -> list2NextSinglePage(nextLink)); + } + + /** + * The list2 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable list2(Context context) { + return new PagedIterable<>(() -> list2SinglePage(context), nextLink -> list2NextSinglePage(nextLink, context)); + } + + /** + * The summary2 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> summary2WithResponseAsync() { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.summary2(this.client.getEndpoint(), accept, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * The summary2 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono summary2Async() { + return summary2WithResponseAsync().flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * The summary2 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response summary2WithResponse(Context context) { if (this.client.getEndpoint() == null) { throw LOGGER.atError() .log(new IllegalArgumentException( "Parameter this.client.getEndpoint() is required and cannot be null.")); } final String accept = "application/json"; - Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); + return service.summary2Sync(this.client.getEndpoint(), accept, context); + } + + /** + * The summary2 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public ListResultSummary2Inner summary2() { + return summary2WithResponse(Context.NONE).getValue(); + } + + /** + * The list3 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> list3SinglePageAsync() { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.list3(this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * The list3 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + private PagedFlux list3Async() { + return new PagedFlux<>(() -> list3SinglePageAsync(), nextLink -> list3NextSinglePageAsync(nextLink)); + } + + /** + * The list3 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse list3SinglePage() { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.list3Sync(this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * The list3 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse list3SinglePage(Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.list3Sync(this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * The list3 operation. + * + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable list3() { + return new PagedIterable<>(() -> list3SinglePage(), nextLink -> list3NextSinglePage(nextLink)); + } + + /** + * The list3 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable list3(Context context) { + return new PagedIterable<>(() -> list3SinglePage(context), nextLink -> list3NextSinglePage(nextLink, context)); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> postWithResponseAsync(ListResult3 body) { + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (body == null) { + return Mono.error(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String contentType = "application/json"; + return FluxUtil.withContext(context -> service.post(this.client.getEndpoint(), contentType, body, context)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono postAsync(ListResult3 body) { + return postWithResponseAsync(body).flatMap(ignored -> Mono.empty()); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response postWithResponse(ListResult3 body, Context context) { + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + if (body == null) { + throw LOGGER.atError().log(new IllegalArgumentException("Parameter body is required and cannot be null.")); + } else { + body.validate(); + } + final String contentType = "application/json"; + return service.postSync(this.client.getEndpoint(), contentType, body, context); + } + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public void post(ListResult3 body) { + postWithResponse(body, Context.NONE); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listNextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.listNext(nextLink, this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listNextSinglePage(String nextLink, Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.listNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> summaryNextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.summaryNext(nextLink, this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse summaryNextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res + = service.summaryNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse summaryNextSinglePage(String nextLink, Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.summaryNextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> list2NextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.list2Next(nextLink, this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse list2NextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.list2NextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse list2NextSinglePage(String nextLink, Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.list2NextSync(nextLink, this.client.getEndpoint(), accept, context); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> list3NextSinglePageAsync(String nextLink) { + if (nextLink == null) { + return Mono.error(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + return Mono.error( + new IllegalArgumentException("Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.list3Next(nextLink, this.client.getEndpoint(), accept, context)) + .>map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), + res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null)) + .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse list3NextSinglePage(String nextLink) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.list3NextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), + res.getValue().nextLink(), null); + } + + /** + * Get the next page of items. + * + * @param nextLink The URL to get the next list of items. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse list3NextSinglePage(String nextLink, Context context) { + if (nextLink == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Parameter nextLink is required and cannot be null.")); + } + if (this.client.getEndpoint() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException( + "Parameter this.client.getEndpoint() is required and cannot be null.")); + } + final String accept = "application/json"; + Response res = service.list3NextSync(nextLink, this.client.getEndpoint(), accept, context); return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().items(), res.getValue().nextLink(), null); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsImpl.java index 37ad1648542..2602f80f5ff 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsImpl.java @@ -5,10 +5,15 @@ package tsptest.armstreamstyleserialization.implementation; import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.SimpleResponse; import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import tsptest.armstreamstyleserialization.fluent.ItemsClient; +import tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner; import tsptest.armstreamstyleserialization.models.Items; +import tsptest.armstreamstyleserialization.models.ListResult3; +import tsptest.armstreamstyleserialization.models.ListResultSummary2; import tsptest.armstreamstyleserialization.models.Result; public final class ItemsImpl implements Items { @@ -32,6 +37,53 @@ public PagedIterable list(Context context) { return this.serviceClient().list(context); } + public PagedIterable summary() { + return this.serviceClient().summary(); + } + + public PagedIterable summary(Context context) { + return this.serviceClient().summary(context); + } + + public PagedIterable list2() { + return this.serviceClient().list2(); + } + + public PagedIterable list2(Context context) { + return this.serviceClient().list2(context); + } + + public Response summary2WithResponse(Context context) { + Response inner = this.serviceClient().summary2WithResponse(context); + return new SimpleResponse<>(inner.getRequest(), inner.getStatusCode(), inner.getHeaders(), + new ListResultSummary2Impl(inner.getValue(), this.manager())); + } + + public ListResultSummary2 summary2() { + ListResultSummary2Inner inner = this.serviceClient().summary2(); + if (inner != null) { + return new ListResultSummary2Impl(inner, this.manager()); + } else { + return null; + } + } + + public PagedIterable list3() { + return this.serviceClient().list3(); + } + + public PagedIterable list3(Context context) { + return this.serviceClient().list3(context); + } + + public Response postWithResponse(ListResult3 body, Context context) { + return this.serviceClient().postWithResponse(body, context); + } + + public void post(ListResult3 body) { + this.serviceClient().post(body); + } + private ItemsClient serviceClient() { return this.innerClient; } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ListResultSummary2Impl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ListResultSummary2Impl.java new file mode 100644 index 00000000000..c5fe07fbb58 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/ListResultSummary2Impl.java @@ -0,0 +1,48 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.armstreamstyleserialization.implementation; + +import java.util.Collections; +import java.util.List; +import tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner; +import tsptest.armstreamstyleserialization.models.ListResultSummary2; +import tsptest.armstreamstyleserialization.models.Result; + +public final class ListResultSummary2Impl implements ListResultSummary2 { + private ListResultSummary2Inner innerObject; + + private final tsptest.armstreamstyleserialization.ArmResourceProviderManager serviceManager; + + ListResultSummary2Impl(ListResultSummary2Inner innerObject, + tsptest.armstreamstyleserialization.ArmResourceProviderManager serviceManager) { + this.innerObject = innerObject; + this.serviceManager = serviceManager; + } + + public List items() { + List inner = this.innerModel().items(); + if (inner != null) { + return Collections.unmodifiableList(inner); + } else { + return Collections.emptyList(); + } + } + + public String nextLink() { + return this.innerModel().nextLink(); + } + + public String summary() { + return this.innerModel().summary(); + } + + public ListResultSummary2Inner innerModel() { + return this.innerObject; + } + + private tsptest.armstreamstyleserialization.ArmResourceProviderManager manager() { + return this.serviceManager; + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesClientImpl.java index 45564684237..e7f67aafc25 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesClientImpl.java @@ -90,7 +90,7 @@ private Mono> setPriorityWithResponseAsync(Priority priority) if (priority == null) { return Mono.error(new IllegalArgumentException("Parameter priority is required and cannot be null.")); } - final String accept = "text/plain"; + final String accept = "application/json"; return FluxUtil .withContext(context -> service.setPriority(this.client.getEndpoint(), priority, accept, context)) .contextWrite(context -> context.putAll(FluxUtil.toReactorContext(this.client.getContext()).readOnly())); @@ -131,7 +131,7 @@ public Response setPriorityWithResponse(Priority priority, Context con throw LOGGER.atError() .log(new IllegalArgumentException("Parameter priority is required and cannot be null.")); } - final String accept = "text/plain"; + final String accept = "application/json"; return service.setPrioritySync(this.client.getEndpoint(), priority, accept, context); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResult.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResult.java index af772cd80e7..0d612e3c14c 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResult.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResult.java @@ -18,7 +18,7 @@ * The ListResult model. */ @Immutable -public final class ListResult implements JsonSerializable { +public class ListResult implements JsonSerializable { /* * The items property. */ @@ -32,7 +32,7 @@ public final class ListResult implements JsonSerializable { /** * Creates an instance of ListResult class. */ - private ListResult() { + protected ListResult() { } /** @@ -44,6 +44,17 @@ public List items() { return this.items; } + /** + * Set the items property: The items property. + * + * @param items the items value to set. + * @return the ListResult object itself. + */ + ListResult withItems(List items) { + this.items = items; + return this; + } + /** * Get the nextLink property: The nextLink property. * @@ -53,6 +64,17 @@ public String nextLink() { return this.nextLink; } + /** + * Set the nextLink property: The nextLink property. + * + * @param nextLink the nextLink value to set. + * @return the ListResult object itself. + */ + ListResult withNextLink(String nextLink) { + this.nextLink = nextLink; + return this; + } + /** * Validates the instance. * diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResultSummary.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResultSummary.java new file mode 100644 index 00000000000..04710cf983f --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResultSummary.java @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.armstreamstyleserialization.implementation.models; + +import com.azure.core.annotation.Immutable; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import tsptest.armstreamstyleserialization.models.Result; + +/** + * The ListResultSummary model. + */ +@Immutable +public final class ListResultSummary extends ListResult { + /* + * The summary property. + */ + private String summary; + + /* + * The nextLink property. + */ + private String nextLink; + + /* + * The items property. + */ + private List items; + + /** + * Creates an instance of ListResultSummary class. + */ + private ListResultSummary() { + } + + /** + * Get the summary property: The summary property. + * + * @return the summary value. + */ + public String summary() { + return this.summary; + } + + /** + * Get the nextLink property: The nextLink property. + * + * @return the nextLink value. + */ + @Override + public String nextLink() { + return this.nextLink; + } + + /** + * Get the items property: The items property. + * + * @return the items value. + */ + @Override + public List items() { + return this.items; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + @Override + public void validate() { + if (items() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Missing required property items in model ListResultSummary")); + } else { + items().forEach(e -> e.validate()); + } + } + + private static final ClientLogger LOGGER = new ClientLogger(ListResultSummary.class); + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("items", items(), (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("nextLink", nextLink()); + jsonWriter.writeStringField("summary", this.summary); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ListResultSummary from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ListResultSummary if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ListResultSummary. + */ + public static ListResultSummary fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ListResultSummary deserializedListResultSummary = new ListResultSummary(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("items".equals(fieldName)) { + List items = reader.readArray(reader1 -> Result.fromJson(reader1)); + deserializedListResultSummary.items = items; + } else if ("nextLink".equals(fieldName)) { + deserializedListResultSummary.nextLink = reader.getString(); + } else if ("summary".equals(fieldName)) { + deserializedListResultSummary.summary = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedListResultSummary; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Items.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Items.java index 819aef6f3a4..7cd5fc475dc 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Items.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Items.java @@ -5,6 +5,7 @@ package tsptest.armstreamstyleserialization.models; import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; import com.azure.core.util.Context; /** @@ -30,4 +31,106 @@ public interface Items { * @return the paginated response with {@link PagedIterable}. */ PagedIterable list(Context context); + + /** + * The summary operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + PagedIterable summary(); + + /** + * The summary operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + PagedIterable summary(Context context); + + /** + * The list2 operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + PagedIterable list2(); + + /** + * The list2 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + PagedIterable list2(Context context); + + /** + * The summary2 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body along with {@link Response}. + */ + Response summary2WithResponse(Context context); + + /** + * The summary2 operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + ListResultSummary2 summary2(); + + /** + * The list3 operation. + * + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + PagedIterable list3(); + + /** + * The list3 operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the paginated response with {@link PagedIterable}. + */ + PagedIterable list3(Context context); + + /** + * The post operation. + * + * @param body The body parameter. + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link Response}. + */ + Response postWithResponse(ListResult3 body, Context context); + + /** + * The post operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + void post(ListResult3 body); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResult2.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResult2.java new file mode 100644 index 00000000000..27bdf410dd3 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResult2.java @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.armstreamstyleserialization.models; + +import com.azure.core.annotation.Immutable; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * The ListResult2 model. + */ +@Immutable +public class ListResult2 implements JsonSerializable { + /* + * The items property. + */ + private List items; + + /* + * The nextLink property. + */ + private String nextLink; + + /** + * Creates an instance of ListResult2 class. + */ + protected ListResult2() { + } + + /** + * Get the items property: The items property. + * + * @return the items value. + */ + public List items() { + return this.items; + } + + /** + * Set the items property: The items property. + * + * @param items the items value to set. + * @return the ListResult2 object itself. + */ + ListResult2 withItems(List items) { + this.items = items; + return this; + } + + /** + * Get the nextLink property: The nextLink property. + * + * @return the nextLink value. + */ + public String nextLink() { + return this.nextLink; + } + + /** + * Set the nextLink property: The nextLink property. + * + * @param nextLink the nextLink value to set. + * @return the ListResult2 object itself. + */ + ListResult2 withNextLink(String nextLink) { + this.nextLink = nextLink; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (items() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Missing required property items in model ListResult2")); + } else { + items().forEach(e -> e.validate()); + } + } + + private static final ClientLogger LOGGER = new ClientLogger(ListResult2.class); + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("items", this.items, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("nextLink", this.nextLink); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ListResult2 from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ListResult2 if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ListResult2. + */ + public static ListResult2 fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ListResult2 deserializedListResult2 = new ListResult2(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("items".equals(fieldName)) { + List items = reader.readArray(reader1 -> Result.fromJson(reader1)); + deserializedListResult2.items = items; + } else if ("nextLink".equals(fieldName)) { + deserializedListResult2.nextLink = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedListResult2; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResult3.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResult3.java new file mode 100644 index 00000000000..c24d0e9c9a9 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResult3.java @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.armstreamstyleserialization.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * The ListResult3 model. + */ +@Fluent +public final class ListResult3 implements JsonSerializable { + /* + * The items property. + */ + private List items; + + /* + * The nextLink property. + */ + private String nextLink; + + /** + * Creates an instance of ListResult3 class. + */ + public ListResult3() { + } + + /** + * Get the items property: The items property. + * + * @return the items value. + */ + public List items() { + return this.items; + } + + /** + * Set the items property: The items property. + * + * @param items the items value to set. + * @return the ListResult3 object itself. + */ + public ListResult3 withItems(List items) { + this.items = items; + return this; + } + + /** + * Get the nextLink property: The nextLink property. + * + * @return the nextLink value. + */ + public String nextLink() { + return this.nextLink; + } + + /** + * Set the nextLink property: The nextLink property. + * + * @param nextLink the nextLink value to set. + * @return the ListResult3 object itself. + */ + public ListResult3 withNextLink(String nextLink) { + this.nextLink = nextLink; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + if (items() == null) { + throw LOGGER.atError() + .log(new IllegalArgumentException("Missing required property items in model ListResult3")); + } else { + items().forEach(e -> e.validate()); + } + } + + private static final ClientLogger LOGGER = new ClientLogger(ListResult3.class); + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("items", this.items, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("nextLink", this.nextLink); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ListResult3 from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ListResult3 if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ListResult3. + */ + public static ListResult3 fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ListResult3 deserializedListResult3 = new ListResult3(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("items".equals(fieldName)) { + List items = reader.readArray(reader1 -> Result.fromJson(reader1)); + deserializedListResult3.items = items; + } else if ("nextLink".equals(fieldName)) { + deserializedListResult3.nextLink = reader.getString(); + } else { + reader.skipChildren(); + } + } + + return deserializedListResult3; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResultSummary2.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResultSummary2.java new file mode 100644 index 00000000000..5bd683003ca --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/ListResultSummary2.java @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.armstreamstyleserialization.models; + +import java.util.List; +import tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner; + +/** + * An immutable client-side representation of ListResultSummary2. + */ +public interface ListResultSummary2 { + /** + * Gets the items property: The items property. + * + * @return the items value. + */ + List items(); + + /** + * Gets the nextLink property: The nextLink property. + * + * @return the nextLink value. + */ + String nextLink(); + + /** + * Gets the summary property: The summary property. + * + * @return the summary value. + */ + String summary(); + + /** + * Gets the inner tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner object. + * + * @return the inner object. + */ + ListResultSummary2Inner innerModel(); +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Result.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Result.java index 2b17d99ebc6..e9ce2cc43fe 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Result.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armstreamstyleserialization/models/Result.java @@ -4,7 +4,7 @@ package tsptest.armstreamstyleserialization.models; -import com.azure.core.annotation.Immutable; +import com.azure.core.annotation.Fluent; import com.azure.core.util.logging.ClientLogger; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; @@ -16,7 +16,7 @@ /** * The Result model. */ -@Immutable +@Fluent public final class Result implements JsonSerializable { /* * The name property. @@ -31,7 +31,7 @@ public final class Result implements JsonSerializable { /** * Creates an instance of Result class. */ - private Result() { + public Result() { } /** @@ -43,6 +43,17 @@ public String name() { return this.name; } + /** + * Set the name property: The name property. + * + * @param name the name value to set. + * @return the Result object itself. + */ + public Result withName(String name) { + this.name = name; + return this; + } + /** * Get the innerData property: The data property. * diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesAsyncClient.java index e73463da429..615aa6128a5 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesAsyncClient.java @@ -20,6 +20,7 @@ import tsptest.discriminatoredgecases.implementation.DiscriminatorEdgeCasesClientImpl; import tsptest.discriminatoredgecases.models.ChildWithAnotherDiscriminator; import tsptest.discriminatoredgecases.models.ChildWithRequiredPropertyAsDiscriminator; +import tsptest.discriminatoredgecases.models.ModelWithDiscriminatorNoSubtypes; /** * Initializes a new instance of the asynchronous DiscriminatorEdgeCasesClient type. @@ -94,6 +95,32 @@ public Mono> getChildNewDiscrimWithResponse(RequestOptions return this.serviceClient.getChildNewDiscrimWithResponseAsync(requestOptions); } + /** + * The getNoSubtypes operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     kind: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return model with along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getNoSubtypesWithResponse(RequestOptions requestOptions) { + return this.serviceClient.getNoSubtypesWithResponseAsync(requestOptions); + } + /** * The getChildRequiredDiscrim operation. * @@ -131,4 +158,23 @@ public Mono getChildNewDiscrim() { return getChildNewDiscrimWithResponse(requestOptions).flatMap(FluxUtil::toMono) .map(protocolMethodData -> protocolMethodData.toObject(ChildWithAnotherDiscriminator.class)); } + + /** + * The getNoSubtypes operation. + * + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return model with on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getNoSubtypes() { + // Generated convenience method for getNoSubtypesWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getNoSubtypesWithResponse(requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(ModelWithDiscriminatorNoSubtypes.class)); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClient.java index 1ffb3e582e3..81006ef04e8 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClient.java @@ -18,6 +18,7 @@ import tsptest.discriminatoredgecases.implementation.DiscriminatorEdgeCasesClientImpl; import tsptest.discriminatoredgecases.models.ChildWithAnotherDiscriminator; import tsptest.discriminatoredgecases.models.ChildWithRequiredPropertyAsDiscriminator; +import tsptest.discriminatoredgecases.models.ModelWithDiscriminatorNoSubtypes; /** * Initializes a new instance of the synchronous DiscriminatorEdgeCasesClient type. @@ -92,6 +93,32 @@ public Response getChildNewDiscrimWithResponse(RequestOptions reques return this.serviceClient.getChildNewDiscrimWithResponse(requestOptions); } + /** + * The getNoSubtypes operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     kind: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return model with along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getNoSubtypesWithResponse(RequestOptions requestOptions) { + return this.serviceClient.getNoSubtypesWithResponse(requestOptions); + } + /** * The getChildRequiredDiscrim operation. * @@ -128,4 +155,22 @@ public ChildWithAnotherDiscriminator getChildNewDiscrim() { RequestOptions requestOptions = new RequestOptions(); return getChildNewDiscrimWithResponse(requestOptions).getValue().toObject(ChildWithAnotherDiscriminator.class); } + + /** + * The getNoSubtypes operation. + * + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return model with. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public ModelWithDiscriminatorNoSubtypes getNoSubtypes() { + // Generated convenience method for getNoSubtypesWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getNoSubtypesWithResponse(requestOptions).getValue().toObject(ModelWithDiscriminatorNoSubtypes.class); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/implementation/DiscriminatorEdgeCasesClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/implementation/DiscriminatorEdgeCasesClientImpl.java index 9ac447b8517..f76c06ec6ca 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/implementation/DiscriminatorEdgeCasesClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/implementation/DiscriminatorEdgeCasesClientImpl.java @@ -160,6 +160,24 @@ Mono> getChildNewDiscrim(@HostParam("endpoint") String endp @UnexpectedResponseExceptionType(HttpResponseException.class) Response getChildNewDiscrimSync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/model/nosubtypes") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getNoSubtypes(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/model/nosubtypes") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getNoSubtypesSync(@HostParam("endpoint") String endpoint, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); } /** @@ -273,4 +291,57 @@ public Response getChildNewDiscrimWithResponse(RequestOptions reques final String accept = "application/json"; return service.getChildNewDiscrimSync(this.getEndpoint(), accept, requestOptions, Context.NONE); } + + /** + * The getNoSubtypes operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     kind: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return model with along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getNoSubtypesWithResponseAsync(RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getNoSubtypes(this.getEndpoint(), accept, requestOptions, context)); + } + + /** + * The getNoSubtypes operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     kind: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return model with along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getNoSubtypesWithResponse(RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getNoSubtypesSync(this.getEndpoint(), accept, requestOptions, Context.NONE); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/models/ModelWithDiscriminatorNoSubtypes.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/models/ModelWithDiscriminatorNoSubtypes.java new file mode 100644 index 00000000000..59c1737d62e --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/discriminatoredgecases/models/ModelWithDiscriminatorNoSubtypes.java @@ -0,0 +1,107 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.discriminatoredgecases.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Model with. + */ +@Immutable +public final class ModelWithDiscriminatorNoSubtypes implements JsonSerializable { + /* + * The kind property. + */ + @Generated + private String kind = "ModelWithDiscriminatorNoSubtypes"; + + /* + * The name property. + */ + @Generated + private final String name; + + /** + * Creates an instance of ModelWithDiscriminatorNoSubtypes class. + * + * @param name the name value to set. + */ + @Generated + private ModelWithDiscriminatorNoSubtypes(String name) { + this.name = name; + } + + /** + * Get the kind property: The kind property. + * + * @return the kind value. + */ + @Generated + public String getKind() { + return this.kind; + } + + /** + * Get the name property: The name property. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("kind", this.kind); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ModelWithDiscriminatorNoSubtypes from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ModelWithDiscriminatorNoSubtypes if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ModelWithDiscriminatorNoSubtypes. + */ + @Generated + public static ModelWithDiscriminatorNoSubtypes fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String kind = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = reader.getString(); + } else { + reader.skipChildren(); + } + } + ModelWithDiscriminatorNoSubtypes deserializedModelWithDiscriminatorNoSubtypes + = new ModelWithDiscriminatorNoSubtypes(name); + deserializedModelWithDiscriminatorNoSubtypes.kind = kind; + + return deserializedModelWithDiscriminatorNoSubtypes; + }); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceAsyncClient.java index 5eb297d5fdc..28fd5ff589d 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceAsyncClient.java @@ -474,6 +474,38 @@ public Mono> setStringEnumArrayHeaderWithResponse(List co return this.serviceClient.setStringEnumArrayHeaderWithResponseAsync(colorArray, requestOptions); } + /** + * The getWrongBody operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return simple string along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getWrongBodyWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.getWrongBodyWithResponseAsync(body, requestOptions); + } + /** * The getColor operation. * @@ -1042,4 +1074,25 @@ public Mono setStringEnumArrayHeader(List colorArray) { .map(paramItemValue -> Objects.toString(paramItemValue, "")) .collect(Collectors.toList()), requestOptions).flatMap(FluxUtil::toMono); } + + /** + * The getWrongBody operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return simple string on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getWrongBody(String body) { + // Generated convenience method for getWrongBodyWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getWrongBodyWithResponse(BinaryData.fromString(body), requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toString()); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceClient.java index 802a27c8802..05e4be7cc26 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/EnumServiceClient.java @@ -470,6 +470,38 @@ public Response setStringEnumArrayHeaderWithResponse(List colorArr return this.serviceClient.setStringEnumArrayHeaderWithResponse(colorArray, requestOptions); } + /** + * The getWrongBody operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return simple string along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWrongBodyWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.getWrongBodyWithResponse(body, requestOptions); + } + /** * The getColor operation. * @@ -1015,4 +1047,24 @@ public void setStringEnumArrayHeader(List colorArray) { .map(paramItemValue -> Objects.toString(paramItemValue, "")) .collect(Collectors.toList()), requestOptions).getValue(); } + + /** + * The getWrongBody operation. + * + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return simple string. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public String getWrongBody(String body) { + // Generated convenience method for getWrongBodyWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getWrongBodyWithResponse(BinaryData.fromString(body), requestOptions).getValue().toString(); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/implementation/EnumServiceClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/implementation/EnumServiceClientImpl.java index fce35a37c7a..14c8d1c04e1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/implementation/EnumServiceClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/enumservice/implementation/EnumServiceClientImpl.java @@ -4,6 +4,7 @@ package tsptest.enumservice.implementation; +import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.ExpectedResponses; import com.azure.core.annotation.Get; import com.azure.core.annotation.HeaderParam; @@ -415,6 +416,26 @@ Mono> setStringEnumArrayHeader(@HostParam("endpoint") String endp @UnexpectedResponseExceptionType(HttpResponseException.class) Response setStringEnumArrayHeaderSync(@HostParam("endpoint") String endpoint, @HeaderParam("color-array") String colorArray, RequestOptions requestOptions, Context context); + + @Post("/enum/operation/wrong-body") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getWrongBody(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("text/plain") BinaryData body, RequestOptions requestOptions, Context context); + + @Post("/enum/operation/wrong-body") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getWrongBodySync(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("text/plain") BinaryData body, RequestOptions requestOptions, Context context); } /** @@ -1317,4 +1338,71 @@ public Response setStringEnumArrayHeaderWithResponse(List colorArr return service.setStringEnumArrayHeaderSync(this.getEndpoint(), colorArrayConverted, requestOptions, Context.NONE); } + + /** + * The getWrongBody operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return simple string along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getWrongBodyWithResponseAsync(BinaryData body, RequestOptions requestOptions) { + final String contentType = "text/plain"; + final String accept = "text/plain"; + return FluxUtil.withContext( + context -> service.getWrongBody(this.getEndpoint(), contentType, accept, body, requestOptions, context)); + } + + /** + * The getWrongBody operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * String
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return simple string along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWrongBodyWithResponse(BinaryData body, RequestOptions requestOptions) { + final String contentType = "text/plain"; + final String accept = "text/plain"; + return service.getWrongBodySync(this.getEndpoint(), contentType, accept, body, requestOptions, Context.NONE); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityClientBuilder.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityClientBuilder.java index d1edc5a5fca..c6d3af3d3a5 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityClientBuilder.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityClientBuilder.java @@ -42,12 +42,12 @@ */ @ServiceClientBuilder( serviceClients = { - VisibilityClient.class, VisibilityReadClient.class, VisibilityWriteClient.class, - VisibilityAsyncClient.class, + VisibilityOpClient.class, VisibilityReadAsyncClient.class, - VisibilityWriteAsyncClient.class }) + VisibilityWriteAsyncClient.class, + VisibilityOpAsyncClient.class }) public final class VisibilityClientBuilder implements HttpTrait, ConfigurationTrait, EndpointTrait { @Generated @@ -270,16 +270,6 @@ private HttpPipeline createHttpPipeline() { return httpPipeline; } - /** - * Builds an instance of VisibilityAsyncClient class. - * - * @return an instance of VisibilityAsyncClient. - */ - @Generated - public VisibilityAsyncClient buildAsyncClient() { - return new VisibilityAsyncClient(buildInnerClient()); - } - /** * Builds an instance of VisibilityReadAsyncClient class. * @@ -301,13 +291,13 @@ public VisibilityWriteAsyncClient buildVisibilityWriteAsyncClient() { } /** - * Builds an instance of VisibilityClient class. + * Builds an instance of VisibilityOpAsyncClient class. * - * @return an instance of VisibilityClient. + * @return an instance of VisibilityOpAsyncClient. */ @Generated - public VisibilityClient buildClient() { - return new VisibilityClient(buildInnerClient()); + public VisibilityOpAsyncClient buildVisibilityOpAsyncClient() { + return new VisibilityOpAsyncClient(buildInnerClient().getVisibilityOps()); } /** @@ -330,5 +320,15 @@ public VisibilityWriteClient buildVisibilityWriteClient() { return new VisibilityWriteClient(buildInnerClient().getVisibilityWrites()); } + /** + * Builds an instance of VisibilityOpClient class. + * + * @return an instance of VisibilityOpClient. + */ + @Generated + public VisibilityOpClient buildVisibilityOpClient() { + return new VisibilityOpClient(buildInnerClient().getVisibilityOps()); + } + private static final ClientLogger LOGGER = new ClientLogger(VisibilityClientBuilder.class); } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityAsyncClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityOpAsyncClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityAsyncClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityOpAsyncClient.java index 807f5320a48..017e122759d 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityAsyncClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityOpAsyncClient.java @@ -17,7 +17,7 @@ import com.azure.core.util.BinaryData; import com.azure.core.util.FluxUtil; import reactor.core.publisher.Mono; -import tsptest.visibility.implementation.VisibilityClientImpl; +import tsptest.visibility.implementation.VisibilityOpsImpl; import tsptest.visibility.models.Dog; import tsptest.visibility.models.ReadDog; import tsptest.visibility.models.RoundTripModel; @@ -27,17 +27,17 @@ * Initializes a new instance of the asynchronous VisibilityClient type. */ @ServiceClient(builder = VisibilityClientBuilder.class, isAsync = true) -public final class VisibilityAsyncClient { +public final class VisibilityOpAsyncClient { @Generated - private final VisibilityClientImpl serviceClient; + private final VisibilityOpsImpl serviceClient; /** - * Initializes an instance of VisibilityAsyncClient class. + * Initializes an instance of VisibilityOpAsyncClient class. * * @param serviceClient the service client implementation. */ @Generated - VisibilityAsyncClient(VisibilityClientImpl serviceClient) { + VisibilityOpAsyncClient(VisibilityOpsImpl serviceClient) { this.serviceClient = serviceClient; } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityClient.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityOpClient.java similarity index 97% rename from packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityClient.java rename to packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityOpClient.java index a79ed9bd963..71e79e643aa 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityClient.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/VisibilityOpClient.java @@ -15,7 +15,7 @@ import com.azure.core.http.rest.RequestOptions; import com.azure.core.http.rest.Response; import com.azure.core.util.BinaryData; -import tsptest.visibility.implementation.VisibilityClientImpl; +import tsptest.visibility.implementation.VisibilityOpsImpl; import tsptest.visibility.models.Dog; import tsptest.visibility.models.ReadDog; import tsptest.visibility.models.RoundTripModel; @@ -25,17 +25,17 @@ * Initializes a new instance of the synchronous VisibilityClient type. */ @ServiceClient(builder = VisibilityClientBuilder.class) -public final class VisibilityClient { +public final class VisibilityOpClient { @Generated - private final VisibilityClientImpl serviceClient; + private final VisibilityOpsImpl serviceClient; /** - * Initializes an instance of VisibilityClient class. + * Initializes an instance of VisibilityOpClient class. * * @param serviceClient the service client implementation. */ @Generated - VisibilityClient(VisibilityClientImpl serviceClient) { + VisibilityOpClient(VisibilityOpsImpl serviceClient) { this.serviceClient = serviceClient; } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/implementation/VisibilityClientImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/implementation/VisibilityClientImpl.java index 02c3456cc5b..693a05c11d0 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/implementation/VisibilityClientImpl.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/implementation/VisibilityClientImpl.java @@ -4,45 +4,17 @@ package tsptest.visibility.implementation; -import com.azure.core.annotation.BodyParam; -import com.azure.core.annotation.ExpectedResponses; -import com.azure.core.annotation.Get; -import com.azure.core.annotation.HeaderParam; -import com.azure.core.annotation.Host; -import com.azure.core.annotation.HostParam; -import com.azure.core.annotation.Post; -import com.azure.core.annotation.Put; -import com.azure.core.annotation.ReturnType; -import com.azure.core.annotation.ServiceInterface; -import com.azure.core.annotation.ServiceMethod; -import com.azure.core.annotation.UnexpectedResponseExceptionType; -import com.azure.core.exception.ClientAuthenticationException; -import com.azure.core.exception.HttpResponseException; -import com.azure.core.exception.ResourceModifiedException; -import com.azure.core.exception.ResourceNotFoundException; import com.azure.core.http.HttpPipeline; import com.azure.core.http.HttpPipelineBuilder; import com.azure.core.http.policy.RetryPolicy; import com.azure.core.http.policy.UserAgentPolicy; -import com.azure.core.http.rest.RequestOptions; -import com.azure.core.http.rest.Response; -import com.azure.core.http.rest.RestProxy; -import com.azure.core.util.BinaryData; -import com.azure.core.util.Context; -import com.azure.core.util.FluxUtil; import com.azure.core.util.serializer.JacksonAdapter; import com.azure.core.util.serializer.SerializerAdapter; -import reactor.core.publisher.Mono; /** * Initializes a new instance of the VisibilityClient type. */ public final class VisibilityClientImpl { - /** - * The proxy service used to perform REST calls. - */ - private final VisibilityClientService service; - /** * Service host. */ @@ -113,6 +85,20 @@ public VisibilityWritesImpl getVisibilityWrites() { return this.visibilityWrites; } + /** + * The VisibilityOpsImpl object to access its operations. + */ + private final VisibilityOpsImpl visibilityOps; + + /** + * Gets the VisibilityOpsImpl object to access its operations. + * + * @return the VisibilityOpsImpl object. + */ + public VisibilityOpsImpl getVisibilityOps() { + return this.visibilityOps; + } + /** * Initializes an instance of VisibilityClient client. * @@ -146,385 +132,6 @@ public VisibilityClientImpl(HttpPipeline httpPipeline, SerializerAdapter seriali this.endpoint = endpoint; this.visibilityReads = new VisibilityReadsImpl(this); this.visibilityWrites = new VisibilityWritesImpl(this); - this.service = RestProxy.create(VisibilityClientService.class, this.httpPipeline, this.getSerializerAdapter()); - } - - /** - * The interface defining all the services for VisibilityClient to be used by the proxy service to perform REST - * calls. - */ - @Host("{endpoint}") - @ServiceInterface(name = "VisibilityClient") - public interface VisibilityClientService { - @Get("/visibility/read") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> get(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Get("/visibility/read") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response getSync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Put("/visibility/write") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> create(@HostParam("endpoint") String endpoint, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); - - @Put("/visibility/write") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response createSync(@HostParam("endpoint") String endpoint, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); - - @Post("/visibility/query") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> query(@HostParam("endpoint") String endpoint, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); - - @Post("/visibility/query") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response querySync(@HostParam("endpoint") String endpoint, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); - - @Put("/visibility/roundtrip") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> roundtrip(@HostParam("endpoint") String endpoint, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); - - @Put("/visibility/roundtrip") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response roundtripSync(@HostParam("endpoint") String endpoint, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); - } - - /** - * The get operation. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: int (Required)
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getWithResponseAsync(RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.get(this.getEndpoint(), accept, requestOptions, context)); - } - - /** - * The get operation. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: int (Required)
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getWithResponse(RequestOptions requestOptions) { - final String accept = "application/json"; - return service.getSync(this.getEndpoint(), accept, requestOptions, Context.NONE); - } - - /** - * The create operation. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: int (Required)
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - * @param dog The dog parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createWithResponseAsync(BinaryData dog, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil.withContext( - context -> service.create(this.getEndpoint(), contentType, accept, dog, requestOptions, context)); - } - - /** - * The create operation. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: int (Required)
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - * @param dog The dog parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response createWithResponse(BinaryData dog, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.createSync(this.getEndpoint(), contentType, accept, dog, requestOptions, Context.NONE); - } - - /** - * The query operation. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: int (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - * @param dog The dog parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> queryWithResponseAsync(BinaryData dog, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil.withContext( - context -> service.query(this.getEndpoint(), contentType, accept, dog, requestOptions, context)); - } - - /** - * The query operation. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     secretName: String (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: int (Required)
-     *     name: String (Required)
-     * }
-     * }
-     * 
- * - * @param dog The dog parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response queryWithResponse(BinaryData dog, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.querySync(this.getEndpoint(), contentType, accept, dog, requestOptions, Context.NONE); - } - - /** - * The roundtrip operation. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     name: String (Required)
-     *     secretName: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     name: String (Required)
-     *     secretName: String (Required)
-     * }
-     * }
-     * 
- * - * @param body The body parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> roundtripWithResponseAsync(BinaryData body, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil.withContext( - context -> service.roundtrip(this.getEndpoint(), contentType, accept, body, requestOptions, context)); - } - - /** - * The roundtrip operation. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     name: String (Required)
-     *     secretName: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     name: String (Required)
-     *     secretName: String (Required)
-     * }
-     * }
-     * 
- * - * @param body The body parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response roundtripWithResponse(BinaryData body, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.roundtripSync(this.getEndpoint(), contentType, accept, body, requestOptions, Context.NONE); + this.visibilityOps = new VisibilityOpsImpl(this); } } diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/implementation/VisibilityOpsImpl.java b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/implementation/VisibilityOpsImpl.java new file mode 100644 index 00000000000..f7bc0de85ed --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/visibility/implementation/VisibilityOpsImpl.java @@ -0,0 +1,435 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package tsptest.visibility.implementation; + +import com.azure.core.annotation.BodyParam; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.Post; +import com.azure.core.annotation.Put; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in VisibilityOps. + */ +public final class VisibilityOpsImpl { + /** + * The proxy service used to perform REST calls. + */ + private final VisibilityOpsService service; + + /** + * The service client containing this operation class. + */ + private final VisibilityClientImpl client; + + /** + * Initializes an instance of VisibilityOpsImpl. + * + * @param client the instance of the service client containing this operation class. + */ + VisibilityOpsImpl(VisibilityClientImpl client) { + this.service + = RestProxy.create(VisibilityOpsService.class, client.getHttpPipeline(), client.getSerializerAdapter()); + this.client = client; + } + + /** + * The interface defining all the services for VisibilityClientVisibilityOps to be used by the proxy service to + * perform REST calls. + */ + @Host("{endpoint}") + @ServiceInterface(name = "VisibilityClientVisibilityOps") + public interface VisibilityOpsService { + @Get("/visibility/read") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> get(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/visibility/read") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getSync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Put("/visibility/write") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> create(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); + + @Put("/visibility/write") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response createSync(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); + + @Post("/visibility/query") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> query(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); + + @Post("/visibility/query") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response querySync(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData dog, RequestOptions requestOptions, Context context); + + @Put("/visibility/roundtrip") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> roundtrip(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Put("/visibility/roundtrip") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response roundtripSync(@HostParam("endpoint") String endpoint, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + } + + /** + * The get operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getWithResponseAsync(RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.get(this.client.getEndpoint(), accept, requestOptions, context)); + } + + /** + * The get operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getWithResponse(RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getSync(this.client.getEndpoint(), accept, requestOptions, Context.NONE); + } + + /** + * The create operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param dog The dog parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createWithResponseAsync(BinaryData dog, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext( + context -> service.create(this.client.getEndpoint(), contentType, accept, dog, requestOptions, context)); + } + + /** + * The create operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param dog The dog parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createWithResponse(BinaryData dog, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.createSync(this.client.getEndpoint(), contentType, accept, dog, requestOptions, Context.NONE); + } + + /** + * The query operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param dog The dog parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> queryWithResponseAsync(BinaryData dog, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext( + context -> service.query(this.client.getEndpoint(), contentType, accept, dog, requestOptions, context)); + } + + /** + * The query operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     secretName: String (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: int (Required)
+     *     name: String (Required)
+     * }
+     * }
+     * 
+ * + * @param dog The dog parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response queryWithResponse(BinaryData dog, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.querySync(this.client.getEndpoint(), contentType, accept, dog, requestOptions, Context.NONE); + } + + /** + * The roundtrip operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     secretName: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     secretName: String (Required)
+     * }
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> roundtripWithResponseAsync(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.roundtrip(this.client.getEndpoint(), contentType, accept, body, + requestOptions, context)); + } + + /** + * The roundtrip operation. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     secretName: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     secretName: String (Required)
+     * }
+     * }
+     * 
+ * + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response roundtripWithResponse(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.roundtripSync(this.client.getEndpoint(), contentType, accept, body, requestOptions, + Context.NONE); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-defaultclient_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-defaultclient_metadata.json deleted file mode 100644 index 772945b850f..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-defaultclient_metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.BlobProperties","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.Input":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.Input","_specs_.azure.clientgenerator.core.clientinitialization.defaultclient.models.WithBodyRequest":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.withBody.Request.anonymous"},"generatedFiles":["src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient_metadata.json deleted file mode 100644 index 464fc7c65c5..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient_metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.BlobProperties"},"generatedFiles":["src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient_metadata.json deleted file mode 100644 index a2a24589514..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient_metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient","_specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.BlobProperties"},"generatedFiles":["src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java","src/main/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-defaultclient_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-defaultclient_metadata.json new file mode 100644 index 00000000000..82030c59cda --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-defaultclient_metadata.json @@ -0,0 +1 @@ +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.HeaderParam","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MixedParams","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withBody":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withBodyWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withBody","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.MultipleParams","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasAsyncClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.ParamAlias","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.PathParam","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.deleteStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.getStandalone","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam.withQuery","azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.QueryParam","azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.BlobProperties","azure.clientgenerator.core.clientinitialization.defaultclient.models.Input":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.Input","azure.clientgenerator.core.clientinitialization.defaultclient.models.WithBodyRequest":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.DefaultClient.withBody.Request.anonymous"},"generatedFiles":["src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/HeaderParamClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MixedParamsClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/MultipleParamsClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/ParamAliasClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/PathParamClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/QueryParamClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/HeaderParamClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MixedParamsClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/MultipleParamsClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/ParamAliasClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/PathParamClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/QueryParamClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/implementation/package-info.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/BlobProperties.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/Input.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/WithBodyRequest.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/models/package-info.java","src/main/java/azure/clientgenerator/core/clientinitialization/defaultclient/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-individuallyclient_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-individuallyclient_metadata.json new file mode 100644 index 00000000000..a9904c63a21 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-individuallyclient_metadata.json @@ -0,0 +1 @@ +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithHeader","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMixed","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithMultiple","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasAsyncClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithParamAlias","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithPath","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery.withQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.IndividuallyNestedWithQuery","azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyClient.BlobProperties"},"generatedFiles":["src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithHeaderClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMixedClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithMultipleClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithParamAliasClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithPathClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyNestedWithQueryClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithHeaderClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMixedClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithMultipleClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithParamAliasClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithPathClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/IndividuallyNestedWithQueryClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/implementation/package-info.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/BlobProperties.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/models/package-info.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyclient/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-individuallyparentclient_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-individuallyparentclient_metadata.json new file mode 100644 index 00000000000..e3796a70166 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-clientinitialization-individuallyparentclient_metadata.json @@ -0,0 +1 @@ +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithHeaderClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMixedClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithMultipleClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasAsyncClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withAliasedName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withAliasedNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withAliasedName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withOriginalName":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient.withOriginalNameWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient.withOriginalName","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithParamAliasClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithPathClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryAsyncClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.deleteStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.deleteStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.deleteStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.getStandalone":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.getStandaloneWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.getStandalone","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.withQuery":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient.withQueryWithResponse":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient.withQuery","azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClientBuilder":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.IndividuallyParentNestedWithQueryClient","azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties":"_Specs_.Azure.ClientGenerator.Core.ClientInitialization.IndividuallyParentClient.BlobProperties"},"generatedFiles":["src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithHeaderClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMixedClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithMultipleClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithParamAliasClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithPathClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryAsyncClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClient.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentNestedWithQueryClientBuilder.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithHeaderClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMixedClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithMultipleClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithParamAliasClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithPathClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/IndividuallyParentNestedWithQueryClientImpl.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/implementation/package-info.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/BlobProperties.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/models/package-info.java","src/main/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-flattenproperty_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-flattenproperty_metadata.json index 2e5b430c5c5..1cac878f300 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-flattenproperty_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-clientgenerator-core-flattenproperty_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putNestedFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putNestedFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putNestedFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putNestedFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClientBuilder":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty","azure.clientgenerator.core.flattenproperty.models.ChildFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.ChildFlattenModel","azure.clientgenerator.core.flattenproperty.models.ChildModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.ChildModel","azure.clientgenerator.core.flattenproperty.models.FlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.FlattenModel","azure.clientgenerator.core.flattenproperty.models.NestedFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.NestedFlattenModel"},"generatedFiles":["src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyAsyncClient.java","src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClient.java","src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClientBuilder.java","src/main/java/azure/clientgenerator/core/flattenproperty/implementation/FlattenPropertyClientImpl.java","src/main/java/azure/clientgenerator/core/flattenproperty/implementation/package-info.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/ChildFlattenModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/ChildModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/FlattenModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/NestedFlattenModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/package-info.java","src/main/java/azure/clientgenerator/core/flattenproperty/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenReadOnlyModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenReadOnlyModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenReadOnlyModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenReadOnlyModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenUnknownModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenUnknownModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putFlattenUnknownModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenUnknownModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putNestedFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyAsyncClient.putNestedFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenReadOnlyModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenReadOnlyModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenReadOnlyModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenReadOnlyModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenUnknownModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenUnknownModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putFlattenUnknownModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putFlattenUnknownModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putNestedFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClient.putNestedFlattenModelWithResponse":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.putNestedFlattenModel","azure.clientgenerator.core.flattenproperty.FlattenPropertyClientBuilder":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty","azure.clientgenerator.core.flattenproperty.models.ChildFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.ChildFlattenModel","azure.clientgenerator.core.flattenproperty.models.ChildModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.ChildModel","azure.clientgenerator.core.flattenproperty.models.FlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.FlattenModel","azure.clientgenerator.core.flattenproperty.models.FlattenUnknownModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.FlattenUnknownModel","azure.clientgenerator.core.flattenproperty.models.NestedFlattenModel":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.NestedFlattenModel","azure.clientgenerator.core.flattenproperty.models.Solution":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.Solution","azure.clientgenerator.core.flattenproperty.models.SolutionProperties":"_Specs_.Azure.ClientGenerator.Core.FlattenProperty.SolutionProperties"},"generatedFiles":["src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyAsyncClient.java","src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClient.java","src/main/java/azure/clientgenerator/core/flattenproperty/FlattenPropertyClientBuilder.java","src/main/java/azure/clientgenerator/core/flattenproperty/implementation/FlattenPropertyClientImpl.java","src/main/java/azure/clientgenerator/core/flattenproperty/implementation/package-info.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/ChildFlattenModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/ChildModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/FlattenModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/FlattenUnknownModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/NestedFlattenModel.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/Solution.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/SolutionProperties.java","src/main/java/azure/clientgenerator/core/flattenproperty/models/package-info.java","src/main/java/azure/clientgenerator/core/flattenproperty/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-core-page_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-core-page_metadata.json index 3519a444356..13d482e0b9b 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-core-page_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-core-page_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","apiVersions":{"_Specs_.Azure.Core.Page":"2022-12-01-preview"},"crossLanguageDefinitions":{"azure.core.page.PageAsyncClient":"_Specs_.Azure.Core.Page","azure.core.page.PageAsyncClient.listWithCustomPageModel":"_Specs_.Azure.Core.Page.listWithCustomPageModel","azure.core.page.PageAsyncClient.listWithPage":"_Specs_.Azure.Core.Page.listWithPage","azure.core.page.PageAsyncClient.listWithParameters":"_Specs_.Azure.Core.Page.listWithParameters","azure.core.page.PageAsyncClient.withParameterizedNextLink":"_Specs_.Azure.Core.Page.withParameterizedNextLink","azure.core.page.PageClient":"_Specs_.Azure.Core.Page","azure.core.page.PageClient.listWithCustomPageModel":"_Specs_.Azure.Core.Page.listWithCustomPageModel","azure.core.page.PageClient.listWithPage":"_Specs_.Azure.Core.Page.listWithPage","azure.core.page.PageClient.listWithParameters":"_Specs_.Azure.Core.Page.listWithParameters","azure.core.page.PageClient.withParameterizedNextLink":"_Specs_.Azure.Core.Page.withParameterizedNextLink","azure.core.page.PageClientBuilder":"_Specs_.Azure.Core.Page","azure.core.page.TwoModelsAsPageItemAsyncClient":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem","azure.core.page.TwoModelsAsPageItemAsyncClient.listFirstItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listFirstItem","azure.core.page.TwoModelsAsPageItemAsyncClient.listSecondItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listSecondItem","azure.core.page.TwoModelsAsPageItemClient":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem","azure.core.page.TwoModelsAsPageItemClient.listFirstItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listFirstItem","azure.core.page.TwoModelsAsPageItemClient.listSecondItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listSecondItem","azure.core.page.models.FirstItem":"_Specs_.Azure.Core.Page.FirstItem","azure.core.page.models.ListItemInputBody":"_Specs_.Azure.Core.Page.ListItemInputBody","azure.core.page.models.ListItemInputExtensibleEnum":"_Specs_.Azure.Core.Page.ListItemInputExtensibleEnum","azure.core.page.models.SecondItem":"_Specs_.Azure.Core.Page.SecondItem","azure.core.page.models.User":"_Specs_.Azure.Core.Page.User","azure.core.page.models.UserOrder":"_Specs_.Azure.Core.Page.UserOrder"},"generatedFiles":["src/main/java/azure/core/page/PageAsyncClient.java","src/main/java/azure/core/page/PageClient.java","src/main/java/azure/core/page/PageClientBuilder.java","src/main/java/azure/core/page/PageServiceVersion.java","src/main/java/azure/core/page/TwoModelsAsPageItemAsyncClient.java","src/main/java/azure/core/page/TwoModelsAsPageItemClient.java","src/main/java/azure/core/page/implementation/PageClientImpl.java","src/main/java/azure/core/page/implementation/TwoModelsAsPageItemsImpl.java","src/main/java/azure/core/page/implementation/package-info.java","src/main/java/azure/core/page/models/FirstItem.java","src/main/java/azure/core/page/models/ListItemInputBody.java","src/main/java/azure/core/page/models/ListItemInputExtensibleEnum.java","src/main/java/azure/core/page/models/SecondItem.java","src/main/java/azure/core/page/models/User.java","src/main/java/azure/core/page/models/UserOrder.java","src/main/java/azure/core/page/models/package-info.java","src/main/java/azure/core/page/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"Azure","apiVersions":{"_Specs_.Azure.Core.Page":"2022-12-01-preview"},"crossLanguageDefinitions":{"azure.core.page.PageAsyncClient":"_Specs_.Azure.Core.Page","azure.core.page.PageAsyncClient.listWithCustomPageModel":"_Specs_.Azure.Core.Page.listWithCustomPageModel","azure.core.page.PageAsyncClient.listWithPage":"_Specs_.Azure.Core.Page.listWithPage","azure.core.page.PageAsyncClient.listWithParameters":"_Specs_.Azure.Core.Page.listWithParameters","azure.core.page.PageAsyncClient.withParameterizedNextLink":"_Specs_.Azure.Core.Page.withParameterizedNextLink","azure.core.page.PageAsyncClient.withRelativeNextLink":"_Specs_.Azure.Core.Page.withRelativeNextLink","azure.core.page.PageClient":"_Specs_.Azure.Core.Page","azure.core.page.PageClient.listWithCustomPageModel":"_Specs_.Azure.Core.Page.listWithCustomPageModel","azure.core.page.PageClient.listWithPage":"_Specs_.Azure.Core.Page.listWithPage","azure.core.page.PageClient.listWithParameters":"_Specs_.Azure.Core.Page.listWithParameters","azure.core.page.PageClient.withParameterizedNextLink":"_Specs_.Azure.Core.Page.withParameterizedNextLink","azure.core.page.PageClient.withRelativeNextLink":"_Specs_.Azure.Core.Page.withRelativeNextLink","azure.core.page.PageClientBuilder":"_Specs_.Azure.Core.Page","azure.core.page.TwoModelsAsPageItemAsyncClient":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem","azure.core.page.TwoModelsAsPageItemAsyncClient.listFirstItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listFirstItem","azure.core.page.TwoModelsAsPageItemAsyncClient.listSecondItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listSecondItem","azure.core.page.TwoModelsAsPageItemClient":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem","azure.core.page.TwoModelsAsPageItemClient.listFirstItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listFirstItem","azure.core.page.TwoModelsAsPageItemClient.listSecondItem":"_Specs_.Azure.Core.Page.TwoModelsAsPageItem.listSecondItem","azure.core.page.models.FirstItem":"_Specs_.Azure.Core.Page.FirstItem","azure.core.page.models.ListItemInputBody":"_Specs_.Azure.Core.Page.ListItemInputBody","azure.core.page.models.ListItemInputExtensibleEnum":"_Specs_.Azure.Core.Page.ListItemInputExtensibleEnum","azure.core.page.models.SecondItem":"_Specs_.Azure.Core.Page.SecondItem","azure.core.page.models.User":"_Specs_.Azure.Core.Page.User","azure.core.page.models.UserOrder":"_Specs_.Azure.Core.Page.UserOrder"},"generatedFiles":["src/main/java/azure/core/page/PageAsyncClient.java","src/main/java/azure/core/page/PageClient.java","src/main/java/azure/core/page/PageClientBuilder.java","src/main/java/azure/core/page/PageServiceVersion.java","src/main/java/azure/core/page/TwoModelsAsPageItemAsyncClient.java","src/main/java/azure/core/page/TwoModelsAsPageItemClient.java","src/main/java/azure/core/page/implementation/PageClientImpl.java","src/main/java/azure/core/page/implementation/TwoModelsAsPageItemsImpl.java","src/main/java/azure/core/page/implementation/package-info.java","src/main/java/azure/core/page/models/FirstItem.java","src/main/java/azure/core/page/models/ListItemInputBody.java","src/main/java/azure/core/page/models/ListItemInputExtensibleEnum.java","src/main/java/azure/core/page/models/SecondItem.java","src/main/java/azure/core/page/models/User.java","src/main/java/azure/core/page/models/UserOrder.java","src/main/java/azure/core/page/models/package-info.java","src/main/java/azure/core/page/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-resourcemanager-armstreamstyleserialization-generated_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-resourcemanager-armstreamstyleserialization-generated_metadata.json index 93722034665..90d204298a3 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-resourcemanager-armstreamstyleserialization-generated_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-resourcemanager-armstreamstyleserialization-generated_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","apiVersions":{"TspTest.ArmStreamStyleSerialization":"2023-12-01-preview"},"crossLanguageDefinitions":{"tsptest.armstreamstyleserialization.fluent.ArmResourceProviderManagementClient":"TspTest.ArmStreamStyleSerialization","tsptest.armstreamstyleserialization.fluent.FishesClient":"TspTest.ArmStreamStyleSerialization.Fishes","tsptest.armstreamstyleserialization.fluent.FishesClient.getModel":"TspTest.ArmStreamStyleSerialization.Fishes.getModel","tsptest.armstreamstyleserialization.fluent.FishesClient.getModelWithResponse":"TspTest.ArmStreamStyleSerialization.Fishes.getModel","tsptest.armstreamstyleserialization.fluent.FishesClient.getOutputOnlyModel":"TspTest.ArmStreamStyleSerialization.Fishes.getOutputOnlyModel","tsptest.armstreamstyleserialization.fluent.FishesClient.getOutputOnlyModelWithResponse":"TspTest.ArmStreamStyleSerialization.Fishes.getOutputOnlyModel","tsptest.armstreamstyleserialization.fluent.FishesClient.putModel":"TspTest.ArmStreamStyleSerialization.Fishes.putModel","tsptest.armstreamstyleserialization.fluent.FishesClient.putModelWithResponse":"TspTest.ArmStreamStyleSerialization.Fishes.putModel","tsptest.armstreamstyleserialization.fluent.FunctionsClient":"TspTest.ArmStreamStyleSerialization.Functions","tsptest.armstreamstyleserialization.fluent.FunctionsClient.createFunction":"TspTest.ArmStreamStyleSerialization.Functions.createFunction","tsptest.armstreamstyleserialization.fluent.FunctionsClient.createFunctionWithResponse":"TspTest.ArmStreamStyleSerialization.Functions.createFunction","tsptest.armstreamstyleserialization.fluent.ItemsClient":"TspTest.ArmStreamStyleSerialization.Items","tsptest.armstreamstyleserialization.fluent.ItemsClient.list":"TspTest.ArmStreamStyleSerialization.Items.list","tsptest.armstreamstyleserialization.fluent.PrioritiesClient":"TspTest.ArmStreamStyleSerialization.Priorities","tsptest.armstreamstyleserialization.fluent.PrioritiesClient.setPriority":"TspTest.ArmStreamStyleSerialization.Priorities.setPriority","tsptest.armstreamstyleserialization.fluent.PrioritiesClient.setPriorityWithResponse":"TspTest.ArmStreamStyleSerialization.Priorities.setPriority","tsptest.armstreamstyleserialization.fluent.TopLevelArmResourcesClient":"TspTest.ArmStreamStyleSerialization.TopLevelArmResources","tsptest.armstreamstyleserialization.fluent.TopLevelArmResourcesClient.beginUpdate":"TspTest.ArmStreamStyleSerialization.TopLevelArmResources.update","tsptest.armstreamstyleserialization.fluent.TopLevelArmResourcesClient.update":"TspTest.ArmStreamStyleSerialization.TopLevelArmResources.update","tsptest.armstreamstyleserialization.fluent.models.AnotherFishProperties":"TspTest.ArmStreamStyleSerialization.AnotherFishProperties","tsptest.armstreamstyleserialization.fluent.models.EyeProperties":"TspTest.ArmStreamStyleSerialization.EyeProperties","tsptest.armstreamstyleserialization.fluent.models.FishInner":"TspTest.ArmStreamStyleSerialization.Fish","tsptest.armstreamstyleserialization.fluent.models.FishProperties":"TspTest.ArmStreamStyleSerialization.FishProperties","tsptest.armstreamstyleserialization.fluent.models.FunctionConfiguration":"TspTest.ArmStreamStyleSerialization.FunctionConfiguration","tsptest.armstreamstyleserialization.fluent.models.FunctionInner":"TspTest.ArmStreamStyleSerialization.Function","tsptest.armstreamstyleserialization.fluent.models.OutputOnlyModelInner":"TspTest.ArmStreamStyleSerialization.OutputOnlyModel","tsptest.armstreamstyleserialization.fluent.models.OutputOnlyModelProperties":"TspTest.ArmStreamStyleSerialization.OutputOnlyModelProperties","tsptest.armstreamstyleserialization.fluent.models.ResultData":"TspTest.ArmStreamStyleSerialization.ResultData","tsptest.armstreamstyleserialization.fluent.models.SalmonInner":"TspTest.ArmStreamStyleSerialization.Salmon","tsptest.armstreamstyleserialization.fluent.models.TailProperties":"TspTest.ArmStreamStyleSerialization.TailProperties","tsptest.armstreamstyleserialization.fluent.models.TopLevelArmResourceInner":"TspTest.ArmStreamStyleSerialization.TopLevelArmResource","tsptest.armstreamstyleserialization.implementation.ArmResourceProviderManagementClientBuilder":"TspTest.ArmStreamStyleSerialization","tsptest.armstreamstyleserialization.implementation.models.ListResult":"TspTest.ArmStreamStyleSerialization.ListResult","tsptest.armstreamstyleserialization.models.AggregateFunctionProperties":"TspTest.ArmStreamStyleSerialization.AggregateFunctionProperties","tsptest.armstreamstyleserialization.models.Builtin":"TspTest.ArmStreamStyleSerialization.Builtin","tsptest.armstreamstyleserialization.models.Dog":"TspTest.ArmStreamStyleSerialization.Dog","tsptest.armstreamstyleserialization.models.DogKind":"TspTest.ArmStreamStyleSerialization.DogKind","tsptest.armstreamstyleserialization.models.Encoded":"TspTest.ArmStreamStyleSerialization.Encoded","tsptest.armstreamstyleserialization.models.ErrorMax":"TspTest.ArmStreamStyleSerialization.ErrorResponseMax","tsptest.armstreamstyleserialization.models.ErrorMin":"TspTest.ArmStreamStyleSerialization.ErrorResponseMin","tsptest.armstreamstyleserialization.models.FunctionProperties":"TspTest.ArmStreamStyleSerialization.FunctionProperties","tsptest.armstreamstyleserialization.models.FunctionsCreateFunctionHeaders":null,"tsptest.armstreamstyleserialization.models.GoblinShark":"TspTest.ArmStreamStyleSerialization.GoblinShark","tsptest.armstreamstyleserialization.models.Golden":"TspTest.ArmStreamStyleSerialization.Golden","tsptest.armstreamstyleserialization.models.OutputOnlyModelChild":"TspTest.ArmStreamStyleSerialization.OutputOnlyModelChild","tsptest.armstreamstyleserialization.models.Priority":"TspTest.ArmStreamStyleSerialization.Priority","tsptest.armstreamstyleserialization.models.Result":"TspTest.ArmStreamStyleSerialization.Result","tsptest.armstreamstyleserialization.models.SawShark":"TspTest.ArmStreamStyleSerialization.SawShark","tsptest.armstreamstyleserialization.models.Shark":"TspTest.ArmStreamStyleSerialization.Shark","tsptest.armstreamstyleserialization.models.TopLevelArmResourceProperties":"TspTest.ArmStreamStyleSerialization.TopLevelArmResourceProperties","tsptest.armstreamstyleserialization.models.TopLevelArmResourceTagsUpdate":"Azure.ResourceManager.Foundations.TagsUpdateModel"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/armstreamstyleserialization/ArmResourceProviderManager.java","src/main/java/tsptest/armstreamstyleserialization/fluent/ArmResourceProviderManagementClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/FishesClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/FunctionsClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/ItemsClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/PrioritiesClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/TopLevelArmResourcesClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/AnotherFishProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/EyeProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FishInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FishProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FunctionConfiguration.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FunctionInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/OutputOnlyModelInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/OutputOnlyModelProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/ResultData.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/SalmonInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/TailProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/TopLevelArmResourceInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/package-info.java","src/main/java/tsptest/armstreamstyleserialization/fluent/package-info.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ArmResourceProviderManagementClientBuilder.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ArmResourceProviderManagementClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FishImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FishesClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FishesImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FunctionImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FunctionsClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FunctionsImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/OutputOnlyModelImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ResourceManagerUtils.java","src/main/java/tsptest/armstreamstyleserialization/implementation/SalmonImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/TopLevelArmResourceImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/TopLevelArmResourcesClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/TopLevelArmResourcesImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResult.java","src/main/java/tsptest/armstreamstyleserialization/implementation/package-info.java","src/main/java/tsptest/armstreamstyleserialization/models/AggregateFunctionProperties.java","src/main/java/tsptest/armstreamstyleserialization/models/Builtin.java","src/main/java/tsptest/armstreamstyleserialization/models/Dog.java","src/main/java/tsptest/armstreamstyleserialization/models/DogKind.java","src/main/java/tsptest/armstreamstyleserialization/models/Encoded.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMax.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMaxException.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMin.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMinException.java","src/main/java/tsptest/armstreamstyleserialization/models/Fish.java","src/main/java/tsptest/armstreamstyleserialization/models/Fishes.java","src/main/java/tsptest/armstreamstyleserialization/models/Function.java","src/main/java/tsptest/armstreamstyleserialization/models/FunctionProperties.java","src/main/java/tsptest/armstreamstyleserialization/models/Functions.java","src/main/java/tsptest/armstreamstyleserialization/models/FunctionsCreateFunctionHeaders.java","src/main/java/tsptest/armstreamstyleserialization/models/FunctionsCreateFunctionResponse.java","src/main/java/tsptest/armstreamstyleserialization/models/GoblinShark.java","src/main/java/tsptest/armstreamstyleserialization/models/Golden.java","src/main/java/tsptest/armstreamstyleserialization/models/Items.java","src/main/java/tsptest/armstreamstyleserialization/models/OutputOnlyModel.java","src/main/java/tsptest/armstreamstyleserialization/models/OutputOnlyModelChild.java","src/main/java/tsptest/armstreamstyleserialization/models/Priorities.java","src/main/java/tsptest/armstreamstyleserialization/models/Priority.java","src/main/java/tsptest/armstreamstyleserialization/models/Result.java","src/main/java/tsptest/armstreamstyleserialization/models/Salmon.java","src/main/java/tsptest/armstreamstyleserialization/models/SawShark.java","src/main/java/tsptest/armstreamstyleserialization/models/Shark.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResource.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResourceProperties.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResourceTagsUpdate.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResources.java","src/main/java/tsptest/armstreamstyleserialization/models/package-info.java","src/main/java/tsptest/armstreamstyleserialization/package-info.java"]} \ No newline at end of file +{"flavor":"Azure","apiVersions":{"TspTest.ArmStreamStyleSerialization":"2023-12-01-preview"},"crossLanguageDefinitions":{"tsptest.armstreamstyleserialization.fluent.ArmResourceProviderManagementClient":"TspTest.ArmStreamStyleSerialization","tsptest.armstreamstyleserialization.fluent.FishesClient":"TspTest.ArmStreamStyleSerialization.Fishes","tsptest.armstreamstyleserialization.fluent.FishesClient.getModel":"TspTest.ArmStreamStyleSerialization.Fishes.getModel","tsptest.armstreamstyleserialization.fluent.FishesClient.getModelWithResponse":"TspTest.ArmStreamStyleSerialization.Fishes.getModel","tsptest.armstreamstyleserialization.fluent.FishesClient.getOutputOnlyModel":"TspTest.ArmStreamStyleSerialization.Fishes.getOutputOnlyModel","tsptest.armstreamstyleserialization.fluent.FishesClient.getOutputOnlyModelWithResponse":"TspTest.ArmStreamStyleSerialization.Fishes.getOutputOnlyModel","tsptest.armstreamstyleserialization.fluent.FishesClient.putModel":"TspTest.ArmStreamStyleSerialization.Fishes.putModel","tsptest.armstreamstyleserialization.fluent.FishesClient.putModelWithResponse":"TspTest.ArmStreamStyleSerialization.Fishes.putModel","tsptest.armstreamstyleserialization.fluent.FunctionsClient":"TspTest.ArmStreamStyleSerialization.Functions","tsptest.armstreamstyleserialization.fluent.FunctionsClient.createFunction":"TspTest.ArmStreamStyleSerialization.Functions.createFunction","tsptest.armstreamstyleserialization.fluent.FunctionsClient.createFunctionWithResponse":"TspTest.ArmStreamStyleSerialization.Functions.createFunction","tsptest.armstreamstyleserialization.fluent.ItemsClient":"TspTest.ArmStreamStyleSerialization.Items","tsptest.armstreamstyleserialization.fluent.ItemsClient.list":"TspTest.ArmStreamStyleSerialization.Items.list","tsptest.armstreamstyleserialization.fluent.ItemsClient.list2":"TspTest.ArmStreamStyleSerialization.Items.list2","tsptest.armstreamstyleserialization.fluent.ItemsClient.list3":"TspTest.ArmStreamStyleSerialization.Items.list3","tsptest.armstreamstyleserialization.fluent.ItemsClient.post":"TspTest.ArmStreamStyleSerialization.Items.post","tsptest.armstreamstyleserialization.fluent.ItemsClient.postWithResponse":"TspTest.ArmStreamStyleSerialization.Items.post","tsptest.armstreamstyleserialization.fluent.ItemsClient.summary":"TspTest.ArmStreamStyleSerialization.Items.summary","tsptest.armstreamstyleserialization.fluent.ItemsClient.summary2":"TspTest.ArmStreamStyleSerialization.Items.summary2","tsptest.armstreamstyleserialization.fluent.ItemsClient.summary2WithResponse":"TspTest.ArmStreamStyleSerialization.Items.summary2","tsptest.armstreamstyleserialization.fluent.PrioritiesClient":"TspTest.ArmStreamStyleSerialization.Priorities","tsptest.armstreamstyleserialization.fluent.PrioritiesClient.setPriority":"TspTest.ArmStreamStyleSerialization.Priorities.setPriority","tsptest.armstreamstyleserialization.fluent.PrioritiesClient.setPriorityWithResponse":"TspTest.ArmStreamStyleSerialization.Priorities.setPriority","tsptest.armstreamstyleserialization.fluent.TopLevelArmResourcesClient":"TspTest.ArmStreamStyleSerialization.TopLevelArmResources","tsptest.armstreamstyleserialization.fluent.TopLevelArmResourcesClient.beginUpdate":"TspTest.ArmStreamStyleSerialization.TopLevelArmResources.update","tsptest.armstreamstyleserialization.fluent.TopLevelArmResourcesClient.update":"TspTest.ArmStreamStyleSerialization.TopLevelArmResources.update","tsptest.armstreamstyleserialization.fluent.models.AnotherFishProperties":"TspTest.ArmStreamStyleSerialization.AnotherFishProperties","tsptest.armstreamstyleserialization.fluent.models.EyeProperties":"TspTest.ArmStreamStyleSerialization.EyeProperties","tsptest.armstreamstyleserialization.fluent.models.FishInner":"TspTest.ArmStreamStyleSerialization.Fish","tsptest.armstreamstyleserialization.fluent.models.FishProperties":"TspTest.ArmStreamStyleSerialization.FishProperties","tsptest.armstreamstyleserialization.fluent.models.FunctionConfiguration":"TspTest.ArmStreamStyleSerialization.FunctionConfiguration","tsptest.armstreamstyleserialization.fluent.models.FunctionInner":"TspTest.ArmStreamStyleSerialization.Function","tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner":"TspTest.ArmStreamStyleSerialization.ListResultSummary2","tsptest.armstreamstyleserialization.fluent.models.OutputOnlyModelInner":"TspTest.ArmStreamStyleSerialization.OutputOnlyModel","tsptest.armstreamstyleserialization.fluent.models.OutputOnlyModelProperties":"TspTest.ArmStreamStyleSerialization.OutputOnlyModelProperties","tsptest.armstreamstyleserialization.fluent.models.ResultData":"TspTest.ArmStreamStyleSerialization.ResultData","tsptest.armstreamstyleserialization.fluent.models.SalmonInner":"TspTest.ArmStreamStyleSerialization.Salmon","tsptest.armstreamstyleserialization.fluent.models.TailProperties":"TspTest.ArmStreamStyleSerialization.TailProperties","tsptest.armstreamstyleserialization.fluent.models.TopLevelArmResourceInner":"TspTest.ArmStreamStyleSerialization.TopLevelArmResource","tsptest.armstreamstyleserialization.implementation.ArmResourceProviderManagementClientBuilder":"TspTest.ArmStreamStyleSerialization","tsptest.armstreamstyleserialization.implementation.models.ListResult":"TspTest.ArmStreamStyleSerialization.ListResult","tsptest.armstreamstyleserialization.implementation.models.ListResultSummary":"TspTest.ArmStreamStyleSerialization.ListResultSummary","tsptest.armstreamstyleserialization.models.AggregateFunctionProperties":"TspTest.ArmStreamStyleSerialization.AggregateFunctionProperties","tsptest.armstreamstyleserialization.models.Builtin":"TspTest.ArmStreamStyleSerialization.Builtin","tsptest.armstreamstyleserialization.models.Dog":"TspTest.ArmStreamStyleSerialization.Dog","tsptest.armstreamstyleserialization.models.DogKind":"TspTest.ArmStreamStyleSerialization.DogKind","tsptest.armstreamstyleserialization.models.Encoded":"TspTest.ArmStreamStyleSerialization.Encoded","tsptest.armstreamstyleserialization.models.ErrorMax":"TspTest.ArmStreamStyleSerialization.ErrorResponseMax","tsptest.armstreamstyleserialization.models.ErrorMin":"TspTest.ArmStreamStyleSerialization.ErrorResponseMin","tsptest.armstreamstyleserialization.models.FunctionProperties":"TspTest.ArmStreamStyleSerialization.FunctionProperties","tsptest.armstreamstyleserialization.models.FunctionsCreateFunctionHeaders":null,"tsptest.armstreamstyleserialization.models.GoblinShark":"TspTest.ArmStreamStyleSerialization.GoblinShark","tsptest.armstreamstyleserialization.models.Golden":"TspTest.ArmStreamStyleSerialization.Golden","tsptest.armstreamstyleserialization.models.ListResult2":"TspTest.ArmStreamStyleSerialization.ListResult2","tsptest.armstreamstyleserialization.models.ListResult3":"TspTest.ArmStreamStyleSerialization.ListResult3","tsptest.armstreamstyleserialization.models.OutputOnlyModelChild":"TspTest.ArmStreamStyleSerialization.OutputOnlyModelChild","tsptest.armstreamstyleserialization.models.Priority":"TspTest.ArmStreamStyleSerialization.Priority","tsptest.armstreamstyleserialization.models.Result":"TspTest.ArmStreamStyleSerialization.Result","tsptest.armstreamstyleserialization.models.SawShark":"TspTest.ArmStreamStyleSerialization.SawShark","tsptest.armstreamstyleserialization.models.Shark":"TspTest.ArmStreamStyleSerialization.Shark","tsptest.armstreamstyleserialization.models.TopLevelArmResourceProperties":"TspTest.ArmStreamStyleSerialization.TopLevelArmResourceProperties","tsptest.armstreamstyleserialization.models.TopLevelArmResourceTagsUpdate":"Azure.ResourceManager.Foundations.TagsUpdateModel"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/armstreamstyleserialization/ArmResourceProviderManager.java","src/main/java/tsptest/armstreamstyleserialization/fluent/ArmResourceProviderManagementClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/FishesClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/FunctionsClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/ItemsClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/PrioritiesClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/TopLevelArmResourcesClient.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/AnotherFishProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/EyeProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FishInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FishProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FunctionConfiguration.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/FunctionInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/ListResultSummary2Inner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/OutputOnlyModelInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/OutputOnlyModelProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/ResultData.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/SalmonInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/TailProperties.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/TopLevelArmResourceInner.java","src/main/java/tsptest/armstreamstyleserialization/fluent/models/package-info.java","src/main/java/tsptest/armstreamstyleserialization/fluent/package-info.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ArmResourceProviderManagementClientBuilder.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ArmResourceProviderManagementClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FishImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FishesClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FishesImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FunctionImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FunctionsClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/FunctionsImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ItemsImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ListResultSummary2Impl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/OutputOnlyModelImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/PrioritiesImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/ResourceManagerUtils.java","src/main/java/tsptest/armstreamstyleserialization/implementation/SalmonImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/TopLevelArmResourceImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/TopLevelArmResourcesClientImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/TopLevelArmResourcesImpl.java","src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResult.java","src/main/java/tsptest/armstreamstyleserialization/implementation/models/ListResultSummary.java","src/main/java/tsptest/armstreamstyleserialization/implementation/package-info.java","src/main/java/tsptest/armstreamstyleserialization/models/AggregateFunctionProperties.java","src/main/java/tsptest/armstreamstyleserialization/models/Builtin.java","src/main/java/tsptest/armstreamstyleserialization/models/Dog.java","src/main/java/tsptest/armstreamstyleserialization/models/DogKind.java","src/main/java/tsptest/armstreamstyleserialization/models/Encoded.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMax.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMaxException.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMin.java","src/main/java/tsptest/armstreamstyleserialization/models/ErrorMinException.java","src/main/java/tsptest/armstreamstyleserialization/models/Fish.java","src/main/java/tsptest/armstreamstyleserialization/models/Fishes.java","src/main/java/tsptest/armstreamstyleserialization/models/Function.java","src/main/java/tsptest/armstreamstyleserialization/models/FunctionProperties.java","src/main/java/tsptest/armstreamstyleserialization/models/Functions.java","src/main/java/tsptest/armstreamstyleserialization/models/FunctionsCreateFunctionHeaders.java","src/main/java/tsptest/armstreamstyleserialization/models/FunctionsCreateFunctionResponse.java","src/main/java/tsptest/armstreamstyleserialization/models/GoblinShark.java","src/main/java/tsptest/armstreamstyleserialization/models/Golden.java","src/main/java/tsptest/armstreamstyleserialization/models/Items.java","src/main/java/tsptest/armstreamstyleserialization/models/ListResult2.java","src/main/java/tsptest/armstreamstyleserialization/models/ListResult3.java","src/main/java/tsptest/armstreamstyleserialization/models/ListResultSummary2.java","src/main/java/tsptest/armstreamstyleserialization/models/OutputOnlyModel.java","src/main/java/tsptest/armstreamstyleserialization/models/OutputOnlyModelChild.java","src/main/java/tsptest/armstreamstyleserialization/models/Priorities.java","src/main/java/tsptest/armstreamstyleserialization/models/Priority.java","src/main/java/tsptest/armstreamstyleserialization/models/Result.java","src/main/java/tsptest/armstreamstyleserialization/models/Salmon.java","src/main/java/tsptest/armstreamstyleserialization/models/SawShark.java","src/main/java/tsptest/armstreamstyleserialization/models/Shark.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResource.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResourceProperties.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResourceTagsUpdate.java","src/main/java/tsptest/armstreamstyleserialization/models/TopLevelArmResources.java","src/main/java/tsptest/armstreamstyleserialization/models/package-info.java","src/main/java/tsptest/armstreamstyleserialization/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-resourcemanager-combined-generated_metadata_older-versions.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-resourcemanager-combined-generated_metadata_older-versions.json deleted file mode 100644 index 3b1a9806756..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/azure-resourcemanager-combined-generated_metadata_older-versions.json +++ /dev/null @@ -1 +0,0 @@ -{"flavor":"Azure","apiVersions":{"Azure.ResourceManager.MultiServiceOlderVersions.Compute":"2024-11-01","Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk":"2024-03-02"},"crossLanguageDefinitions":{"azure.resourcemanager.multiserviceolderversions.combined.fluent.Combined":"Azure.ResourceManager.MultiServiceOlderVersions.Combined","azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient":"Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk.Disks","azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient.beginCreateOrUpdate":"Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk.Disks.createOrUpdate","azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient.createOrUpdate":"Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk.Disks.createOrUpdate","azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient.getByResourceGroup":"Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk.Disks.get","azure.resourcemanager.multiserviceolderversions.combined.fluent.DisksClient.getByResourceGroupWithResponse":"Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk.Disks.get","azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient":"Azure.ResourceManager.MultiServiceOlderVersions.Compute.VirtualMachines","azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient.beginCreateOrUpdate":"Azure.ResourceManager.MultiServiceOlderVersions.Compute.VirtualMachines.createOrUpdate","azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient.createOrUpdate":"Azure.ResourceManager.MultiServiceOlderVersions.Compute.VirtualMachines.createOrUpdate","azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient.getByResourceGroup":"Azure.ResourceManager.MultiServiceOlderVersions.Compute.VirtualMachines.get","azure.resourcemanager.multiserviceolderversions.combined.fluent.VirtualMachinesClient.getByResourceGroupWithResponse":"Azure.ResourceManager.MultiServiceOlderVersions.Compute.VirtualMachines.get","azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner":"Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk.Disk","azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner":"Azure.ResourceManager.MultiServiceOlderVersions.Compute.VirtualMachine","azure.resourcemanager.multiserviceolderversions.combined.implementation.CombinedBuilder":"Azure.ResourceManager.MultiServiceOlderVersions.Combined","azure.resourcemanager.multiserviceolderversions.combined.models.DiskProperties":"Azure.ResourceManager.MultiServiceOlderVersions.ComputeDisk.DiskProperties","azure.resourcemanager.multiserviceolderversions.combined.models.ResourceProvisioningState":"Azure.ResourceManager.ResourceProvisioningState","azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachineProperties":"Azure.ResourceManager.MultiServiceOlderVersions.Compute.VirtualMachineProperties"},"generatedFiles":["src/main/java/azure/resourcemanager/multiserviceolderversions/combined/CombinedManager.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/Combined.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/DisksClient.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/VirtualMachinesClient.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/DiskInner.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/VirtualMachineInner.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/models/package-info.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/fluent/package-info.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedBuilder.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/CombinedImpl.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DiskImpl.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksClientImpl.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/DisksImpl.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/ResourceManagerUtils.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachineImpl.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesClientImpl.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/VirtualMachinesImpl.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/implementation/package-info.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disk.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/DiskProperties.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/Disks.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/ResourceProvisioningState.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachine.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachineProperties.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/VirtualMachines.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/models/package-info.java","src/main/java/azure/resourcemanager/multiserviceolderversions/combined/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-combined-generated_older-versions/proxy-config.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-combined-generated_older-versions/proxy-config.json deleted file mode 100644 index 05dc52000a6..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-combined-generated_older-versions/proxy-config.json +++ /dev/null @@ -1 +0,0 @@ -[["azure.resourcemanager.multiserviceolderversions.combined.implementation.DisksClientImpl$DisksService"],["azure.resourcemanager.multiserviceolderversions.combined.implementation.VirtualMachinesClientImpl$VirtualMachinesService"]] \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-combined-generated_older-versions/reflect-config.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-combined-generated_older-versions/reflect-config.json deleted file mode 100644 index 0637a088a01..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/native-image/com.azure.resourcemanager/azure-resourcemanager-combined-generated_older-versions/reflect-config.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/specialwords_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/specialwords_metadata.json index 14a05c2f48d..4e9b64ff6fa 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/specialwords_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/specialwords_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"specialwords.ModelPropertiesAsyncClient":"SpecialWords.ModelProperties","specialwords.ModelPropertiesAsyncClient.dictMethods":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesAsyncClient.dictMethodsWithResponse":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesAsyncClient.sameAsModel":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesAsyncClient.sameAsModelWithResponse":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesAsyncClient.withList":"SpecialWords.ModelProperties.withList","specialwords.ModelPropertiesAsyncClient.withListWithResponse":"SpecialWords.ModelProperties.withList","specialwords.ModelPropertiesClient":"SpecialWords.ModelProperties","specialwords.ModelPropertiesClient.dictMethods":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesClient.dictMethodsWithResponse":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesClient.sameAsModel":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesClient.sameAsModelWithResponse":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesClient.withList":"SpecialWords.ModelProperties.withList","specialwords.ModelPropertiesClient.withListWithResponse":"SpecialWords.ModelProperties.withList","specialwords.ModelsAsyncClient":"SpecialWords.Models","specialwords.ModelsAsyncClient.withAnd":"SpecialWords.Models.withAnd","specialwords.ModelsAsyncClient.withAndWithResponse":"SpecialWords.Models.withAnd","specialwords.ModelsAsyncClient.withAs":"SpecialWords.Models.withAs","specialwords.ModelsAsyncClient.withAsWithResponse":"SpecialWords.Models.withAs","specialwords.ModelsAsyncClient.withAssert":"SpecialWords.Models.withAssert","specialwords.ModelsAsyncClient.withAssertWithResponse":"SpecialWords.Models.withAssert","specialwords.ModelsAsyncClient.withAsyncWithResponse":"SpecialWords.Models.withAsync","specialwords.ModelsAsyncClient.withAwait":"SpecialWords.Models.withAwait","specialwords.ModelsAsyncClient.withAwaitWithResponse":"SpecialWords.Models.withAwait","specialwords.ModelsAsyncClient.withBreak":"SpecialWords.Models.withBreak","specialwords.ModelsAsyncClient.withBreakWithResponse":"SpecialWords.Models.withBreak","specialwords.ModelsAsyncClient.withClass":"SpecialWords.Models.withClass","specialwords.ModelsAsyncClient.withClassWithResponse":"SpecialWords.Models.withClass","specialwords.ModelsAsyncClient.withConstructor":"SpecialWords.Models.withConstructor","specialwords.ModelsAsyncClient.withConstructorWithResponse":"SpecialWords.Models.withConstructor","specialwords.ModelsAsyncClient.withContinue":"SpecialWords.Models.withContinue","specialwords.ModelsAsyncClient.withContinueWithResponse":"SpecialWords.Models.withContinue","specialwords.ModelsAsyncClient.withDef":"SpecialWords.Models.withDef","specialwords.ModelsAsyncClient.withDefWithResponse":"SpecialWords.Models.withDef","specialwords.ModelsAsyncClient.withDel":"SpecialWords.Models.withDel","specialwords.ModelsAsyncClient.withDelWithResponse":"SpecialWords.Models.withDel","specialwords.ModelsAsyncClient.withElif":"SpecialWords.Models.withElif","specialwords.ModelsAsyncClient.withElifWithResponse":"SpecialWords.Models.withElif","specialwords.ModelsAsyncClient.withElse":"SpecialWords.Models.withElse","specialwords.ModelsAsyncClient.withElseWithResponse":"SpecialWords.Models.withElse","specialwords.ModelsAsyncClient.withExcept":"SpecialWords.Models.withExcept","specialwords.ModelsAsyncClient.withExceptWithResponse":"SpecialWords.Models.withExcept","specialwords.ModelsAsyncClient.withExec":"SpecialWords.Models.withExec","specialwords.ModelsAsyncClient.withExecWithResponse":"SpecialWords.Models.withExec","specialwords.ModelsAsyncClient.withFinally":"SpecialWords.Models.withFinally","specialwords.ModelsAsyncClient.withFinallyWithResponse":"SpecialWords.Models.withFinally","specialwords.ModelsAsyncClient.withFor":"SpecialWords.Models.withFor","specialwords.ModelsAsyncClient.withForWithResponse":"SpecialWords.Models.withFor","specialwords.ModelsAsyncClient.withFrom":"SpecialWords.Models.withFrom","specialwords.ModelsAsyncClient.withFromWithResponse":"SpecialWords.Models.withFrom","specialwords.ModelsAsyncClient.withGlobal":"SpecialWords.Models.withGlobal","specialwords.ModelsAsyncClient.withGlobalWithResponse":"SpecialWords.Models.withGlobal","specialwords.ModelsAsyncClient.withIf":"SpecialWords.Models.withIf","specialwords.ModelsAsyncClient.withIfWithResponse":"SpecialWords.Models.withIf","specialwords.ModelsAsyncClient.withImport":"SpecialWords.Models.withImport","specialwords.ModelsAsyncClient.withImportWithResponse":"SpecialWords.Models.withImport","specialwords.ModelsAsyncClient.withIn":"SpecialWords.Models.withIn","specialwords.ModelsAsyncClient.withInWithResponse":"SpecialWords.Models.withIn","specialwords.ModelsAsyncClient.withIs":"SpecialWords.Models.withIs","specialwords.ModelsAsyncClient.withIsWithResponse":"SpecialWords.Models.withIs","specialwords.ModelsAsyncClient.withLambda":"SpecialWords.Models.withLambda","specialwords.ModelsAsyncClient.withLambdaWithResponse":"SpecialWords.Models.withLambda","specialwords.ModelsAsyncClient.withNot":"SpecialWords.Models.withNot","specialwords.ModelsAsyncClient.withNotWithResponse":"SpecialWords.Models.withNot","specialwords.ModelsAsyncClient.withOr":"SpecialWords.Models.withOr","specialwords.ModelsAsyncClient.withOrWithResponse":"SpecialWords.Models.withOr","specialwords.ModelsAsyncClient.withPass":"SpecialWords.Models.withPass","specialwords.ModelsAsyncClient.withPassWithResponse":"SpecialWords.Models.withPass","specialwords.ModelsAsyncClient.withRaise":"SpecialWords.Models.withRaise","specialwords.ModelsAsyncClient.withRaiseWithResponse":"SpecialWords.Models.withRaise","specialwords.ModelsAsyncClient.withReturn":"SpecialWords.Models.withReturn","specialwords.ModelsAsyncClient.withReturnWithResponse":"SpecialWords.Models.withReturn","specialwords.ModelsAsyncClient.withTry":"SpecialWords.Models.withTry","specialwords.ModelsAsyncClient.withTryWithResponse":"SpecialWords.Models.withTry","specialwords.ModelsAsyncClient.withWhile":"SpecialWords.Models.withWhile","specialwords.ModelsAsyncClient.withWhileWithResponse":"SpecialWords.Models.withWhile","specialwords.ModelsAsyncClient.withWith":"SpecialWords.Models.withWith","specialwords.ModelsAsyncClient.withWithWithResponse":"SpecialWords.Models.withWith","specialwords.ModelsAsyncClient.withYield":"SpecialWords.Models.withYield","specialwords.ModelsAsyncClient.withYieldWithResponse":"SpecialWords.Models.withYield","specialwords.ModelsClient":"SpecialWords.Models","specialwords.ModelsClient.withAnd":"SpecialWords.Models.withAnd","specialwords.ModelsClient.withAndWithResponse":"SpecialWords.Models.withAnd","specialwords.ModelsClient.withAs":"SpecialWords.Models.withAs","specialwords.ModelsClient.withAsWithResponse":"SpecialWords.Models.withAs","specialwords.ModelsClient.withAssert":"SpecialWords.Models.withAssert","specialwords.ModelsClient.withAssertWithResponse":"SpecialWords.Models.withAssert","specialwords.ModelsClient.withAsyncWithResponse":"SpecialWords.Models.withAsync","specialwords.ModelsClient.withAwait":"SpecialWords.Models.withAwait","specialwords.ModelsClient.withAwaitWithResponse":"SpecialWords.Models.withAwait","specialwords.ModelsClient.withBreak":"SpecialWords.Models.withBreak","specialwords.ModelsClient.withBreakWithResponse":"SpecialWords.Models.withBreak","specialwords.ModelsClient.withClass":"SpecialWords.Models.withClass","specialwords.ModelsClient.withClassWithResponse":"SpecialWords.Models.withClass","specialwords.ModelsClient.withConstructor":"SpecialWords.Models.withConstructor","specialwords.ModelsClient.withConstructorWithResponse":"SpecialWords.Models.withConstructor","specialwords.ModelsClient.withContinue":"SpecialWords.Models.withContinue","specialwords.ModelsClient.withContinueWithResponse":"SpecialWords.Models.withContinue","specialwords.ModelsClient.withDef":"SpecialWords.Models.withDef","specialwords.ModelsClient.withDefWithResponse":"SpecialWords.Models.withDef","specialwords.ModelsClient.withDel":"SpecialWords.Models.withDel","specialwords.ModelsClient.withDelWithResponse":"SpecialWords.Models.withDel","specialwords.ModelsClient.withElif":"SpecialWords.Models.withElif","specialwords.ModelsClient.withElifWithResponse":"SpecialWords.Models.withElif","specialwords.ModelsClient.withElse":"SpecialWords.Models.withElse","specialwords.ModelsClient.withElseWithResponse":"SpecialWords.Models.withElse","specialwords.ModelsClient.withExcept":"SpecialWords.Models.withExcept","specialwords.ModelsClient.withExceptWithResponse":"SpecialWords.Models.withExcept","specialwords.ModelsClient.withExec":"SpecialWords.Models.withExec","specialwords.ModelsClient.withExecWithResponse":"SpecialWords.Models.withExec","specialwords.ModelsClient.withFinally":"SpecialWords.Models.withFinally","specialwords.ModelsClient.withFinallyWithResponse":"SpecialWords.Models.withFinally","specialwords.ModelsClient.withFor":"SpecialWords.Models.withFor","specialwords.ModelsClient.withForWithResponse":"SpecialWords.Models.withFor","specialwords.ModelsClient.withFrom":"SpecialWords.Models.withFrom","specialwords.ModelsClient.withFromWithResponse":"SpecialWords.Models.withFrom","specialwords.ModelsClient.withGlobal":"SpecialWords.Models.withGlobal","specialwords.ModelsClient.withGlobalWithResponse":"SpecialWords.Models.withGlobal","specialwords.ModelsClient.withIf":"SpecialWords.Models.withIf","specialwords.ModelsClient.withIfWithResponse":"SpecialWords.Models.withIf","specialwords.ModelsClient.withImport":"SpecialWords.Models.withImport","specialwords.ModelsClient.withImportWithResponse":"SpecialWords.Models.withImport","specialwords.ModelsClient.withIn":"SpecialWords.Models.withIn","specialwords.ModelsClient.withInWithResponse":"SpecialWords.Models.withIn","specialwords.ModelsClient.withIs":"SpecialWords.Models.withIs","specialwords.ModelsClient.withIsWithResponse":"SpecialWords.Models.withIs","specialwords.ModelsClient.withLambda":"SpecialWords.Models.withLambda","specialwords.ModelsClient.withLambdaWithResponse":"SpecialWords.Models.withLambda","specialwords.ModelsClient.withNot":"SpecialWords.Models.withNot","specialwords.ModelsClient.withNotWithResponse":"SpecialWords.Models.withNot","specialwords.ModelsClient.withOr":"SpecialWords.Models.withOr","specialwords.ModelsClient.withOrWithResponse":"SpecialWords.Models.withOr","specialwords.ModelsClient.withPass":"SpecialWords.Models.withPass","specialwords.ModelsClient.withPassWithResponse":"SpecialWords.Models.withPass","specialwords.ModelsClient.withRaise":"SpecialWords.Models.withRaise","specialwords.ModelsClient.withRaiseWithResponse":"SpecialWords.Models.withRaise","specialwords.ModelsClient.withReturn":"SpecialWords.Models.withReturn","specialwords.ModelsClient.withReturnWithResponse":"SpecialWords.Models.withReturn","specialwords.ModelsClient.withTry":"SpecialWords.Models.withTry","specialwords.ModelsClient.withTryWithResponse":"SpecialWords.Models.withTry","specialwords.ModelsClient.withWhile":"SpecialWords.Models.withWhile","specialwords.ModelsClient.withWhileWithResponse":"SpecialWords.Models.withWhile","specialwords.ModelsClient.withWith":"SpecialWords.Models.withWith","specialwords.ModelsClient.withWithWithResponse":"SpecialWords.Models.withWith","specialwords.ModelsClient.withYield":"SpecialWords.Models.withYield","specialwords.ModelsClient.withYieldWithResponse":"SpecialWords.Models.withYield","specialwords.OperationsAsyncClient":"SpecialWords.Operations","specialwords.OperationsAsyncClient.and":"SpecialWords.Operations.and","specialwords.OperationsAsyncClient.andWithResponse":"SpecialWords.Operations.and","specialwords.OperationsAsyncClient.as":"SpecialWords.Operations.as","specialwords.OperationsAsyncClient.asWithResponse":"SpecialWords.Operations.as","specialwords.OperationsAsyncClient.assertMethod":"SpecialWords.Operations.assert","specialwords.OperationsAsyncClient.assertMethodWithResponse":"SpecialWords.Operations.assert","specialwords.OperationsAsyncClient.async":"SpecialWords.Operations.async","specialwords.OperationsAsyncClient.asyncWithResponse":"SpecialWords.Operations.async","specialwords.OperationsAsyncClient.await":"SpecialWords.Operations.await","specialwords.OperationsAsyncClient.awaitWithResponse":"SpecialWords.Operations.await","specialwords.OperationsAsyncClient.breakMethod":"SpecialWords.Operations.break","specialwords.OperationsAsyncClient.breakMethodWithResponse":"SpecialWords.Operations.break","specialwords.OperationsAsyncClient.classMethod":"SpecialWords.Operations.class","specialwords.OperationsAsyncClient.classMethodWithResponse":"SpecialWords.Operations.class","specialwords.OperationsAsyncClient.constructor":"SpecialWords.Operations.constructor","specialwords.OperationsAsyncClient.constructorWithResponse":"SpecialWords.Operations.constructor","specialwords.OperationsAsyncClient.continueMethod":"SpecialWords.Operations.continue","specialwords.OperationsAsyncClient.continueMethodWithResponse":"SpecialWords.Operations.continue","specialwords.OperationsAsyncClient.def":"SpecialWords.Operations.def","specialwords.OperationsAsyncClient.defWithResponse":"SpecialWords.Operations.def","specialwords.OperationsAsyncClient.del":"SpecialWords.Operations.del","specialwords.OperationsAsyncClient.delWithResponse":"SpecialWords.Operations.del","specialwords.OperationsAsyncClient.elif":"SpecialWords.Operations.elif","specialwords.OperationsAsyncClient.elifWithResponse":"SpecialWords.Operations.elif","specialwords.OperationsAsyncClient.elseMethod":"SpecialWords.Operations.else","specialwords.OperationsAsyncClient.elseMethodWithResponse":"SpecialWords.Operations.else","specialwords.OperationsAsyncClient.except":"SpecialWords.Operations.except","specialwords.OperationsAsyncClient.exceptWithResponse":"SpecialWords.Operations.except","specialwords.OperationsAsyncClient.exec":"SpecialWords.Operations.exec","specialwords.OperationsAsyncClient.execWithResponse":"SpecialWords.Operations.exec","specialwords.OperationsAsyncClient.finallyMethod":"SpecialWords.Operations.finally","specialwords.OperationsAsyncClient.finallyMethodWithResponse":"SpecialWords.Operations.finally","specialwords.OperationsAsyncClient.forMethod":"SpecialWords.Operations.for","specialwords.OperationsAsyncClient.forMethodWithResponse":"SpecialWords.Operations.for","specialwords.OperationsAsyncClient.from":"SpecialWords.Operations.from","specialwords.OperationsAsyncClient.fromWithResponse":"SpecialWords.Operations.from","specialwords.OperationsAsyncClient.global":"SpecialWords.Operations.global","specialwords.OperationsAsyncClient.globalWithResponse":"SpecialWords.Operations.global","specialwords.OperationsAsyncClient.ifMethod":"SpecialWords.Operations.if","specialwords.OperationsAsyncClient.ifMethodWithResponse":"SpecialWords.Operations.if","specialwords.OperationsAsyncClient.importMethod":"SpecialWords.Operations.import","specialwords.OperationsAsyncClient.importMethodWithResponse":"SpecialWords.Operations.import","specialwords.OperationsAsyncClient.in":"SpecialWords.Operations.in","specialwords.OperationsAsyncClient.inWithResponse":"SpecialWords.Operations.in","specialwords.OperationsAsyncClient.is":"SpecialWords.Operations.is","specialwords.OperationsAsyncClient.isWithResponse":"SpecialWords.Operations.is","specialwords.OperationsAsyncClient.lambda":"SpecialWords.Operations.lambda","specialwords.OperationsAsyncClient.lambdaWithResponse":"SpecialWords.Operations.lambda","specialwords.OperationsAsyncClient.not":"SpecialWords.Operations.not","specialwords.OperationsAsyncClient.notWithResponse":"SpecialWords.Operations.not","specialwords.OperationsAsyncClient.or":"SpecialWords.Operations.or","specialwords.OperationsAsyncClient.orWithResponse":"SpecialWords.Operations.or","specialwords.OperationsAsyncClient.pass":"SpecialWords.Operations.pass","specialwords.OperationsAsyncClient.passWithResponse":"SpecialWords.Operations.pass","specialwords.OperationsAsyncClient.raise":"SpecialWords.Operations.raise","specialwords.OperationsAsyncClient.raiseWithResponse":"SpecialWords.Operations.raise","specialwords.OperationsAsyncClient.returnMethod":"SpecialWords.Operations.return","specialwords.OperationsAsyncClient.returnMethodWithResponse":"SpecialWords.Operations.return","specialwords.OperationsAsyncClient.tryMethod":"SpecialWords.Operations.try","specialwords.OperationsAsyncClient.tryMethodWithResponse":"SpecialWords.Operations.try","specialwords.OperationsAsyncClient.whileMethod":"SpecialWords.Operations.while","specialwords.OperationsAsyncClient.whileMethodWithResponse":"SpecialWords.Operations.while","specialwords.OperationsAsyncClient.with":"SpecialWords.Operations.with","specialwords.OperationsAsyncClient.withWithResponse":"SpecialWords.Operations.with","specialwords.OperationsAsyncClient.yield":"SpecialWords.Operations.yield","specialwords.OperationsAsyncClient.yieldWithResponse":"SpecialWords.Operations.yield","specialwords.OperationsClient":"SpecialWords.Operations","specialwords.OperationsClient.and":"SpecialWords.Operations.and","specialwords.OperationsClient.andWithResponse":"SpecialWords.Operations.and","specialwords.OperationsClient.as":"SpecialWords.Operations.as","specialwords.OperationsClient.asWithResponse":"SpecialWords.Operations.as","specialwords.OperationsClient.assertMethod":"SpecialWords.Operations.assert","specialwords.OperationsClient.assertMethodWithResponse":"SpecialWords.Operations.assert","specialwords.OperationsClient.async":"SpecialWords.Operations.async","specialwords.OperationsClient.asyncWithResponse":"SpecialWords.Operations.async","specialwords.OperationsClient.await":"SpecialWords.Operations.await","specialwords.OperationsClient.awaitWithResponse":"SpecialWords.Operations.await","specialwords.OperationsClient.breakMethod":"SpecialWords.Operations.break","specialwords.OperationsClient.breakMethodWithResponse":"SpecialWords.Operations.break","specialwords.OperationsClient.classMethod":"SpecialWords.Operations.class","specialwords.OperationsClient.classMethodWithResponse":"SpecialWords.Operations.class","specialwords.OperationsClient.constructor":"SpecialWords.Operations.constructor","specialwords.OperationsClient.constructorWithResponse":"SpecialWords.Operations.constructor","specialwords.OperationsClient.continueMethod":"SpecialWords.Operations.continue","specialwords.OperationsClient.continueMethodWithResponse":"SpecialWords.Operations.continue","specialwords.OperationsClient.def":"SpecialWords.Operations.def","specialwords.OperationsClient.defWithResponse":"SpecialWords.Operations.def","specialwords.OperationsClient.del":"SpecialWords.Operations.del","specialwords.OperationsClient.delWithResponse":"SpecialWords.Operations.del","specialwords.OperationsClient.elif":"SpecialWords.Operations.elif","specialwords.OperationsClient.elifWithResponse":"SpecialWords.Operations.elif","specialwords.OperationsClient.elseMethod":"SpecialWords.Operations.else","specialwords.OperationsClient.elseMethodWithResponse":"SpecialWords.Operations.else","specialwords.OperationsClient.except":"SpecialWords.Operations.except","specialwords.OperationsClient.exceptWithResponse":"SpecialWords.Operations.except","specialwords.OperationsClient.exec":"SpecialWords.Operations.exec","specialwords.OperationsClient.execWithResponse":"SpecialWords.Operations.exec","specialwords.OperationsClient.finallyMethod":"SpecialWords.Operations.finally","specialwords.OperationsClient.finallyMethodWithResponse":"SpecialWords.Operations.finally","specialwords.OperationsClient.forMethod":"SpecialWords.Operations.for","specialwords.OperationsClient.forMethodWithResponse":"SpecialWords.Operations.for","specialwords.OperationsClient.from":"SpecialWords.Operations.from","specialwords.OperationsClient.fromWithResponse":"SpecialWords.Operations.from","specialwords.OperationsClient.global":"SpecialWords.Operations.global","specialwords.OperationsClient.globalWithResponse":"SpecialWords.Operations.global","specialwords.OperationsClient.ifMethod":"SpecialWords.Operations.if","specialwords.OperationsClient.ifMethodWithResponse":"SpecialWords.Operations.if","specialwords.OperationsClient.importMethod":"SpecialWords.Operations.import","specialwords.OperationsClient.importMethodWithResponse":"SpecialWords.Operations.import","specialwords.OperationsClient.in":"SpecialWords.Operations.in","specialwords.OperationsClient.inWithResponse":"SpecialWords.Operations.in","specialwords.OperationsClient.is":"SpecialWords.Operations.is","specialwords.OperationsClient.isWithResponse":"SpecialWords.Operations.is","specialwords.OperationsClient.lambda":"SpecialWords.Operations.lambda","specialwords.OperationsClient.lambdaWithResponse":"SpecialWords.Operations.lambda","specialwords.OperationsClient.not":"SpecialWords.Operations.not","specialwords.OperationsClient.notWithResponse":"SpecialWords.Operations.not","specialwords.OperationsClient.or":"SpecialWords.Operations.or","specialwords.OperationsClient.orWithResponse":"SpecialWords.Operations.or","specialwords.OperationsClient.pass":"SpecialWords.Operations.pass","specialwords.OperationsClient.passWithResponse":"SpecialWords.Operations.pass","specialwords.OperationsClient.raise":"SpecialWords.Operations.raise","specialwords.OperationsClient.raiseWithResponse":"SpecialWords.Operations.raise","specialwords.OperationsClient.returnMethod":"SpecialWords.Operations.return","specialwords.OperationsClient.returnMethodWithResponse":"SpecialWords.Operations.return","specialwords.OperationsClient.tryMethod":"SpecialWords.Operations.try","specialwords.OperationsClient.tryMethodWithResponse":"SpecialWords.Operations.try","specialwords.OperationsClient.whileMethod":"SpecialWords.Operations.while","specialwords.OperationsClient.whileMethodWithResponse":"SpecialWords.Operations.while","specialwords.OperationsClient.with":"SpecialWords.Operations.with","specialwords.OperationsClient.withWithResponse":"SpecialWords.Operations.with","specialwords.OperationsClient.yield":"SpecialWords.Operations.yield","specialwords.OperationsClient.yieldWithResponse":"SpecialWords.Operations.yield","specialwords.ParametersAsyncClient":"SpecialWords.Parameters","specialwords.ParametersAsyncClient.withAnd":"SpecialWords.Parameters.withAnd","specialwords.ParametersAsyncClient.withAndWithResponse":"SpecialWords.Parameters.withAnd","specialwords.ParametersAsyncClient.withAs":"SpecialWords.Parameters.withAs","specialwords.ParametersAsyncClient.withAsWithResponse":"SpecialWords.Parameters.withAs","specialwords.ParametersAsyncClient.withAssert":"SpecialWords.Parameters.withAssert","specialwords.ParametersAsyncClient.withAssertWithResponse":"SpecialWords.Parameters.withAssert","specialwords.ParametersAsyncClient.withAsyncWithResponse":"SpecialWords.Parameters.withAsync","specialwords.ParametersAsyncClient.withAwait":"SpecialWords.Parameters.withAwait","specialwords.ParametersAsyncClient.withAwaitWithResponse":"SpecialWords.Parameters.withAwait","specialwords.ParametersAsyncClient.withBreak":"SpecialWords.Parameters.withBreak","specialwords.ParametersAsyncClient.withBreakWithResponse":"SpecialWords.Parameters.withBreak","specialwords.ParametersAsyncClient.withCancellationToken":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersAsyncClient.withCancellationTokenWithResponse":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersAsyncClient.withClass":"SpecialWords.Parameters.withClass","specialwords.ParametersAsyncClient.withClassWithResponse":"SpecialWords.Parameters.withClass","specialwords.ParametersAsyncClient.withConstructor":"SpecialWords.Parameters.withConstructor","specialwords.ParametersAsyncClient.withConstructorWithResponse":"SpecialWords.Parameters.withConstructor","specialwords.ParametersAsyncClient.withContinue":"SpecialWords.Parameters.withContinue","specialwords.ParametersAsyncClient.withContinueWithResponse":"SpecialWords.Parameters.withContinue","specialwords.ParametersAsyncClient.withDef":"SpecialWords.Parameters.withDef","specialwords.ParametersAsyncClient.withDefWithResponse":"SpecialWords.Parameters.withDef","specialwords.ParametersAsyncClient.withDel":"SpecialWords.Parameters.withDel","specialwords.ParametersAsyncClient.withDelWithResponse":"SpecialWords.Parameters.withDel","specialwords.ParametersAsyncClient.withElif":"SpecialWords.Parameters.withElif","specialwords.ParametersAsyncClient.withElifWithResponse":"SpecialWords.Parameters.withElif","specialwords.ParametersAsyncClient.withElse":"SpecialWords.Parameters.withElse","specialwords.ParametersAsyncClient.withElseWithResponse":"SpecialWords.Parameters.withElse","specialwords.ParametersAsyncClient.withExcept":"SpecialWords.Parameters.withExcept","specialwords.ParametersAsyncClient.withExceptWithResponse":"SpecialWords.Parameters.withExcept","specialwords.ParametersAsyncClient.withExec":"SpecialWords.Parameters.withExec","specialwords.ParametersAsyncClient.withExecWithResponse":"SpecialWords.Parameters.withExec","specialwords.ParametersAsyncClient.withFinally":"SpecialWords.Parameters.withFinally","specialwords.ParametersAsyncClient.withFinallyWithResponse":"SpecialWords.Parameters.withFinally","specialwords.ParametersAsyncClient.withFor":"SpecialWords.Parameters.withFor","specialwords.ParametersAsyncClient.withForWithResponse":"SpecialWords.Parameters.withFor","specialwords.ParametersAsyncClient.withFrom":"SpecialWords.Parameters.withFrom","specialwords.ParametersAsyncClient.withFromWithResponse":"SpecialWords.Parameters.withFrom","specialwords.ParametersAsyncClient.withGlobal":"SpecialWords.Parameters.withGlobal","specialwords.ParametersAsyncClient.withGlobalWithResponse":"SpecialWords.Parameters.withGlobal","specialwords.ParametersAsyncClient.withIf":"SpecialWords.Parameters.withIf","specialwords.ParametersAsyncClient.withIfWithResponse":"SpecialWords.Parameters.withIf","specialwords.ParametersAsyncClient.withImport":"SpecialWords.Parameters.withImport","specialwords.ParametersAsyncClient.withImportWithResponse":"SpecialWords.Parameters.withImport","specialwords.ParametersAsyncClient.withIn":"SpecialWords.Parameters.withIn","specialwords.ParametersAsyncClient.withInWithResponse":"SpecialWords.Parameters.withIn","specialwords.ParametersAsyncClient.withIs":"SpecialWords.Parameters.withIs","specialwords.ParametersAsyncClient.withIsWithResponse":"SpecialWords.Parameters.withIs","specialwords.ParametersAsyncClient.withLambda":"SpecialWords.Parameters.withLambda","specialwords.ParametersAsyncClient.withLambdaWithResponse":"SpecialWords.Parameters.withLambda","specialwords.ParametersAsyncClient.withNot":"SpecialWords.Parameters.withNot","specialwords.ParametersAsyncClient.withNotWithResponse":"SpecialWords.Parameters.withNot","specialwords.ParametersAsyncClient.withOr":"SpecialWords.Parameters.withOr","specialwords.ParametersAsyncClient.withOrWithResponse":"SpecialWords.Parameters.withOr","specialwords.ParametersAsyncClient.withPass":"SpecialWords.Parameters.withPass","specialwords.ParametersAsyncClient.withPassWithResponse":"SpecialWords.Parameters.withPass","specialwords.ParametersAsyncClient.withRaise":"SpecialWords.Parameters.withRaise","specialwords.ParametersAsyncClient.withRaiseWithResponse":"SpecialWords.Parameters.withRaise","specialwords.ParametersAsyncClient.withReturn":"SpecialWords.Parameters.withReturn","specialwords.ParametersAsyncClient.withReturnWithResponse":"SpecialWords.Parameters.withReturn","specialwords.ParametersAsyncClient.withTry":"SpecialWords.Parameters.withTry","specialwords.ParametersAsyncClient.withTryWithResponse":"SpecialWords.Parameters.withTry","specialwords.ParametersAsyncClient.withWhile":"SpecialWords.Parameters.withWhile","specialwords.ParametersAsyncClient.withWhileWithResponse":"SpecialWords.Parameters.withWhile","specialwords.ParametersAsyncClient.withWith":"SpecialWords.Parameters.withWith","specialwords.ParametersAsyncClient.withWithWithResponse":"SpecialWords.Parameters.withWith","specialwords.ParametersAsyncClient.withYield":"SpecialWords.Parameters.withYield","specialwords.ParametersAsyncClient.withYieldWithResponse":"SpecialWords.Parameters.withYield","specialwords.ParametersClient":"SpecialWords.Parameters","specialwords.ParametersClient.withAnd":"SpecialWords.Parameters.withAnd","specialwords.ParametersClient.withAndWithResponse":"SpecialWords.Parameters.withAnd","specialwords.ParametersClient.withAs":"SpecialWords.Parameters.withAs","specialwords.ParametersClient.withAsWithResponse":"SpecialWords.Parameters.withAs","specialwords.ParametersClient.withAssert":"SpecialWords.Parameters.withAssert","specialwords.ParametersClient.withAssertWithResponse":"SpecialWords.Parameters.withAssert","specialwords.ParametersClient.withAsyncWithResponse":"SpecialWords.Parameters.withAsync","specialwords.ParametersClient.withAwait":"SpecialWords.Parameters.withAwait","specialwords.ParametersClient.withAwaitWithResponse":"SpecialWords.Parameters.withAwait","specialwords.ParametersClient.withBreak":"SpecialWords.Parameters.withBreak","specialwords.ParametersClient.withBreakWithResponse":"SpecialWords.Parameters.withBreak","specialwords.ParametersClient.withCancellationToken":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersClient.withCancellationTokenWithResponse":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersClient.withClass":"SpecialWords.Parameters.withClass","specialwords.ParametersClient.withClassWithResponse":"SpecialWords.Parameters.withClass","specialwords.ParametersClient.withConstructor":"SpecialWords.Parameters.withConstructor","specialwords.ParametersClient.withConstructorWithResponse":"SpecialWords.Parameters.withConstructor","specialwords.ParametersClient.withContinue":"SpecialWords.Parameters.withContinue","specialwords.ParametersClient.withContinueWithResponse":"SpecialWords.Parameters.withContinue","specialwords.ParametersClient.withDef":"SpecialWords.Parameters.withDef","specialwords.ParametersClient.withDefWithResponse":"SpecialWords.Parameters.withDef","specialwords.ParametersClient.withDel":"SpecialWords.Parameters.withDel","specialwords.ParametersClient.withDelWithResponse":"SpecialWords.Parameters.withDel","specialwords.ParametersClient.withElif":"SpecialWords.Parameters.withElif","specialwords.ParametersClient.withElifWithResponse":"SpecialWords.Parameters.withElif","specialwords.ParametersClient.withElse":"SpecialWords.Parameters.withElse","specialwords.ParametersClient.withElseWithResponse":"SpecialWords.Parameters.withElse","specialwords.ParametersClient.withExcept":"SpecialWords.Parameters.withExcept","specialwords.ParametersClient.withExceptWithResponse":"SpecialWords.Parameters.withExcept","specialwords.ParametersClient.withExec":"SpecialWords.Parameters.withExec","specialwords.ParametersClient.withExecWithResponse":"SpecialWords.Parameters.withExec","specialwords.ParametersClient.withFinally":"SpecialWords.Parameters.withFinally","specialwords.ParametersClient.withFinallyWithResponse":"SpecialWords.Parameters.withFinally","specialwords.ParametersClient.withFor":"SpecialWords.Parameters.withFor","specialwords.ParametersClient.withForWithResponse":"SpecialWords.Parameters.withFor","specialwords.ParametersClient.withFrom":"SpecialWords.Parameters.withFrom","specialwords.ParametersClient.withFromWithResponse":"SpecialWords.Parameters.withFrom","specialwords.ParametersClient.withGlobal":"SpecialWords.Parameters.withGlobal","specialwords.ParametersClient.withGlobalWithResponse":"SpecialWords.Parameters.withGlobal","specialwords.ParametersClient.withIf":"SpecialWords.Parameters.withIf","specialwords.ParametersClient.withIfWithResponse":"SpecialWords.Parameters.withIf","specialwords.ParametersClient.withImport":"SpecialWords.Parameters.withImport","specialwords.ParametersClient.withImportWithResponse":"SpecialWords.Parameters.withImport","specialwords.ParametersClient.withIn":"SpecialWords.Parameters.withIn","specialwords.ParametersClient.withInWithResponse":"SpecialWords.Parameters.withIn","specialwords.ParametersClient.withIs":"SpecialWords.Parameters.withIs","specialwords.ParametersClient.withIsWithResponse":"SpecialWords.Parameters.withIs","specialwords.ParametersClient.withLambda":"SpecialWords.Parameters.withLambda","specialwords.ParametersClient.withLambdaWithResponse":"SpecialWords.Parameters.withLambda","specialwords.ParametersClient.withNot":"SpecialWords.Parameters.withNot","specialwords.ParametersClient.withNotWithResponse":"SpecialWords.Parameters.withNot","specialwords.ParametersClient.withOr":"SpecialWords.Parameters.withOr","specialwords.ParametersClient.withOrWithResponse":"SpecialWords.Parameters.withOr","specialwords.ParametersClient.withPass":"SpecialWords.Parameters.withPass","specialwords.ParametersClient.withPassWithResponse":"SpecialWords.Parameters.withPass","specialwords.ParametersClient.withRaise":"SpecialWords.Parameters.withRaise","specialwords.ParametersClient.withRaiseWithResponse":"SpecialWords.Parameters.withRaise","specialwords.ParametersClient.withReturn":"SpecialWords.Parameters.withReturn","specialwords.ParametersClient.withReturnWithResponse":"SpecialWords.Parameters.withReturn","specialwords.ParametersClient.withTry":"SpecialWords.Parameters.withTry","specialwords.ParametersClient.withTryWithResponse":"SpecialWords.Parameters.withTry","specialwords.ParametersClient.withWhile":"SpecialWords.Parameters.withWhile","specialwords.ParametersClient.withWhileWithResponse":"SpecialWords.Parameters.withWhile","specialwords.ParametersClient.withWith":"SpecialWords.Parameters.withWith","specialwords.ParametersClient.withWithWithResponse":"SpecialWords.Parameters.withWith","specialwords.ParametersClient.withYield":"SpecialWords.Parameters.withYield","specialwords.ParametersClient.withYieldWithResponse":"SpecialWords.Parameters.withYield","specialwords.SpecialWordsClientBuilder":"SpecialWords","specialwords.modelproperties.models.DictMethods":"SpecialWords.ModelProperties.DictMethods","specialwords.modelproperties.models.ModelWithList":"SpecialWords.ModelProperties.ModelWithList","specialwords.modelproperties.models.SameAsModel":"SpecialWords.ModelProperties.SameAsModel","specialwords.models.models.And":"SpecialWords.Models.and","specialwords.models.models.As":"SpecialWords.Models.as","specialwords.models.models.Assert":"SpecialWords.Models.assert","specialwords.models.models.Async":"SpecialWords.Models.async","specialwords.models.models.Await":"SpecialWords.Models.await","specialwords.models.models.Break":"SpecialWords.Models.break","specialwords.models.models.ClassModel":"SpecialWords.Models.class","specialwords.models.models.Constructor":"SpecialWords.Models.constructor","specialwords.models.models.Continue":"SpecialWords.Models.continue","specialwords.models.models.Def":"SpecialWords.Models.def","specialwords.models.models.Del":"SpecialWords.Models.del","specialwords.models.models.Elif":"SpecialWords.Models.elif","specialwords.models.models.Else":"SpecialWords.Models.else","specialwords.models.models.Except":"SpecialWords.Models.except","specialwords.models.models.Exec":"SpecialWords.Models.exec","specialwords.models.models.Finally":"SpecialWords.Models.finally","specialwords.models.models.For":"SpecialWords.Models.for","specialwords.models.models.From":"SpecialWords.Models.from","specialwords.models.models.Global":"SpecialWords.Models.global","specialwords.models.models.If":"SpecialWords.Models.if","specialwords.models.models.Import":"SpecialWords.Models.import","specialwords.models.models.In":"SpecialWords.Models.in","specialwords.models.models.Is":"SpecialWords.Models.is","specialwords.models.models.Lambda":"SpecialWords.Models.lambda","specialwords.models.models.Not":"SpecialWords.Models.not","specialwords.models.models.Or":"SpecialWords.Models.or","specialwords.models.models.Pass":"SpecialWords.Models.pass","specialwords.models.models.Raise":"SpecialWords.Models.raise","specialwords.models.models.Return":"SpecialWords.Models.return","specialwords.models.models.Try":"SpecialWords.Models.try","specialwords.models.models.While":"SpecialWords.Models.while","specialwords.models.models.With":"SpecialWords.Models.with","specialwords.models.models.Yield":"SpecialWords.Models.yield"},"generatedFiles":["src/main/java/module-info.java","src/main/java/specialwords/ModelPropertiesAsyncClient.java","src/main/java/specialwords/ModelPropertiesClient.java","src/main/java/specialwords/ModelsAsyncClient.java","src/main/java/specialwords/ModelsClient.java","src/main/java/specialwords/OperationsAsyncClient.java","src/main/java/specialwords/OperationsClient.java","src/main/java/specialwords/ParametersAsyncClient.java","src/main/java/specialwords/ParametersClient.java","src/main/java/specialwords/SpecialWordsClientBuilder.java","src/main/java/specialwords/implementation/ModelPropertiesImpl.java","src/main/java/specialwords/implementation/ModelsImpl.java","src/main/java/specialwords/implementation/OperationsImpl.java","src/main/java/specialwords/implementation/ParametersImpl.java","src/main/java/specialwords/implementation/SpecialWordsClientImpl.java","src/main/java/specialwords/implementation/package-info.java","src/main/java/specialwords/modelproperties/models/DictMethods.java","src/main/java/specialwords/modelproperties/models/ModelWithList.java","src/main/java/specialwords/modelproperties/models/SameAsModel.java","src/main/java/specialwords/modelproperties/models/package-info.java","src/main/java/specialwords/models/models/And.java","src/main/java/specialwords/models/models/As.java","src/main/java/specialwords/models/models/Assert.java","src/main/java/specialwords/models/models/Async.java","src/main/java/specialwords/models/models/Await.java","src/main/java/specialwords/models/models/Break.java","src/main/java/specialwords/models/models/ClassModel.java","src/main/java/specialwords/models/models/Constructor.java","src/main/java/specialwords/models/models/Continue.java","src/main/java/specialwords/models/models/Def.java","src/main/java/specialwords/models/models/Del.java","src/main/java/specialwords/models/models/Elif.java","src/main/java/specialwords/models/models/Else.java","src/main/java/specialwords/models/models/Except.java","src/main/java/specialwords/models/models/Exec.java","src/main/java/specialwords/models/models/Finally.java","src/main/java/specialwords/models/models/For.java","src/main/java/specialwords/models/models/From.java","src/main/java/specialwords/models/models/Global.java","src/main/java/specialwords/models/models/If.java","src/main/java/specialwords/models/models/Import.java","src/main/java/specialwords/models/models/In.java","src/main/java/specialwords/models/models/Is.java","src/main/java/specialwords/models/models/Lambda.java","src/main/java/specialwords/models/models/Not.java","src/main/java/specialwords/models/models/Or.java","src/main/java/specialwords/models/models/Pass.java","src/main/java/specialwords/models/models/Raise.java","src/main/java/specialwords/models/models/Return.java","src/main/java/specialwords/models/models/Try.java","src/main/java/specialwords/models/models/While.java","src/main/java/specialwords/models/models/With.java","src/main/java/specialwords/models/models/Yield.java","src/main/java/specialwords/models/models/package-info.java","src/main/java/specialwords/package-info.java"]} \ No newline at end of file +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"specialwords.ExtensibleStringsAsyncClient":"SpecialWords.ExtensibleStrings","specialwords.ExtensibleStringsAsyncClient.putExtensibleStringValue":"SpecialWords.ExtensibleStrings.putExtensibleStringValue","specialwords.ExtensibleStringsAsyncClient.putExtensibleStringValueWithResponse":"SpecialWords.ExtensibleStrings.putExtensibleStringValue","specialwords.ExtensibleStringsClient":"SpecialWords.ExtensibleStrings","specialwords.ExtensibleStringsClient.putExtensibleStringValue":"SpecialWords.ExtensibleStrings.putExtensibleStringValue","specialwords.ExtensibleStringsClient.putExtensibleStringValueWithResponse":"SpecialWords.ExtensibleStrings.putExtensibleStringValue","specialwords.ModelPropertiesAsyncClient":"SpecialWords.ModelProperties","specialwords.ModelPropertiesAsyncClient.dictMethods":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesAsyncClient.dictMethodsWithResponse":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesAsyncClient.sameAsModel":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesAsyncClient.sameAsModelWithResponse":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesAsyncClient.withList":"SpecialWords.ModelProperties.withList","specialwords.ModelPropertiesAsyncClient.withListWithResponse":"SpecialWords.ModelProperties.withList","specialwords.ModelPropertiesClient":"SpecialWords.ModelProperties","specialwords.ModelPropertiesClient.dictMethods":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesClient.dictMethodsWithResponse":"SpecialWords.ModelProperties.dictMethods","specialwords.ModelPropertiesClient.sameAsModel":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesClient.sameAsModelWithResponse":"SpecialWords.ModelProperties.sameAsModel","specialwords.ModelPropertiesClient.withList":"SpecialWords.ModelProperties.withList","specialwords.ModelPropertiesClient.withListWithResponse":"SpecialWords.ModelProperties.withList","specialwords.ModelsAsyncClient":"SpecialWords.Models","specialwords.ModelsAsyncClient.withAnd":"SpecialWords.Models.withAnd","specialwords.ModelsAsyncClient.withAndWithResponse":"SpecialWords.Models.withAnd","specialwords.ModelsAsyncClient.withAs":"SpecialWords.Models.withAs","specialwords.ModelsAsyncClient.withAsWithResponse":"SpecialWords.Models.withAs","specialwords.ModelsAsyncClient.withAssert":"SpecialWords.Models.withAssert","specialwords.ModelsAsyncClient.withAssertWithResponse":"SpecialWords.Models.withAssert","specialwords.ModelsAsyncClient.withAsyncWithResponse":"SpecialWords.Models.withAsync","specialwords.ModelsAsyncClient.withAwait":"SpecialWords.Models.withAwait","specialwords.ModelsAsyncClient.withAwaitWithResponse":"SpecialWords.Models.withAwait","specialwords.ModelsAsyncClient.withBreak":"SpecialWords.Models.withBreak","specialwords.ModelsAsyncClient.withBreakWithResponse":"SpecialWords.Models.withBreak","specialwords.ModelsAsyncClient.withClass":"SpecialWords.Models.withClass","specialwords.ModelsAsyncClient.withClassWithResponse":"SpecialWords.Models.withClass","specialwords.ModelsAsyncClient.withConstructor":"SpecialWords.Models.withConstructor","specialwords.ModelsAsyncClient.withConstructorWithResponse":"SpecialWords.Models.withConstructor","specialwords.ModelsAsyncClient.withContinue":"SpecialWords.Models.withContinue","specialwords.ModelsAsyncClient.withContinueWithResponse":"SpecialWords.Models.withContinue","specialwords.ModelsAsyncClient.withDef":"SpecialWords.Models.withDef","specialwords.ModelsAsyncClient.withDefWithResponse":"SpecialWords.Models.withDef","specialwords.ModelsAsyncClient.withDel":"SpecialWords.Models.withDel","specialwords.ModelsAsyncClient.withDelWithResponse":"SpecialWords.Models.withDel","specialwords.ModelsAsyncClient.withElif":"SpecialWords.Models.withElif","specialwords.ModelsAsyncClient.withElifWithResponse":"SpecialWords.Models.withElif","specialwords.ModelsAsyncClient.withElse":"SpecialWords.Models.withElse","specialwords.ModelsAsyncClient.withElseWithResponse":"SpecialWords.Models.withElse","specialwords.ModelsAsyncClient.withExcept":"SpecialWords.Models.withExcept","specialwords.ModelsAsyncClient.withExceptWithResponse":"SpecialWords.Models.withExcept","specialwords.ModelsAsyncClient.withExec":"SpecialWords.Models.withExec","specialwords.ModelsAsyncClient.withExecWithResponse":"SpecialWords.Models.withExec","specialwords.ModelsAsyncClient.withFinally":"SpecialWords.Models.withFinally","specialwords.ModelsAsyncClient.withFinallyWithResponse":"SpecialWords.Models.withFinally","specialwords.ModelsAsyncClient.withFor":"SpecialWords.Models.withFor","specialwords.ModelsAsyncClient.withForWithResponse":"SpecialWords.Models.withFor","specialwords.ModelsAsyncClient.withFrom":"SpecialWords.Models.withFrom","specialwords.ModelsAsyncClient.withFromWithResponse":"SpecialWords.Models.withFrom","specialwords.ModelsAsyncClient.withGlobal":"SpecialWords.Models.withGlobal","specialwords.ModelsAsyncClient.withGlobalWithResponse":"SpecialWords.Models.withGlobal","specialwords.ModelsAsyncClient.withIf":"SpecialWords.Models.withIf","specialwords.ModelsAsyncClient.withIfWithResponse":"SpecialWords.Models.withIf","specialwords.ModelsAsyncClient.withImport":"SpecialWords.Models.withImport","specialwords.ModelsAsyncClient.withImportWithResponse":"SpecialWords.Models.withImport","specialwords.ModelsAsyncClient.withIn":"SpecialWords.Models.withIn","specialwords.ModelsAsyncClient.withInWithResponse":"SpecialWords.Models.withIn","specialwords.ModelsAsyncClient.withIs":"SpecialWords.Models.withIs","specialwords.ModelsAsyncClient.withIsWithResponse":"SpecialWords.Models.withIs","specialwords.ModelsAsyncClient.withLambda":"SpecialWords.Models.withLambda","specialwords.ModelsAsyncClient.withLambdaWithResponse":"SpecialWords.Models.withLambda","specialwords.ModelsAsyncClient.withNot":"SpecialWords.Models.withNot","specialwords.ModelsAsyncClient.withNotWithResponse":"SpecialWords.Models.withNot","specialwords.ModelsAsyncClient.withOr":"SpecialWords.Models.withOr","specialwords.ModelsAsyncClient.withOrWithResponse":"SpecialWords.Models.withOr","specialwords.ModelsAsyncClient.withPass":"SpecialWords.Models.withPass","specialwords.ModelsAsyncClient.withPassWithResponse":"SpecialWords.Models.withPass","specialwords.ModelsAsyncClient.withRaise":"SpecialWords.Models.withRaise","specialwords.ModelsAsyncClient.withRaiseWithResponse":"SpecialWords.Models.withRaise","specialwords.ModelsAsyncClient.withReturn":"SpecialWords.Models.withReturn","specialwords.ModelsAsyncClient.withReturnWithResponse":"SpecialWords.Models.withReturn","specialwords.ModelsAsyncClient.withTry":"SpecialWords.Models.withTry","specialwords.ModelsAsyncClient.withTryWithResponse":"SpecialWords.Models.withTry","specialwords.ModelsAsyncClient.withWhile":"SpecialWords.Models.withWhile","specialwords.ModelsAsyncClient.withWhileWithResponse":"SpecialWords.Models.withWhile","specialwords.ModelsAsyncClient.withWith":"SpecialWords.Models.withWith","specialwords.ModelsAsyncClient.withWithWithResponse":"SpecialWords.Models.withWith","specialwords.ModelsAsyncClient.withYield":"SpecialWords.Models.withYield","specialwords.ModelsAsyncClient.withYieldWithResponse":"SpecialWords.Models.withYield","specialwords.ModelsClient":"SpecialWords.Models","specialwords.ModelsClient.withAnd":"SpecialWords.Models.withAnd","specialwords.ModelsClient.withAndWithResponse":"SpecialWords.Models.withAnd","specialwords.ModelsClient.withAs":"SpecialWords.Models.withAs","specialwords.ModelsClient.withAsWithResponse":"SpecialWords.Models.withAs","specialwords.ModelsClient.withAssert":"SpecialWords.Models.withAssert","specialwords.ModelsClient.withAssertWithResponse":"SpecialWords.Models.withAssert","specialwords.ModelsClient.withAsyncWithResponse":"SpecialWords.Models.withAsync","specialwords.ModelsClient.withAwait":"SpecialWords.Models.withAwait","specialwords.ModelsClient.withAwaitWithResponse":"SpecialWords.Models.withAwait","specialwords.ModelsClient.withBreak":"SpecialWords.Models.withBreak","specialwords.ModelsClient.withBreakWithResponse":"SpecialWords.Models.withBreak","specialwords.ModelsClient.withClass":"SpecialWords.Models.withClass","specialwords.ModelsClient.withClassWithResponse":"SpecialWords.Models.withClass","specialwords.ModelsClient.withConstructor":"SpecialWords.Models.withConstructor","specialwords.ModelsClient.withConstructorWithResponse":"SpecialWords.Models.withConstructor","specialwords.ModelsClient.withContinue":"SpecialWords.Models.withContinue","specialwords.ModelsClient.withContinueWithResponse":"SpecialWords.Models.withContinue","specialwords.ModelsClient.withDef":"SpecialWords.Models.withDef","specialwords.ModelsClient.withDefWithResponse":"SpecialWords.Models.withDef","specialwords.ModelsClient.withDel":"SpecialWords.Models.withDel","specialwords.ModelsClient.withDelWithResponse":"SpecialWords.Models.withDel","specialwords.ModelsClient.withElif":"SpecialWords.Models.withElif","specialwords.ModelsClient.withElifWithResponse":"SpecialWords.Models.withElif","specialwords.ModelsClient.withElse":"SpecialWords.Models.withElse","specialwords.ModelsClient.withElseWithResponse":"SpecialWords.Models.withElse","specialwords.ModelsClient.withExcept":"SpecialWords.Models.withExcept","specialwords.ModelsClient.withExceptWithResponse":"SpecialWords.Models.withExcept","specialwords.ModelsClient.withExec":"SpecialWords.Models.withExec","specialwords.ModelsClient.withExecWithResponse":"SpecialWords.Models.withExec","specialwords.ModelsClient.withFinally":"SpecialWords.Models.withFinally","specialwords.ModelsClient.withFinallyWithResponse":"SpecialWords.Models.withFinally","specialwords.ModelsClient.withFor":"SpecialWords.Models.withFor","specialwords.ModelsClient.withForWithResponse":"SpecialWords.Models.withFor","specialwords.ModelsClient.withFrom":"SpecialWords.Models.withFrom","specialwords.ModelsClient.withFromWithResponse":"SpecialWords.Models.withFrom","specialwords.ModelsClient.withGlobal":"SpecialWords.Models.withGlobal","specialwords.ModelsClient.withGlobalWithResponse":"SpecialWords.Models.withGlobal","specialwords.ModelsClient.withIf":"SpecialWords.Models.withIf","specialwords.ModelsClient.withIfWithResponse":"SpecialWords.Models.withIf","specialwords.ModelsClient.withImport":"SpecialWords.Models.withImport","specialwords.ModelsClient.withImportWithResponse":"SpecialWords.Models.withImport","specialwords.ModelsClient.withIn":"SpecialWords.Models.withIn","specialwords.ModelsClient.withInWithResponse":"SpecialWords.Models.withIn","specialwords.ModelsClient.withIs":"SpecialWords.Models.withIs","specialwords.ModelsClient.withIsWithResponse":"SpecialWords.Models.withIs","specialwords.ModelsClient.withLambda":"SpecialWords.Models.withLambda","specialwords.ModelsClient.withLambdaWithResponse":"SpecialWords.Models.withLambda","specialwords.ModelsClient.withNot":"SpecialWords.Models.withNot","specialwords.ModelsClient.withNotWithResponse":"SpecialWords.Models.withNot","specialwords.ModelsClient.withOr":"SpecialWords.Models.withOr","specialwords.ModelsClient.withOrWithResponse":"SpecialWords.Models.withOr","specialwords.ModelsClient.withPass":"SpecialWords.Models.withPass","specialwords.ModelsClient.withPassWithResponse":"SpecialWords.Models.withPass","specialwords.ModelsClient.withRaise":"SpecialWords.Models.withRaise","specialwords.ModelsClient.withRaiseWithResponse":"SpecialWords.Models.withRaise","specialwords.ModelsClient.withReturn":"SpecialWords.Models.withReturn","specialwords.ModelsClient.withReturnWithResponse":"SpecialWords.Models.withReturn","specialwords.ModelsClient.withTry":"SpecialWords.Models.withTry","specialwords.ModelsClient.withTryWithResponse":"SpecialWords.Models.withTry","specialwords.ModelsClient.withWhile":"SpecialWords.Models.withWhile","specialwords.ModelsClient.withWhileWithResponse":"SpecialWords.Models.withWhile","specialwords.ModelsClient.withWith":"SpecialWords.Models.withWith","specialwords.ModelsClient.withWithWithResponse":"SpecialWords.Models.withWith","specialwords.ModelsClient.withYield":"SpecialWords.Models.withYield","specialwords.ModelsClient.withYieldWithResponse":"SpecialWords.Models.withYield","specialwords.OperationsAsyncClient":"SpecialWords.Operations","specialwords.OperationsAsyncClient.and":"SpecialWords.Operations.and","specialwords.OperationsAsyncClient.andWithResponse":"SpecialWords.Operations.and","specialwords.OperationsAsyncClient.as":"SpecialWords.Operations.as","specialwords.OperationsAsyncClient.asWithResponse":"SpecialWords.Operations.as","specialwords.OperationsAsyncClient.assertMethod":"SpecialWords.Operations.assert","specialwords.OperationsAsyncClient.assertMethodWithResponse":"SpecialWords.Operations.assert","specialwords.OperationsAsyncClient.async":"SpecialWords.Operations.async","specialwords.OperationsAsyncClient.asyncWithResponse":"SpecialWords.Operations.async","specialwords.OperationsAsyncClient.await":"SpecialWords.Operations.await","specialwords.OperationsAsyncClient.awaitWithResponse":"SpecialWords.Operations.await","specialwords.OperationsAsyncClient.breakMethod":"SpecialWords.Operations.break","specialwords.OperationsAsyncClient.breakMethodWithResponse":"SpecialWords.Operations.break","specialwords.OperationsAsyncClient.classMethod":"SpecialWords.Operations.class","specialwords.OperationsAsyncClient.classMethodWithResponse":"SpecialWords.Operations.class","specialwords.OperationsAsyncClient.constructor":"SpecialWords.Operations.constructor","specialwords.OperationsAsyncClient.constructorWithResponse":"SpecialWords.Operations.constructor","specialwords.OperationsAsyncClient.continueMethod":"SpecialWords.Operations.continue","specialwords.OperationsAsyncClient.continueMethodWithResponse":"SpecialWords.Operations.continue","specialwords.OperationsAsyncClient.def":"SpecialWords.Operations.def","specialwords.OperationsAsyncClient.defWithResponse":"SpecialWords.Operations.def","specialwords.OperationsAsyncClient.del":"SpecialWords.Operations.del","specialwords.OperationsAsyncClient.delWithResponse":"SpecialWords.Operations.del","specialwords.OperationsAsyncClient.elif":"SpecialWords.Operations.elif","specialwords.OperationsAsyncClient.elifWithResponse":"SpecialWords.Operations.elif","specialwords.OperationsAsyncClient.elseMethod":"SpecialWords.Operations.else","specialwords.OperationsAsyncClient.elseMethodWithResponse":"SpecialWords.Operations.else","specialwords.OperationsAsyncClient.except":"SpecialWords.Operations.except","specialwords.OperationsAsyncClient.exceptWithResponse":"SpecialWords.Operations.except","specialwords.OperationsAsyncClient.exec":"SpecialWords.Operations.exec","specialwords.OperationsAsyncClient.execWithResponse":"SpecialWords.Operations.exec","specialwords.OperationsAsyncClient.finallyMethod":"SpecialWords.Operations.finally","specialwords.OperationsAsyncClient.finallyMethodWithResponse":"SpecialWords.Operations.finally","specialwords.OperationsAsyncClient.forMethod":"SpecialWords.Operations.for","specialwords.OperationsAsyncClient.forMethodWithResponse":"SpecialWords.Operations.for","specialwords.OperationsAsyncClient.from":"SpecialWords.Operations.from","specialwords.OperationsAsyncClient.fromWithResponse":"SpecialWords.Operations.from","specialwords.OperationsAsyncClient.global":"SpecialWords.Operations.global","specialwords.OperationsAsyncClient.globalWithResponse":"SpecialWords.Operations.global","specialwords.OperationsAsyncClient.ifMethod":"SpecialWords.Operations.if","specialwords.OperationsAsyncClient.ifMethodWithResponse":"SpecialWords.Operations.if","specialwords.OperationsAsyncClient.importMethod":"SpecialWords.Operations.import","specialwords.OperationsAsyncClient.importMethodWithResponse":"SpecialWords.Operations.import","specialwords.OperationsAsyncClient.in":"SpecialWords.Operations.in","specialwords.OperationsAsyncClient.inWithResponse":"SpecialWords.Operations.in","specialwords.OperationsAsyncClient.is":"SpecialWords.Operations.is","specialwords.OperationsAsyncClient.isWithResponse":"SpecialWords.Operations.is","specialwords.OperationsAsyncClient.lambda":"SpecialWords.Operations.lambda","specialwords.OperationsAsyncClient.lambdaWithResponse":"SpecialWords.Operations.lambda","specialwords.OperationsAsyncClient.not":"SpecialWords.Operations.not","specialwords.OperationsAsyncClient.notWithResponse":"SpecialWords.Operations.not","specialwords.OperationsAsyncClient.or":"SpecialWords.Operations.or","specialwords.OperationsAsyncClient.orWithResponse":"SpecialWords.Operations.or","specialwords.OperationsAsyncClient.pass":"SpecialWords.Operations.pass","specialwords.OperationsAsyncClient.passWithResponse":"SpecialWords.Operations.pass","specialwords.OperationsAsyncClient.raise":"SpecialWords.Operations.raise","specialwords.OperationsAsyncClient.raiseWithResponse":"SpecialWords.Operations.raise","specialwords.OperationsAsyncClient.returnMethod":"SpecialWords.Operations.return","specialwords.OperationsAsyncClient.returnMethodWithResponse":"SpecialWords.Operations.return","specialwords.OperationsAsyncClient.tryMethod":"SpecialWords.Operations.try","specialwords.OperationsAsyncClient.tryMethodWithResponse":"SpecialWords.Operations.try","specialwords.OperationsAsyncClient.whileMethod":"SpecialWords.Operations.while","specialwords.OperationsAsyncClient.whileMethodWithResponse":"SpecialWords.Operations.while","specialwords.OperationsAsyncClient.with":"SpecialWords.Operations.with","specialwords.OperationsAsyncClient.withWithResponse":"SpecialWords.Operations.with","specialwords.OperationsAsyncClient.yield":"SpecialWords.Operations.yield","specialwords.OperationsAsyncClient.yieldWithResponse":"SpecialWords.Operations.yield","specialwords.OperationsClient":"SpecialWords.Operations","specialwords.OperationsClient.and":"SpecialWords.Operations.and","specialwords.OperationsClient.andWithResponse":"SpecialWords.Operations.and","specialwords.OperationsClient.as":"SpecialWords.Operations.as","specialwords.OperationsClient.asWithResponse":"SpecialWords.Operations.as","specialwords.OperationsClient.assertMethod":"SpecialWords.Operations.assert","specialwords.OperationsClient.assertMethodWithResponse":"SpecialWords.Operations.assert","specialwords.OperationsClient.async":"SpecialWords.Operations.async","specialwords.OperationsClient.asyncWithResponse":"SpecialWords.Operations.async","specialwords.OperationsClient.await":"SpecialWords.Operations.await","specialwords.OperationsClient.awaitWithResponse":"SpecialWords.Operations.await","specialwords.OperationsClient.breakMethod":"SpecialWords.Operations.break","specialwords.OperationsClient.breakMethodWithResponse":"SpecialWords.Operations.break","specialwords.OperationsClient.classMethod":"SpecialWords.Operations.class","specialwords.OperationsClient.classMethodWithResponse":"SpecialWords.Operations.class","specialwords.OperationsClient.constructor":"SpecialWords.Operations.constructor","specialwords.OperationsClient.constructorWithResponse":"SpecialWords.Operations.constructor","specialwords.OperationsClient.continueMethod":"SpecialWords.Operations.continue","specialwords.OperationsClient.continueMethodWithResponse":"SpecialWords.Operations.continue","specialwords.OperationsClient.def":"SpecialWords.Operations.def","specialwords.OperationsClient.defWithResponse":"SpecialWords.Operations.def","specialwords.OperationsClient.del":"SpecialWords.Operations.del","specialwords.OperationsClient.delWithResponse":"SpecialWords.Operations.del","specialwords.OperationsClient.elif":"SpecialWords.Operations.elif","specialwords.OperationsClient.elifWithResponse":"SpecialWords.Operations.elif","specialwords.OperationsClient.elseMethod":"SpecialWords.Operations.else","specialwords.OperationsClient.elseMethodWithResponse":"SpecialWords.Operations.else","specialwords.OperationsClient.except":"SpecialWords.Operations.except","specialwords.OperationsClient.exceptWithResponse":"SpecialWords.Operations.except","specialwords.OperationsClient.exec":"SpecialWords.Operations.exec","specialwords.OperationsClient.execWithResponse":"SpecialWords.Operations.exec","specialwords.OperationsClient.finallyMethod":"SpecialWords.Operations.finally","specialwords.OperationsClient.finallyMethodWithResponse":"SpecialWords.Operations.finally","specialwords.OperationsClient.forMethod":"SpecialWords.Operations.for","specialwords.OperationsClient.forMethodWithResponse":"SpecialWords.Operations.for","specialwords.OperationsClient.from":"SpecialWords.Operations.from","specialwords.OperationsClient.fromWithResponse":"SpecialWords.Operations.from","specialwords.OperationsClient.global":"SpecialWords.Operations.global","specialwords.OperationsClient.globalWithResponse":"SpecialWords.Operations.global","specialwords.OperationsClient.ifMethod":"SpecialWords.Operations.if","specialwords.OperationsClient.ifMethodWithResponse":"SpecialWords.Operations.if","specialwords.OperationsClient.importMethod":"SpecialWords.Operations.import","specialwords.OperationsClient.importMethodWithResponse":"SpecialWords.Operations.import","specialwords.OperationsClient.in":"SpecialWords.Operations.in","specialwords.OperationsClient.inWithResponse":"SpecialWords.Operations.in","specialwords.OperationsClient.is":"SpecialWords.Operations.is","specialwords.OperationsClient.isWithResponse":"SpecialWords.Operations.is","specialwords.OperationsClient.lambda":"SpecialWords.Operations.lambda","specialwords.OperationsClient.lambdaWithResponse":"SpecialWords.Operations.lambda","specialwords.OperationsClient.not":"SpecialWords.Operations.not","specialwords.OperationsClient.notWithResponse":"SpecialWords.Operations.not","specialwords.OperationsClient.or":"SpecialWords.Operations.or","specialwords.OperationsClient.orWithResponse":"SpecialWords.Operations.or","specialwords.OperationsClient.pass":"SpecialWords.Operations.pass","specialwords.OperationsClient.passWithResponse":"SpecialWords.Operations.pass","specialwords.OperationsClient.raise":"SpecialWords.Operations.raise","specialwords.OperationsClient.raiseWithResponse":"SpecialWords.Operations.raise","specialwords.OperationsClient.returnMethod":"SpecialWords.Operations.return","specialwords.OperationsClient.returnMethodWithResponse":"SpecialWords.Operations.return","specialwords.OperationsClient.tryMethod":"SpecialWords.Operations.try","specialwords.OperationsClient.tryMethodWithResponse":"SpecialWords.Operations.try","specialwords.OperationsClient.whileMethod":"SpecialWords.Operations.while","specialwords.OperationsClient.whileMethodWithResponse":"SpecialWords.Operations.while","specialwords.OperationsClient.with":"SpecialWords.Operations.with","specialwords.OperationsClient.withWithResponse":"SpecialWords.Operations.with","specialwords.OperationsClient.yield":"SpecialWords.Operations.yield","specialwords.OperationsClient.yieldWithResponse":"SpecialWords.Operations.yield","specialwords.ParametersAsyncClient":"SpecialWords.Parameters","specialwords.ParametersAsyncClient.withAnd":"SpecialWords.Parameters.withAnd","specialwords.ParametersAsyncClient.withAndWithResponse":"SpecialWords.Parameters.withAnd","specialwords.ParametersAsyncClient.withAs":"SpecialWords.Parameters.withAs","specialwords.ParametersAsyncClient.withAsWithResponse":"SpecialWords.Parameters.withAs","specialwords.ParametersAsyncClient.withAssert":"SpecialWords.Parameters.withAssert","specialwords.ParametersAsyncClient.withAssertWithResponse":"SpecialWords.Parameters.withAssert","specialwords.ParametersAsyncClient.withAsyncWithResponse":"SpecialWords.Parameters.withAsync","specialwords.ParametersAsyncClient.withAwait":"SpecialWords.Parameters.withAwait","specialwords.ParametersAsyncClient.withAwaitWithResponse":"SpecialWords.Parameters.withAwait","specialwords.ParametersAsyncClient.withBreak":"SpecialWords.Parameters.withBreak","specialwords.ParametersAsyncClient.withBreakWithResponse":"SpecialWords.Parameters.withBreak","specialwords.ParametersAsyncClient.withCancellationToken":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersAsyncClient.withCancellationTokenWithResponse":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersAsyncClient.withClass":"SpecialWords.Parameters.withClass","specialwords.ParametersAsyncClient.withClassWithResponse":"SpecialWords.Parameters.withClass","specialwords.ParametersAsyncClient.withConstructor":"SpecialWords.Parameters.withConstructor","specialwords.ParametersAsyncClient.withConstructorWithResponse":"SpecialWords.Parameters.withConstructor","specialwords.ParametersAsyncClient.withContinue":"SpecialWords.Parameters.withContinue","specialwords.ParametersAsyncClient.withContinueWithResponse":"SpecialWords.Parameters.withContinue","specialwords.ParametersAsyncClient.withDef":"SpecialWords.Parameters.withDef","specialwords.ParametersAsyncClient.withDefWithResponse":"SpecialWords.Parameters.withDef","specialwords.ParametersAsyncClient.withDel":"SpecialWords.Parameters.withDel","specialwords.ParametersAsyncClient.withDelWithResponse":"SpecialWords.Parameters.withDel","specialwords.ParametersAsyncClient.withElif":"SpecialWords.Parameters.withElif","specialwords.ParametersAsyncClient.withElifWithResponse":"SpecialWords.Parameters.withElif","specialwords.ParametersAsyncClient.withElse":"SpecialWords.Parameters.withElse","specialwords.ParametersAsyncClient.withElseWithResponse":"SpecialWords.Parameters.withElse","specialwords.ParametersAsyncClient.withExcept":"SpecialWords.Parameters.withExcept","specialwords.ParametersAsyncClient.withExceptWithResponse":"SpecialWords.Parameters.withExcept","specialwords.ParametersAsyncClient.withExec":"SpecialWords.Parameters.withExec","specialwords.ParametersAsyncClient.withExecWithResponse":"SpecialWords.Parameters.withExec","specialwords.ParametersAsyncClient.withFinally":"SpecialWords.Parameters.withFinally","specialwords.ParametersAsyncClient.withFinallyWithResponse":"SpecialWords.Parameters.withFinally","specialwords.ParametersAsyncClient.withFor":"SpecialWords.Parameters.withFor","specialwords.ParametersAsyncClient.withForWithResponse":"SpecialWords.Parameters.withFor","specialwords.ParametersAsyncClient.withFrom":"SpecialWords.Parameters.withFrom","specialwords.ParametersAsyncClient.withFromWithResponse":"SpecialWords.Parameters.withFrom","specialwords.ParametersAsyncClient.withGlobal":"SpecialWords.Parameters.withGlobal","specialwords.ParametersAsyncClient.withGlobalWithResponse":"SpecialWords.Parameters.withGlobal","specialwords.ParametersAsyncClient.withIf":"SpecialWords.Parameters.withIf","specialwords.ParametersAsyncClient.withIfWithResponse":"SpecialWords.Parameters.withIf","specialwords.ParametersAsyncClient.withImport":"SpecialWords.Parameters.withImport","specialwords.ParametersAsyncClient.withImportWithResponse":"SpecialWords.Parameters.withImport","specialwords.ParametersAsyncClient.withIn":"SpecialWords.Parameters.withIn","specialwords.ParametersAsyncClient.withInWithResponse":"SpecialWords.Parameters.withIn","specialwords.ParametersAsyncClient.withIs":"SpecialWords.Parameters.withIs","specialwords.ParametersAsyncClient.withIsWithResponse":"SpecialWords.Parameters.withIs","specialwords.ParametersAsyncClient.withLambda":"SpecialWords.Parameters.withLambda","specialwords.ParametersAsyncClient.withLambdaWithResponse":"SpecialWords.Parameters.withLambda","specialwords.ParametersAsyncClient.withNot":"SpecialWords.Parameters.withNot","specialwords.ParametersAsyncClient.withNotWithResponse":"SpecialWords.Parameters.withNot","specialwords.ParametersAsyncClient.withOr":"SpecialWords.Parameters.withOr","specialwords.ParametersAsyncClient.withOrWithResponse":"SpecialWords.Parameters.withOr","specialwords.ParametersAsyncClient.withPass":"SpecialWords.Parameters.withPass","specialwords.ParametersAsyncClient.withPassWithResponse":"SpecialWords.Parameters.withPass","specialwords.ParametersAsyncClient.withRaise":"SpecialWords.Parameters.withRaise","specialwords.ParametersAsyncClient.withRaiseWithResponse":"SpecialWords.Parameters.withRaise","specialwords.ParametersAsyncClient.withReturn":"SpecialWords.Parameters.withReturn","specialwords.ParametersAsyncClient.withReturnWithResponse":"SpecialWords.Parameters.withReturn","specialwords.ParametersAsyncClient.withTry":"SpecialWords.Parameters.withTry","specialwords.ParametersAsyncClient.withTryWithResponse":"SpecialWords.Parameters.withTry","specialwords.ParametersAsyncClient.withWhile":"SpecialWords.Parameters.withWhile","specialwords.ParametersAsyncClient.withWhileWithResponse":"SpecialWords.Parameters.withWhile","specialwords.ParametersAsyncClient.withWith":"SpecialWords.Parameters.withWith","specialwords.ParametersAsyncClient.withWithWithResponse":"SpecialWords.Parameters.withWith","specialwords.ParametersAsyncClient.withYield":"SpecialWords.Parameters.withYield","specialwords.ParametersAsyncClient.withYieldWithResponse":"SpecialWords.Parameters.withYield","specialwords.ParametersClient":"SpecialWords.Parameters","specialwords.ParametersClient.withAnd":"SpecialWords.Parameters.withAnd","specialwords.ParametersClient.withAndWithResponse":"SpecialWords.Parameters.withAnd","specialwords.ParametersClient.withAs":"SpecialWords.Parameters.withAs","specialwords.ParametersClient.withAsWithResponse":"SpecialWords.Parameters.withAs","specialwords.ParametersClient.withAssert":"SpecialWords.Parameters.withAssert","specialwords.ParametersClient.withAssertWithResponse":"SpecialWords.Parameters.withAssert","specialwords.ParametersClient.withAsyncWithResponse":"SpecialWords.Parameters.withAsync","specialwords.ParametersClient.withAwait":"SpecialWords.Parameters.withAwait","specialwords.ParametersClient.withAwaitWithResponse":"SpecialWords.Parameters.withAwait","specialwords.ParametersClient.withBreak":"SpecialWords.Parameters.withBreak","specialwords.ParametersClient.withBreakWithResponse":"SpecialWords.Parameters.withBreak","specialwords.ParametersClient.withCancellationToken":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersClient.withCancellationTokenWithResponse":"SpecialWords.Parameters.withCancellationToken","specialwords.ParametersClient.withClass":"SpecialWords.Parameters.withClass","specialwords.ParametersClient.withClassWithResponse":"SpecialWords.Parameters.withClass","specialwords.ParametersClient.withConstructor":"SpecialWords.Parameters.withConstructor","specialwords.ParametersClient.withConstructorWithResponse":"SpecialWords.Parameters.withConstructor","specialwords.ParametersClient.withContinue":"SpecialWords.Parameters.withContinue","specialwords.ParametersClient.withContinueWithResponse":"SpecialWords.Parameters.withContinue","specialwords.ParametersClient.withDef":"SpecialWords.Parameters.withDef","specialwords.ParametersClient.withDefWithResponse":"SpecialWords.Parameters.withDef","specialwords.ParametersClient.withDel":"SpecialWords.Parameters.withDel","specialwords.ParametersClient.withDelWithResponse":"SpecialWords.Parameters.withDel","specialwords.ParametersClient.withElif":"SpecialWords.Parameters.withElif","specialwords.ParametersClient.withElifWithResponse":"SpecialWords.Parameters.withElif","specialwords.ParametersClient.withElse":"SpecialWords.Parameters.withElse","specialwords.ParametersClient.withElseWithResponse":"SpecialWords.Parameters.withElse","specialwords.ParametersClient.withExcept":"SpecialWords.Parameters.withExcept","specialwords.ParametersClient.withExceptWithResponse":"SpecialWords.Parameters.withExcept","specialwords.ParametersClient.withExec":"SpecialWords.Parameters.withExec","specialwords.ParametersClient.withExecWithResponse":"SpecialWords.Parameters.withExec","specialwords.ParametersClient.withFinally":"SpecialWords.Parameters.withFinally","specialwords.ParametersClient.withFinallyWithResponse":"SpecialWords.Parameters.withFinally","specialwords.ParametersClient.withFor":"SpecialWords.Parameters.withFor","specialwords.ParametersClient.withForWithResponse":"SpecialWords.Parameters.withFor","specialwords.ParametersClient.withFrom":"SpecialWords.Parameters.withFrom","specialwords.ParametersClient.withFromWithResponse":"SpecialWords.Parameters.withFrom","specialwords.ParametersClient.withGlobal":"SpecialWords.Parameters.withGlobal","specialwords.ParametersClient.withGlobalWithResponse":"SpecialWords.Parameters.withGlobal","specialwords.ParametersClient.withIf":"SpecialWords.Parameters.withIf","specialwords.ParametersClient.withIfWithResponse":"SpecialWords.Parameters.withIf","specialwords.ParametersClient.withImport":"SpecialWords.Parameters.withImport","specialwords.ParametersClient.withImportWithResponse":"SpecialWords.Parameters.withImport","specialwords.ParametersClient.withIn":"SpecialWords.Parameters.withIn","specialwords.ParametersClient.withInWithResponse":"SpecialWords.Parameters.withIn","specialwords.ParametersClient.withIs":"SpecialWords.Parameters.withIs","specialwords.ParametersClient.withIsWithResponse":"SpecialWords.Parameters.withIs","specialwords.ParametersClient.withLambda":"SpecialWords.Parameters.withLambda","specialwords.ParametersClient.withLambdaWithResponse":"SpecialWords.Parameters.withLambda","specialwords.ParametersClient.withNot":"SpecialWords.Parameters.withNot","specialwords.ParametersClient.withNotWithResponse":"SpecialWords.Parameters.withNot","specialwords.ParametersClient.withOr":"SpecialWords.Parameters.withOr","specialwords.ParametersClient.withOrWithResponse":"SpecialWords.Parameters.withOr","specialwords.ParametersClient.withPass":"SpecialWords.Parameters.withPass","specialwords.ParametersClient.withPassWithResponse":"SpecialWords.Parameters.withPass","specialwords.ParametersClient.withRaise":"SpecialWords.Parameters.withRaise","specialwords.ParametersClient.withRaiseWithResponse":"SpecialWords.Parameters.withRaise","specialwords.ParametersClient.withReturn":"SpecialWords.Parameters.withReturn","specialwords.ParametersClient.withReturnWithResponse":"SpecialWords.Parameters.withReturn","specialwords.ParametersClient.withTry":"SpecialWords.Parameters.withTry","specialwords.ParametersClient.withTryWithResponse":"SpecialWords.Parameters.withTry","specialwords.ParametersClient.withWhile":"SpecialWords.Parameters.withWhile","specialwords.ParametersClient.withWhileWithResponse":"SpecialWords.Parameters.withWhile","specialwords.ParametersClient.withWith":"SpecialWords.Parameters.withWith","specialwords.ParametersClient.withWithWithResponse":"SpecialWords.Parameters.withWith","specialwords.ParametersClient.withYield":"SpecialWords.Parameters.withYield","specialwords.ParametersClient.withYieldWithResponse":"SpecialWords.Parameters.withYield","specialwords.SpecialWordsClientBuilder":"SpecialWords","specialwords.extensiblestrings.models.ExtensibleString":"SpecialWords.ExtensibleStrings.ExtensibleString","specialwords.modelproperties.models.DictMethods":"SpecialWords.ModelProperties.DictMethods","specialwords.modelproperties.models.ModelWithList":"SpecialWords.ModelProperties.ModelWithList","specialwords.modelproperties.models.SameAsModel":"SpecialWords.ModelProperties.SameAsModel","specialwords.models.models.And":"SpecialWords.Models.and","specialwords.models.models.As":"SpecialWords.Models.as","specialwords.models.models.Assert":"SpecialWords.Models.assert","specialwords.models.models.Async":"SpecialWords.Models.async","specialwords.models.models.Await":"SpecialWords.Models.await","specialwords.models.models.Break":"SpecialWords.Models.break","specialwords.models.models.ClassModel":"SpecialWords.Models.class","specialwords.models.models.Constructor":"SpecialWords.Models.constructor","specialwords.models.models.Continue":"SpecialWords.Models.continue","specialwords.models.models.Def":"SpecialWords.Models.def","specialwords.models.models.Del":"SpecialWords.Models.del","specialwords.models.models.Elif":"SpecialWords.Models.elif","specialwords.models.models.Else":"SpecialWords.Models.else","specialwords.models.models.Except":"SpecialWords.Models.except","specialwords.models.models.Exec":"SpecialWords.Models.exec","specialwords.models.models.Finally":"SpecialWords.Models.finally","specialwords.models.models.For":"SpecialWords.Models.for","specialwords.models.models.From":"SpecialWords.Models.from","specialwords.models.models.Global":"SpecialWords.Models.global","specialwords.models.models.If":"SpecialWords.Models.if","specialwords.models.models.Import":"SpecialWords.Models.import","specialwords.models.models.In":"SpecialWords.Models.in","specialwords.models.models.Is":"SpecialWords.Models.is","specialwords.models.models.Lambda":"SpecialWords.Models.lambda","specialwords.models.models.Not":"SpecialWords.Models.not","specialwords.models.models.Or":"SpecialWords.Models.or","specialwords.models.models.Pass":"SpecialWords.Models.pass","specialwords.models.models.Raise":"SpecialWords.Models.raise","specialwords.models.models.Return":"SpecialWords.Models.return","specialwords.models.models.Try":"SpecialWords.Models.try","specialwords.models.models.While":"SpecialWords.Models.while","specialwords.models.models.With":"SpecialWords.Models.with","specialwords.models.models.Yield":"SpecialWords.Models.yield"},"generatedFiles":["src/main/java/module-info.java","src/main/java/specialwords/ExtensibleStringsAsyncClient.java","src/main/java/specialwords/ExtensibleStringsClient.java","src/main/java/specialwords/ModelPropertiesAsyncClient.java","src/main/java/specialwords/ModelPropertiesClient.java","src/main/java/specialwords/ModelsAsyncClient.java","src/main/java/specialwords/ModelsClient.java","src/main/java/specialwords/OperationsAsyncClient.java","src/main/java/specialwords/OperationsClient.java","src/main/java/specialwords/ParametersAsyncClient.java","src/main/java/specialwords/ParametersClient.java","src/main/java/specialwords/SpecialWordsClientBuilder.java","src/main/java/specialwords/extensiblestrings/models/ExtensibleString.java","src/main/java/specialwords/extensiblestrings/models/package-info.java","src/main/java/specialwords/implementation/ExtensibleStringsImpl.java","src/main/java/specialwords/implementation/ModelPropertiesImpl.java","src/main/java/specialwords/implementation/ModelsImpl.java","src/main/java/specialwords/implementation/OperationsImpl.java","src/main/java/specialwords/implementation/ParametersImpl.java","src/main/java/specialwords/implementation/SpecialWordsClientImpl.java","src/main/java/specialwords/implementation/package-info.java","src/main/java/specialwords/modelproperties/models/DictMethods.java","src/main/java/specialwords/modelproperties/models/ModelWithList.java","src/main/java/specialwords/modelproperties/models/SameAsModel.java","src/main/java/specialwords/modelproperties/models/package-info.java","src/main/java/specialwords/models/models/And.java","src/main/java/specialwords/models/models/As.java","src/main/java/specialwords/models/models/Assert.java","src/main/java/specialwords/models/models/Async.java","src/main/java/specialwords/models/models/Await.java","src/main/java/specialwords/models/models/Break.java","src/main/java/specialwords/models/models/ClassModel.java","src/main/java/specialwords/models/models/Constructor.java","src/main/java/specialwords/models/models/Continue.java","src/main/java/specialwords/models/models/Def.java","src/main/java/specialwords/models/models/Del.java","src/main/java/specialwords/models/models/Elif.java","src/main/java/specialwords/models/models/Else.java","src/main/java/specialwords/models/models/Except.java","src/main/java/specialwords/models/models/Exec.java","src/main/java/specialwords/models/models/Finally.java","src/main/java/specialwords/models/models/For.java","src/main/java/specialwords/models/models/From.java","src/main/java/specialwords/models/models/Global.java","src/main/java/specialwords/models/models/If.java","src/main/java/specialwords/models/models/Import.java","src/main/java/specialwords/models/models/In.java","src/main/java/specialwords/models/models/Is.java","src/main/java/specialwords/models/models/Lambda.java","src/main/java/specialwords/models/models/Not.java","src/main/java/specialwords/models/models/Or.java","src/main/java/specialwords/models/models/Pass.java","src/main/java/specialwords/models/models/Raise.java","src/main/java/specialwords/models/models/Return.java","src/main/java/specialwords/models/models/Try.java","src/main/java/specialwords/models/models/While.java","src/main/java/specialwords/models/models/With.java","src/main/java/specialwords/models/models/Yield.java","src/main/java/specialwords/models/models/package-info.java","src/main/java/specialwords/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-discriminatoredgecases_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-discriminatoredgecases_metadata.json index 10255b975f5..033bf4bc493 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-discriminatoredgecases_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-discriminatoredgecases_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildNewDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildNewDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildRequiredDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildRequiredDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildNewDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildNewDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildRequiredDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildRequiredDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClientBuilder":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp","tsptest.discriminatoredgecases.models.ChildWithAnotherDiscriminator":"TspTest.DiscriminatorEdgeCases.ChildWithAnotherDiscriminator","tsptest.discriminatoredgecases.models.ChildWithRequiredPropertyAsDiscriminator":"TspTest.DiscriminatorEdgeCases.ChildWithRequiredPropertyAsDiscriminator","tsptest.discriminatoredgecases.models.GrandChildWithAnotherDiscriminator":"TspTest.DiscriminatorEdgeCases.GrandChildWithAnotherDiscriminator","tsptest.discriminatoredgecases.models.GrandChildWithRequiredProperty":"TspTest.DiscriminatorEdgeCases.GrandChildWithRequiredProperty","tsptest.discriminatoredgecases.models.ParentWithRequiredProperty":"TspTest.DiscriminatorEdgeCases.ParentWithRequiredProperty"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesAsyncClient.java","src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClient.java","src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClientBuilder.java","src/main/java/tsptest/discriminatoredgecases/implementation/DiscriminatorEdgeCasesClientImpl.java","src/main/java/tsptest/discriminatoredgecases/implementation/package-info.java","src/main/java/tsptest/discriminatoredgecases/models/ChildWithAnotherDiscriminator.java","src/main/java/tsptest/discriminatoredgecases/models/ChildWithRequiredPropertyAsDiscriminator.java","src/main/java/tsptest/discriminatoredgecases/models/GrandChildWithAnotherDiscriminator.java","src/main/java/tsptest/discriminatoredgecases/models/GrandChildWithRequiredProperty.java","src/main/java/tsptest/discriminatoredgecases/models/ParentWithRequiredProperty.java","src/main/java/tsptest/discriminatoredgecases/models/package-info.java","src/main/java/tsptest/discriminatoredgecases/package-info.java"]} \ No newline at end of file +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildNewDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildNewDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildRequiredDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getChildRequiredDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getNoSubtypes":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getNoSubtypes","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesAsyncClient.getNoSubtypesWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getNoSubtypes","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildNewDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildNewDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildNewDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildRequiredDiscrim":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getChildRequiredDiscrimWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getChildRequiredDiscrim","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getNoSubtypes":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getNoSubtypes","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClient.getNoSubtypesWithResponse":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp.getNoSubtypes","tsptest.discriminatoredgecases.DiscriminatorEdgeCasesClientBuilder":"TspTest.DiscriminatorEdgeCases.DiscriminatorEdgeCasesOp","tsptest.discriminatoredgecases.models.ChildWithAnotherDiscriminator":"TspTest.DiscriminatorEdgeCases.ChildWithAnotherDiscriminator","tsptest.discriminatoredgecases.models.ChildWithRequiredPropertyAsDiscriminator":"TspTest.DiscriminatorEdgeCases.ChildWithRequiredPropertyAsDiscriminator","tsptest.discriminatoredgecases.models.GrandChildWithAnotherDiscriminator":"TspTest.DiscriminatorEdgeCases.GrandChildWithAnotherDiscriminator","tsptest.discriminatoredgecases.models.GrandChildWithRequiredProperty":"TspTest.DiscriminatorEdgeCases.GrandChildWithRequiredProperty","tsptest.discriminatoredgecases.models.ModelWithDiscriminatorNoSubtypes":"TspTest.DiscriminatorEdgeCases.ModelWithDiscriminatorNoSubtypes","tsptest.discriminatoredgecases.models.ParentWithRequiredProperty":"TspTest.DiscriminatorEdgeCases.ParentWithRequiredProperty"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesAsyncClient.java","src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClient.java","src/main/java/tsptest/discriminatoredgecases/DiscriminatorEdgeCasesClientBuilder.java","src/main/java/tsptest/discriminatoredgecases/implementation/DiscriminatorEdgeCasesClientImpl.java","src/main/java/tsptest/discriminatoredgecases/implementation/package-info.java","src/main/java/tsptest/discriminatoredgecases/models/ChildWithAnotherDiscriminator.java","src/main/java/tsptest/discriminatoredgecases/models/ChildWithRequiredPropertyAsDiscriminator.java","src/main/java/tsptest/discriminatoredgecases/models/GrandChildWithAnotherDiscriminator.java","src/main/java/tsptest/discriminatoredgecases/models/GrandChildWithRequiredProperty.java","src/main/java/tsptest/discriminatoredgecases/models/ModelWithDiscriminatorNoSubtypes.java","src/main/java/tsptest/discriminatoredgecases/models/ParentWithRequiredProperty.java","src/main/java/tsptest/discriminatoredgecases/models/package-info.java","src/main/java/tsptest/discriminatoredgecases/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-enumservice_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-enumservice_metadata.json index a999b7ff497..4c372550cf3 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-enumservice_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-enumservice_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"tsptest.enumservice.EnumServiceAsyncClient":"TspTest.EnumService.EnumOp","tsptest.enumservice.EnumServiceAsyncClient.getColor":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceAsyncClient.getColorModel":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceAsyncClient.getColorModelWithResponse":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceAsyncClient.getColorWithResponse":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceAsyncClient.getOperation":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceAsyncClient.getOperationWithResponse":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceAsyncClient.getRunningOperation":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceAsyncClient.getRunningOperationWithResponse":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceAsyncClient.setColorModel":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceAsyncClient.setColorModelWithResponse":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceAsyncClient.setIntArray":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceAsyncClient.setIntArrayWithResponse":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumArray":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumMulti":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setIntMulti":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceAsyncClient.setIntMultiWithResponse":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceAsyncClient.setPriority":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceAsyncClient.setPriorityWithResponse":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceAsyncClient.setStringArray":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceAsyncClient.setStringArrayWithResponse":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArray":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArrayHeader":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArrayHeaderWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumMulti":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setStringMulti":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceAsyncClient.setStringMultiWithResponse":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceClient":"TspTest.EnumService.EnumOp","tsptest.enumservice.EnumServiceClient.getColor":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceClient.getColorModel":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceClient.getColorModelWithResponse":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceClient.getColorWithResponse":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceClient.getOperation":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceClient.getOperationWithResponse":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceClient.getRunningOperation":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceClient.getRunningOperationWithResponse":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceClient.setColorModel":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceClient.setColorModelWithResponse":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceClient.setIntArray":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceClient.setIntArrayWithResponse":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceClient.setIntEnumArray":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceClient.setIntEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceClient.setIntEnumMulti":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceClient.setIntEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceClient.setIntMulti":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceClient.setIntMultiWithResponse":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceClient.setPriority":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceClient.setPriorityWithResponse":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceClient.setStringArray":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceClient.setStringArrayWithResponse":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceClient.setStringEnumArray":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceClient.setStringEnumArrayHeader":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceClient.setStringEnumArrayHeaderWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceClient.setStringEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceClient.setStringEnumMulti":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceClient.setStringEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceClient.setStringMulti":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceClient.setStringMultiWithResponse":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceClientBuilder":"TspTest.EnumService.EnumOp","tsptest.enumservice.models.Color":"TspTest.EnumService.Color","tsptest.enumservice.models.ColorModel":"TspTest.EnumService.ColorModel","tsptest.enumservice.models.OlympicRecordModel":"TspTest.EnumService.OlympicRecordModel","tsptest.enumservice.models.Operation":"TspTest.EnumService.Operation","tsptest.enumservice.models.OperationName":"TspTest.EnumService.Operation.name.anonymous","tsptest.enumservice.models.OperationStateValues":"TspTest.EnumService.OperationStateValues","tsptest.enumservice.models.Priority":"TspTest.EnumService.Priority","tsptest.enumservice.models.PriorityModel":"TspTest.EnumService.PriorityModel","tsptest.enumservice.models.Unit":"TspTest.EnumService.Unit"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/enumservice/EnumServiceAsyncClient.java","src/main/java/tsptest/enumservice/EnumServiceClient.java","src/main/java/tsptest/enumservice/EnumServiceClientBuilder.java","src/main/java/tsptest/enumservice/implementation/EnumServiceClientImpl.java","src/main/java/tsptest/enumservice/implementation/package-info.java","src/main/java/tsptest/enumservice/models/Color.java","src/main/java/tsptest/enumservice/models/ColorModel.java","src/main/java/tsptest/enumservice/models/OlympicRecordModel.java","src/main/java/tsptest/enumservice/models/Operation.java","src/main/java/tsptest/enumservice/models/OperationName.java","src/main/java/tsptest/enumservice/models/OperationStateValues.java","src/main/java/tsptest/enumservice/models/Priority.java","src/main/java/tsptest/enumservice/models/PriorityModel.java","src/main/java/tsptest/enumservice/models/Unit.java","src/main/java/tsptest/enumservice/models/package-info.java","src/main/java/tsptest/enumservice/package-info.java"]} \ No newline at end of file +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"tsptest.enumservice.EnumServiceAsyncClient":"TspTest.EnumService.EnumOp","tsptest.enumservice.EnumServiceAsyncClient.getColor":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceAsyncClient.getColorModel":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceAsyncClient.getColorModelWithResponse":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceAsyncClient.getColorWithResponse":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceAsyncClient.getOperation":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceAsyncClient.getOperationWithResponse":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceAsyncClient.getRunningOperation":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceAsyncClient.getRunningOperationWithResponse":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceAsyncClient.getWrongBody":"TspTest.EnumService.EnumOp.getWrongBody","tsptest.enumservice.EnumServiceAsyncClient.getWrongBodyWithResponse":"TspTest.EnumService.EnumOp.getWrongBody","tsptest.enumservice.EnumServiceAsyncClient.setColorModel":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceAsyncClient.setColorModelWithResponse":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceAsyncClient.setIntArray":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceAsyncClient.setIntArrayWithResponse":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumArray":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumMulti":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setIntEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setIntMulti":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceAsyncClient.setIntMultiWithResponse":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceAsyncClient.setPriority":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceAsyncClient.setPriorityWithResponse":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceAsyncClient.setStringArray":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceAsyncClient.setStringArrayWithResponse":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArray":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArrayHeader":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArrayHeaderWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumMulti":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setStringEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceAsyncClient.setStringMulti":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceAsyncClient.setStringMultiWithResponse":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceClient":"TspTest.EnumService.EnumOp","tsptest.enumservice.EnumServiceClient.getColor":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceClient.getColorModel":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceClient.getColorModelWithResponse":"TspTest.EnumService.EnumOp.getColorModel","tsptest.enumservice.EnumServiceClient.getColorWithResponse":"TspTest.EnumService.EnumOp.getColor","tsptest.enumservice.EnumServiceClient.getOperation":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceClient.getOperationWithResponse":"TspTest.EnumService.EnumOp.getOperation","tsptest.enumservice.EnumServiceClient.getRunningOperation":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceClient.getRunningOperationWithResponse":"TspTest.EnumService.EnumOp.getRunningOperation","tsptest.enumservice.EnumServiceClient.getWrongBody":"TspTest.EnumService.EnumOp.getWrongBody","tsptest.enumservice.EnumServiceClient.getWrongBodyWithResponse":"TspTest.EnumService.EnumOp.getWrongBody","tsptest.enumservice.EnumServiceClient.setColorModel":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceClient.setColorModelWithResponse":"TspTest.EnumService.EnumOp.setColorModel","tsptest.enumservice.EnumServiceClient.setIntArray":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceClient.setIntArrayWithResponse":"TspTest.EnumService.EnumOp.setIntArray","tsptest.enumservice.EnumServiceClient.setIntEnumArray":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceClient.setIntEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setIntEnumArray","tsptest.enumservice.EnumServiceClient.setIntEnumMulti":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceClient.setIntEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setIntEnumMulti","tsptest.enumservice.EnumServiceClient.setIntMulti":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceClient.setIntMultiWithResponse":"TspTest.EnumService.EnumOp.setIntMulti","tsptest.enumservice.EnumServiceClient.setPriority":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceClient.setPriorityWithResponse":"TspTest.EnumService.EnumOp.setPriority","tsptest.enumservice.EnumServiceClient.setStringArray":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceClient.setStringArrayWithResponse":"TspTest.EnumService.EnumOp.setStringArray","tsptest.enumservice.EnumServiceClient.setStringEnumArray":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceClient.setStringEnumArrayHeader":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceClient.setStringEnumArrayHeaderWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArrayHeader","tsptest.enumservice.EnumServiceClient.setStringEnumArrayWithResponse":"TspTest.EnumService.EnumOp.setStringEnumArray","tsptest.enumservice.EnumServiceClient.setStringEnumMulti":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceClient.setStringEnumMultiWithResponse":"TspTest.EnumService.EnumOp.setStringEnumMulti","tsptest.enumservice.EnumServiceClient.setStringMulti":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceClient.setStringMultiWithResponse":"TspTest.EnumService.EnumOp.setStringMulti","tsptest.enumservice.EnumServiceClientBuilder":"TspTest.EnumService.EnumOp","tsptest.enumservice.models.Color":"TspTest.EnumService.Color","tsptest.enumservice.models.ColorModel":"TspTest.EnumService.ColorModel","tsptest.enumservice.models.OlympicRecordModel":"TspTest.EnumService.OlympicRecordModel","tsptest.enumservice.models.Operation":"TspTest.EnumService.Operation","tsptest.enumservice.models.OperationName":"TspTest.EnumService.Operation.name.anonymous","tsptest.enumservice.models.OperationStateValues":"TspTest.EnumService.OperationStateValues","tsptest.enumservice.models.Priority":"TspTest.EnumService.Priority","tsptest.enumservice.models.PriorityModel":"TspTest.EnumService.PriorityModel","tsptest.enumservice.models.Unit":"TspTest.EnumService.Unit"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/enumservice/EnumServiceAsyncClient.java","src/main/java/tsptest/enumservice/EnumServiceClient.java","src/main/java/tsptest/enumservice/EnumServiceClientBuilder.java","src/main/java/tsptest/enumservice/implementation/EnumServiceClientImpl.java","src/main/java/tsptest/enumservice/implementation/package-info.java","src/main/java/tsptest/enumservice/models/Color.java","src/main/java/tsptest/enumservice/models/ColorModel.java","src/main/java/tsptest/enumservice/models/OlympicRecordModel.java","src/main/java/tsptest/enumservice/models/Operation.java","src/main/java/tsptest/enumservice/models/OperationName.java","src/main/java/tsptest/enumservice/models/OperationStateValues.java","src/main/java/tsptest/enumservice/models/Priority.java","src/main/java/tsptest/enumservice/models/PriorityModel.java","src/main/java/tsptest/enumservice/models/Unit.java","src/main/java/tsptest/enumservice/models/package-info.java","src/main/java/tsptest/enumservice/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-visibility_metadata.json b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-visibility_metadata.json index 995c2952f8d..71b987df743 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-visibility_metadata.json +++ b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/META-INF/tsptest-visibility_metadata.json @@ -1 +1 @@ -{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"tsptest.visibility.VisibilityAsyncClient":"TspTest.Visibility","tsptest.visibility.VisibilityAsyncClient.create":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityAsyncClient.createWithResponse":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityAsyncClient.get":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityAsyncClient.getWithResponse":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityAsyncClient.query":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityAsyncClient.queryWithResponse":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityAsyncClient.roundtrip":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityAsyncClient.roundtripWithResponse":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityClient":"TspTest.Visibility","tsptest.visibility.VisibilityClient.create":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityClient.createWithResponse":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityClient.get":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityClient.getWithResponse":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityClient.query":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityClient.queryWithResponse":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityClient.roundtrip":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityClient.roundtripWithResponse":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityClientBuilder":"TspTest.Visibility","tsptest.visibility.VisibilityReadAsyncClient":"TspTest.Visibility.VisibilityRead","tsptest.visibility.VisibilityReadAsyncClient.get":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityReadAsyncClient.getWithResponse":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityReadClient":"TspTest.Visibility.VisibilityRead","tsptest.visibility.VisibilityReadClient.get":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityReadClient.getWithResponse":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityWriteAsyncClient":"TspTest.Visibility.VisibilityWrite","tsptest.visibility.VisibilityWriteAsyncClient.create":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.VisibilityWriteAsyncClient.createWithResponse":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.VisibilityWriteClient":"TspTest.Visibility.VisibilityWrite","tsptest.visibility.VisibilityWriteClient.create":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.VisibilityWriteClient.createWithResponse":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.models.Dog":"TspTest.Visibility.Dog","tsptest.visibility.models.ReadDog":"TspTest.Visibility.ReadDog","tsptest.visibility.models.RoundTripModel":"TspTest.Visibility.RoundTripModel","tsptest.visibility.models.WriteDog":"TspTest.Visibility.WriteDog"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/visibility/VisibilityAsyncClient.java","src/main/java/tsptest/visibility/VisibilityClient.java","src/main/java/tsptest/visibility/VisibilityClientBuilder.java","src/main/java/tsptest/visibility/VisibilityReadAsyncClient.java","src/main/java/tsptest/visibility/VisibilityReadClient.java","src/main/java/tsptest/visibility/VisibilityWriteAsyncClient.java","src/main/java/tsptest/visibility/VisibilityWriteClient.java","src/main/java/tsptest/visibility/implementation/VisibilityClientImpl.java","src/main/java/tsptest/visibility/implementation/VisibilityReadsImpl.java","src/main/java/tsptest/visibility/implementation/VisibilityWritesImpl.java","src/main/java/tsptest/visibility/implementation/package-info.java","src/main/java/tsptest/visibility/models/Dog.java","src/main/java/tsptest/visibility/models/ReadDog.java","src/main/java/tsptest/visibility/models/RoundTripModel.java","src/main/java/tsptest/visibility/models/WriteDog.java","src/main/java/tsptest/visibility/models/package-info.java","src/main/java/tsptest/visibility/package-info.java"]} \ No newline at end of file +{"flavor":"Azure","apiVersions":{},"crossLanguageDefinitions":{"tsptest.visibility.VisibilityClientBuilder":"TspTest.Visibility","tsptest.visibility.VisibilityOpAsyncClient":"TspTest.Visibility.VisibilityOp","tsptest.visibility.VisibilityOpAsyncClient.create":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityOpAsyncClient.createWithResponse":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityOpAsyncClient.get":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityOpAsyncClient.getWithResponse":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityOpAsyncClient.query":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityOpAsyncClient.queryWithResponse":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityOpAsyncClient.roundtrip":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityOpAsyncClient.roundtripWithResponse":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityOpClient":"TspTest.Visibility.VisibilityOp","tsptest.visibility.VisibilityOpClient.create":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityOpClient.createWithResponse":"TspTest.Visibility.VisibilityOp.create","tsptest.visibility.VisibilityOpClient.get":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityOpClient.getWithResponse":"TspTest.Visibility.VisibilityOp.get","tsptest.visibility.VisibilityOpClient.query":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityOpClient.queryWithResponse":"TspTest.Visibility.VisibilityOp.query","tsptest.visibility.VisibilityOpClient.roundtrip":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityOpClient.roundtripWithResponse":"TspTest.Visibility.VisibilityOp.roundtrip","tsptest.visibility.VisibilityReadAsyncClient":"TspTest.Visibility.VisibilityRead","tsptest.visibility.VisibilityReadAsyncClient.get":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityReadAsyncClient.getWithResponse":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityReadClient":"TspTest.Visibility.VisibilityRead","tsptest.visibility.VisibilityReadClient.get":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityReadClient.getWithResponse":"TspTest.Visibility.VisibilityRead.get","tsptest.visibility.VisibilityWriteAsyncClient":"TspTest.Visibility.VisibilityWrite","tsptest.visibility.VisibilityWriteAsyncClient.create":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.VisibilityWriteAsyncClient.createWithResponse":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.VisibilityWriteClient":"TspTest.Visibility.VisibilityWrite","tsptest.visibility.VisibilityWriteClient.create":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.VisibilityWriteClient.createWithResponse":"TspTest.Visibility.VisibilityWrite.create","tsptest.visibility.models.Dog":"TspTest.Visibility.Dog","tsptest.visibility.models.ReadDog":"TspTest.Visibility.ReadDog","tsptest.visibility.models.RoundTripModel":"TspTest.Visibility.RoundTripModel","tsptest.visibility.models.WriteDog":"TspTest.Visibility.WriteDog"},"generatedFiles":["src/main/java/module-info.java","src/main/java/tsptest/visibility/VisibilityClientBuilder.java","src/main/java/tsptest/visibility/VisibilityOpAsyncClient.java","src/main/java/tsptest/visibility/VisibilityOpClient.java","src/main/java/tsptest/visibility/VisibilityReadAsyncClient.java","src/main/java/tsptest/visibility/VisibilityReadClient.java","src/main/java/tsptest/visibility/VisibilityWriteAsyncClient.java","src/main/java/tsptest/visibility/VisibilityWriteClient.java","src/main/java/tsptest/visibility/implementation/VisibilityClientImpl.java","src/main/java/tsptest/visibility/implementation/VisibilityOpsImpl.java","src/main/java/tsptest/visibility/implementation/VisibilityReadsImpl.java","src/main/java/tsptest/visibility/implementation/VisibilityWritesImpl.java","src/main/java/tsptest/visibility/implementation/package-info.java","src/main/java/tsptest/visibility/models/Dog.java","src/main/java/tsptest/visibility/models/ReadDog.java","src/main/java/tsptest/visibility/models/RoundTripModel.java","src/main/java/tsptest/visibility/models/WriteDog.java","src/main/java/tsptest/visibility/models/package-info.java","src/main/java/tsptest/visibility/package-info.java"]} \ No newline at end of file diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/azure-clientgenerator-core-clientinitialization-defaultclient.properties similarity index 100% rename from packages/http-client-java/generator/http-client-generator-test/src/main/resources/_specs_-azure-clientgenerator-core-clientinitialization-defaultclient.properties rename to packages/http-client-java/generator/http-client-generator-test/src/main/resources/azure-clientgenerator-core-clientinitialization-defaultclient.properties diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/azure-clientgenerator-core-clientinitialization-individuallyclient.properties similarity index 100% rename from packages/http-client-java/generator/http-client-generator-test/src/main/resources/_specs_-azure-clientgenerator-core-clientinitialization-individuallyclient.properties rename to packages/http-client-java/generator/http-client-generator-test/src/main/resources/azure-clientgenerator-core-clientinitialization-individuallyclient.properties diff --git a/packages/http-client-java/generator/http-client-generator-test/src/main/resources/_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties b/packages/http-client-java/generator/http-client-generator-test/src/main/resources/azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties similarity index 100% rename from packages/http-client-java/generator/http-client-generator-test/src/main/resources/_specs_-azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties rename to packages/http-client-java/generator/http-client-generator-test/src/main/resources/azure-clientgenerator-core-clientinitialization-individuallyparentclient.properties diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/defaultclient/DefaultClientTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/defaultclient/DefaultClientTests.java new file mode 100644 index 00000000000..80caba42b5e --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/defaultclient/DefaultClientTests.java @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package azure.clientgenerator.core.clientinitialization.defaultclient; + +import azure.clientgenerator.core.clientinitialization.defaultclient.models.BlobProperties; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.Input; +import azure.clientgenerator.core.clientinitialization.defaultclient.models.WithBodyRequest; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class DefaultClientTests { + + @Test + public void testHeaderParam() { + HeaderParamClient headerParamClient = new HeaderParamClientBuilder().name("test-name-value").buildClient(); + + headerParamClient.withQuery("test-id"); + headerParamClient.withBody(new Input("test-name")); + } + + @Test + public void testMultipleParams() { + MultipleParamsClient multipleParamsClient + = new MultipleParamsClientBuilder().name("test-name-value").region("us-west").buildClient(); + + multipleParamsClient.withQuery("test-id"); + multipleParamsClient.withBody(new Input("test-name")); + } + + @Test + public void testMixedParams() { + MixedParamsClient mixedParamsClient = new MixedParamsClientBuilder().name("test-name-value").buildClient(); + + mixedParamsClient.withQuery("us-west", "test-id"); + mixedParamsClient.withBody("us-west", new WithBodyRequest("test-name")); + } + + @Test + public void testPathParam() { + PathParamClient pathParamClient = new PathParamClientBuilder().blobName("sample-blob").buildClient(); + + pathParamClient.withQuery("text"); + BlobProperties blobProperties = pathParamClient.getStandalone(); + Assertions.assertNotNull(blobProperties); + Assertions.assertEquals("sample-blob", blobProperties.getName()); + pathParamClient.deleteStandalone(); + } + + @Test + public void testParamAlias() { + ParamAliasClient paramAliasClient = new ParamAliasClientBuilder().blobName("sample-blob").buildClient(); + + paramAliasClient.withAliasedName(); + paramAliasClient.withOriginalName(); + } + + @Test + public void testQueryParam() { + QueryParamClient queryParamClient = new QueryParamClientBuilder().blobName("test-blob").buildClient(); + + queryParamClient.withQuery("text"); + BlobProperties blobProperties = queryParamClient.getStandalone(); + Assertions.assertNotNull(blobProperties); + Assertions.assertEquals("test-blob", blobProperties.getName()); + queryParamClient.deleteStandalone(); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/generated/HeaderParamClientTestBase.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/defaultclient/generated/HeaderParamClientTestBase.java similarity index 80% rename from packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/generated/HeaderParamClientTestBase.java rename to packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/defaultclient/generated/HeaderParamClientTestBase.java index 4b0f55cce3c..7200a132b6b 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/defaultclient/generated/HeaderParamClientTestBase.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/defaultclient/generated/HeaderParamClientTestBase.java @@ -2,24 +2,24 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.generated; +package azure.clientgenerator.core.clientinitialization.defaultclient.generated; // The Java test files under 'generated' package are generated for your reference. // If you wish to modify these files, please copy them out of the 'generated' package, and modify there. // See https://aka.ms/azsdk/dpg/java/tests for guide on adding a test. -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient; -import _specs_.azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClientBuilder; +import azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClient; +import azure.clientgenerator.core.clientinitialization.defaultclient.HeaderParamClientBuilder; +import azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClient; +import azure.clientgenerator.core.clientinitialization.defaultclient.MixedParamsClientBuilder; +import azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClient; +import azure.clientgenerator.core.clientinitialization.defaultclient.MultipleParamsClientBuilder; +import azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClient; +import azure.clientgenerator.core.clientinitialization.defaultclient.ParamAliasClientBuilder; +import azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClient; +import azure.clientgenerator.core.clientinitialization.defaultclient.PathParamClientBuilder; +import azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClient; +import azure.clientgenerator.core.clientinitialization.defaultclient.QueryParamClientBuilder; import com.azure.core.http.policy.HttpLogDetailLevel; import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.test.TestMode; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyClientTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyClientTests.java new file mode 100644 index 00000000000..02b30166f3a --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyclient/IndividuallyClientTests.java @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package azure.clientgenerator.core.clientinitialization.individuallyclient; + +import azure.clientgenerator.core.clientinitialization.individuallyclient.models.BlobProperties; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class IndividuallyClientTests { + + @Test + public void testIndividuallyNestedWithPath() { + IndividuallyNestedWithPathClient client + = new IndividuallyNestedWithPathClientBuilder().blobName("test-blob").buildClient(); + + client.withQuery("text"); + BlobProperties blobProperties = client.getStandalone(); + Assertions.assertNotNull(blobProperties); + Assertions.assertEquals("test-blob", blobProperties.getName()); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyNestedWithQuery() { + IndividuallyNestedWithQueryClient client + = new IndividuallyNestedWithQueryClientBuilder().blobName("test-blob").buildClient(); + + client.withQuery("text"); + BlobProperties blobProperties = client.getStandalone(); + Assertions.assertNotNull(blobProperties); + Assertions.assertEquals("test-blob", blobProperties.getName()); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyNestedWithHeader() { + IndividuallyNestedWithHeaderClient client + = new IndividuallyNestedWithHeaderClientBuilder().name("test-name-value").buildClient(); + + client.withQuery("text"); + client.getStandalone(); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyNestedWithMultiple() { + IndividuallyNestedWithMultipleClient client + = new IndividuallyNestedWithMultipleClientBuilder().name("test-name-value").region("us-west").buildClient(); + + client.withQuery("text"); + client.getStandalone(); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyNestedWithMixed() { + IndividuallyNestedWithMixedClient client + = new IndividuallyNestedWithMixedClientBuilder().name("test-name-value").buildClient(); + + client.withQuery("us-west", "text"); + client.getStandalone("us-west"); + client.deleteStandalone("us-west"); + } + + @Test + public void testIndividuallyNestedWithParamAlias() { + IndividuallyNestedWithParamAliasClient client + = new IndividuallyNestedWithParamAliasClientBuilder().blobName("sample-blob").buildClient(); + + client.withAliasedName(); + client.withOriginalName(); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/generated/IndividuallyNestedWithPathClientTestBase.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyclient/generated/IndividuallyNestedWithPathClientTestBase.java similarity index 80% rename from packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/generated/IndividuallyNestedWithPathClientTestBase.java rename to packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyclient/generated/IndividuallyNestedWithPathClientTestBase.java index c5add06432f..995a5c14231 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyclient/generated/IndividuallyNestedWithPathClientTestBase.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyclient/generated/IndividuallyNestedWithPathClientTestBase.java @@ -2,24 +2,24 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.generated; +package azure.clientgenerator.core.clientinitialization.individuallyclient.generated; // The Java test files under 'generated' package are generated for your reference. // If you wish to modify these files, please copy them out of the 'generated' package, and modify there. // See https://aka.ms/azsdk/dpg/java/tests for guide on adding a test. -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClient; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithHeaderClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClient; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMixedClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClient; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithMultipleClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClient; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithParamAliasClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClient; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithPathClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClient; +import azure.clientgenerator.core.clientinitialization.individuallyclient.IndividuallyNestedWithQueryClientBuilder; import com.azure.core.http.policy.HttpLogDetailLevel; import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.test.TestMode; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientTests.java new file mode 100644 index 00000000000..18feb0c5429 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/IndividuallyParentClientTests.java @@ -0,0 +1,76 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package azure.clientgenerator.core.clientinitialization.individuallyparentclient; + +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.models.BlobProperties; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class IndividuallyParentClientTests { + + private final IndividuallyParentClient parentClient = new IndividuallyParentClientBuilder().buildClient(); + + @Test + public void testIndividuallyParentNestedWithPath() { + IndividuallyParentNestedWithPathClient client + = parentClient.getIndividuallyParentNestedWithPathClient("test-blob"); + + client.withQuery("text"); + BlobProperties blobProperties = client.getStandalone(); + Assertions.assertNotNull(blobProperties); + Assertions.assertEquals("test-blob", blobProperties.getName()); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyParentNestedWithQuery() { + IndividuallyParentNestedWithQueryClient client + = parentClient.getIndividuallyParentNestedWithQueryClient("test-blob"); + + client.withQuery("text"); + BlobProperties blobProperties = client.getStandalone(); + Assertions.assertNotNull(blobProperties); + Assertions.assertEquals("test-blob", blobProperties.getName()); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyParentNestedWithHeader() { + IndividuallyParentNestedWithHeaderClient client + = parentClient.getIndividuallyParentNestedWithHeaderClient("test-name-value"); + + client.withQuery("text"); + client.getStandalone(); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyParentNestedWithMultiple() { + IndividuallyParentNestedWithMultipleClient client + = parentClient.getIndividuallyParentNestedWithMultipleClient("test-name-value", "us-west"); + + client.withQuery("text"); + client.getStandalone(); + client.deleteStandalone(); + } + + @Test + public void testIndividuallyParentNestedWithMixed() { + IndividuallyParentNestedWithMixedClient client + = parentClient.getIndividuallyParentNestedWithMixedClient("test-name-value"); + + client.withQuery("us-west", "text"); + client.getStandalone("us-west"); + client.deleteStandalone("us-west"); + } + + @Test + public void testIndividuallyParentNestedWithParamAlias() { + IndividuallyParentNestedWithParamAliasClient client + = parentClient.getIndividuallyParentNestedWithParamAliasClient("sample-blob"); + + client.withAliasedName(); + client.withOriginalName(); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/generated/IndividuallyParentNestedWithPathClientTestBase.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/generated/IndividuallyParentNestedWithPathClientTestBase.java similarity index 78% rename from packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/generated/IndividuallyParentNestedWithPathClientTestBase.java rename to packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/generated/IndividuallyParentNestedWithPathClientTestBase.java index 79eb17cdd8b..255296ba8a6 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/_specs_/azure/clientgenerator/core/clientinitialization/individuallyparentclient/generated/IndividuallyParentNestedWithPathClientTestBase.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/clientgenerator/core/clientinitialization/individuallyparentclient/generated/IndividuallyParentNestedWithPathClientTestBase.java @@ -2,26 +2,26 @@ // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. -package _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.generated; +package azure.clientgenerator.core.clientinitialization.individuallyparentclient.generated; // The Java test files under 'generated' package are generated for your reference. // If you wish to modify these files, please copy them out of the 'generated' package, and modify there. // See https://aka.ms/azsdk/dpg/java/tests for guide on adding a test. -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClientBuilder; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient; -import _specs_.azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClient; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClient; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithHeaderClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClient; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMixedClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClient; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithMultipleClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClient; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithParamAliasClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClient; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithPathClientBuilder; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClient; +import azure.clientgenerator.core.clientinitialization.individuallyparentclient.IndividuallyParentNestedWithQueryClientBuilder; import com.azure.core.http.policy.HttpLogDetailLevel; import com.azure.core.http.policy.HttpLogOptions; import com.azure.core.test.TestMode; diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/ArmMultiServiceOlderVersionsTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/ArmMultiServiceOlderVersionsTests.java deleted file mode 100644 index 1a704aa3a39..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/ArmMultiServiceOlderVersionsTests.java +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package azure.resourcemanager.multiserviceolderversions; - -import azure.resourcemanager.multiserviceolderversions.combined.CombinedManager; -import azure.resourcemanager.multiserviceolderversions.combined.models.DiskProperties; -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachineProperties; -import com.azure.core.management.Region; -import org.junit.jupiter.api.Test; -import org.utils.ArmUtils; - -public final class ArmMultiServiceOlderVersionsTests { - - private final CombinedManager manager - = CombinedManager.authenticate(ArmUtils.createTestHttpPipeline(), ArmUtils.getAzureProfile()); - - private static final String RESOURCE_GROUP_NAME = "test-rg"; - private static final Region REGION = Region.US_EAST; - - @Test - public void testCombinedClient() { - manager.disks() - .define("disk-old1") - .withRegion(REGION) - .withExistingResourceGroup(RESOURCE_GROUP_NAME) - .withProperties(new DiskProperties().withDiskSizeGB(128)) - .create(); - manager.disks().getByResourceGroup(RESOURCE_GROUP_NAME, "disk-old1"); - - manager.virtualMachines() - .define("vm-old1") - .withRegion(REGION) - .withExistingResourceGroup(RESOURCE_GROUP_NAME) - .withProperties(new VirtualMachineProperties().withSize("Standard_D2s_v3")) - .create(); - manager.virtualMachines().getByResourceGroup(RESOURCE_GROUP_NAME, "vm-old1"); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/DiskInnerTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/DiskInnerTests.java deleted file mode 100644 index 0d799efc91c..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/DiskInnerTests.java +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.generated; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.DiskInner; -import azure.resourcemanager.multiserviceolderversions.combined.models.DiskProperties; -import com.azure.core.util.BinaryData; -import java.util.HashMap; -import java.util.Map; -import org.junit.jupiter.api.Assertions; - -public final class DiskInnerTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - DiskInner model = BinaryData.fromString( - "{\"properties\":{\"provisioningState\":\"Canceled\",\"diskSizeGB\":1911349374},\"location\":\"ufpo\",\"tags\":{\"qsoqijgkd\":\"izhwlrxy\"},\"id\":\"bpazlobcufpdzn\",\"name\":\"btcqq\",\"type\":\"nq\"}") - .toObject(DiskInner.class); - Assertions.assertEquals("ufpo", model.location()); - Assertions.assertEquals("izhwlrxy", model.tags().get("qsoqijgkd")); - Assertions.assertEquals(1911349374, model.properties().diskSizeGB()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - DiskInner model = new DiskInner().withLocation("ufpo") - .withTags(mapOf("qsoqijgkd", "izhwlrxy")) - .withProperties(new DiskProperties().withDiskSizeGB(1911349374)); - model = BinaryData.fromObject(model).toObject(DiskInner.class); - Assertions.assertEquals("ufpo", model.location()); - Assertions.assertEquals("izhwlrxy", model.tags().get("qsoqijgkd")); - Assertions.assertEquals(1911349374, model.properties().diskSizeGB()); - } - - // Use "Map.of" if available - @SuppressWarnings("unchecked") - private static Map mapOf(Object... inputs) { - Map map = new HashMap<>(); - for (int i = 0; i < inputs.length; i += 2) { - String key = (String) inputs[i]; - T value = (T) inputs[i + 1]; - map.put(key, value); - } - return map; - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/DiskPropertiesTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/DiskPropertiesTests.java deleted file mode 100644 index c09cf61fb93..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/DiskPropertiesTests.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.generated; - -import azure.resourcemanager.multiserviceolderversions.combined.models.DiskProperties; -import com.azure.core.util.BinaryData; -import org.junit.jupiter.api.Assertions; - -public final class DiskPropertiesTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - DiskProperties model = BinaryData.fromString("{\"provisioningState\":\"Succeeded\",\"diskSizeGB\":2127527772}") - .toObject(DiskProperties.class); - Assertions.assertEquals(2127527772, model.diskSizeGB()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - DiskProperties model = new DiskProperties().withDiskSizeGB(2127527772); - model = BinaryData.fromObject(model).toObject(DiskProperties.class); - Assertions.assertEquals(2127527772, model.diskSizeGB()); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/VirtualMachineInnerTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/VirtualMachineInnerTests.java deleted file mode 100644 index 6a4592562ae..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/VirtualMachineInnerTests.java +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.generated; - -import azure.resourcemanager.multiserviceolderversions.combined.fluent.models.VirtualMachineInner; -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachineProperties; -import com.azure.core.util.BinaryData; -import java.util.HashMap; -import java.util.Map; -import org.junit.jupiter.api.Assertions; - -public final class VirtualMachineInnerTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - VirtualMachineInner model = BinaryData.fromString( - "{\"properties\":{\"provisioningState\":\"Succeeded\",\"size\":\"uv\"},\"location\":\"xpyb\",\"tags\":{\"sphrupidgs\":\"ehmtzop\"},\"id\":\"bb\",\"name\":\"jhphoyc\",\"type\":\"sx\"}") - .toObject(VirtualMachineInner.class); - Assertions.assertEquals("xpyb", model.location()); - Assertions.assertEquals("ehmtzop", model.tags().get("sphrupidgs")); - Assertions.assertEquals("uv", model.properties().size()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - VirtualMachineInner model = new VirtualMachineInner().withLocation("xpyb") - .withTags(mapOf("sphrupidgs", "ehmtzop")) - .withProperties(new VirtualMachineProperties().withSize("uv")); - model = BinaryData.fromObject(model).toObject(VirtualMachineInner.class); - Assertions.assertEquals("xpyb", model.location()); - Assertions.assertEquals("ehmtzop", model.tags().get("sphrupidgs")); - Assertions.assertEquals("uv", model.properties().size()); - } - - // Use "Map.of" if available - @SuppressWarnings("unchecked") - private static Map mapOf(Object... inputs) { - Map map = new HashMap<>(); - for (int i = 0; i < inputs.length; i += 2) { - String key = (String) inputs[i]; - T value = (T) inputs[i + 1]; - map.put(key, value); - } - return map; - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/VirtualMachinePropertiesTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/VirtualMachinePropertiesTests.java deleted file mode 100644 index 696397674e2..00000000000 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/azure/resourcemanager/multiserviceolderversions/combined/generated/VirtualMachinePropertiesTests.java +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. - -package azure.resourcemanager.multiserviceolderversions.combined.generated; - -import azure.resourcemanager.multiserviceolderversions.combined.models.VirtualMachineProperties; -import com.azure.core.util.BinaryData; -import org.junit.jupiter.api.Assertions; - -public final class VirtualMachinePropertiesTests { - @org.junit.jupiter.api.Test - public void testDeserialize() throws Exception { - VirtualMachineProperties model - = BinaryData.fromString("{\"provisioningState\":\"Canceled\",\"size\":\"dxbmtqioq\"}") - .toObject(VirtualMachineProperties.class); - Assertions.assertEquals("dxbmtqioq", model.size()); - } - - @org.junit.jupiter.api.Test - public void testSerialize() throws Exception { - VirtualMachineProperties model = new VirtualMachineProperties().withSize("dxbmtqioq"); - model = BinaryData.fromObject(model).toObject(VirtualMachineProperties.class); - Assertions.assertEquals("dxbmtqioq", model.size()); - } -} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/duration/EncodeDurationTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/duration/EncodeDurationTests.java index 04ab3573d8d..9313e9e9b66 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/duration/EncodeDurationTests.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/encode/duration/EncodeDurationTests.java @@ -11,10 +11,12 @@ import encode.duration.property.models.FloatMillisecondsLargerUnitDurationProperty; import encode.duration.property.models.FloatSecondsDurationArrayProperty; import encode.duration.property.models.FloatSecondsDurationProperty; +import encode.duration.property.models.FloatSecondsLargerUnitDurationProperty; import encode.duration.property.models.ISO8601DurationProperty; import encode.duration.property.models.Int32MillisecondsDurationProperty; import encode.duration.property.models.Int32MillisecondsLargerUnitDurationProperty; import encode.duration.property.models.Int32SecondsDurationProperty; +import encode.duration.property.models.Int32SecondsLargerUnitDurationProperty; import java.time.Duration; import java.util.Arrays; import java.util.List; @@ -43,6 +45,10 @@ public void testQuery() { queryClient.int32Seconds(SECOND36); + queryClient.int32SecondsLargerUnit(Duration.ofMinutes(2)); + + queryClient.floatSecondsLargerUnit(Duration.ofMinutes(2).plusSeconds(30)); + queryClient.iso8601(DAY40); queryClient.int32SecondsArray(Arrays.asList(SECOND36, Duration.ofSeconds(47))); @@ -51,12 +57,11 @@ public void testQuery() { queryClient.int32MillisecondsLargerUnit(Duration.ofMinutes(3)); -// TODO: floatMilliseconds/float64Milliseconds send 35625.0 instead of 35625 as query param -// queryClient.floatMilliseconds(MILLIS35625); -// -// queryClient.floatMillisecondsLargerUnit(Duration.ofMinutes(3).plusSeconds(30)); -// -// queryClient.float64Milliseconds(MILLIS35625); + queryClient.floatMilliseconds(MILLIS35625); + + queryClient.floatMillisecondsLargerUnit(Duration.ofMinutes(3).plusSeconds(30)); + + queryClient.float64Milliseconds(MILLIS35625); queryClient.int32MillisecondsArray(Arrays.asList(MILLIS36000, Duration.ofMillis(47000))); } @@ -71,6 +76,10 @@ public void testHeader() { headerClient.int32Seconds(SECOND36); + headerClient.int32SecondsLargerUnit(Duration.ofMinutes(2)); + + headerClient.floatSecondsLargerUnit(Duration.ofMinutes(2).plusSeconds(30)); + headerClient.iso8601(DAY40); headerClient.iso8601Array(Arrays.asList(DAY40, Duration.ofDays(50))); @@ -79,12 +88,11 @@ public void testHeader() { headerClient.int32MillisecondsLargerUnit(Duration.ofMinutes(3)); -// TODO: floatMilliseconds/float64Milliseconds send 35625.0 instead of 35625 as header value -// headerClient.floatMilliseconds(MILLIS35625); -// -// headerClient.floatMillisecondsLargerUnit(Duration.ofMinutes(3).plusSeconds(30)); -// -// headerClient.float64Milliseconds(MILLIS35625); + headerClient.floatMilliseconds(MILLIS35625); + + headerClient.floatMillisecondsLargerUnit(Duration.ofMinutes(3).plusSeconds(30)); + + headerClient.float64Milliseconds(MILLIS35625); headerClient.int32MillisecondsArray(Arrays.asList(MILLIS36000, Duration.ofMillis(47000))); } @@ -102,6 +110,16 @@ public void testProperty() { Assertions.assertEquals(SECOND36, propertyClient.int32Seconds(new Int32SecondsDurationProperty(SECOND36)).getValue()); + Assertions.assertEquals(Duration.ofMinutes(2), + propertyClient.int32SecondsLargerUnit(new Int32SecondsLargerUnitDurationProperty(Duration.ofMinutes(2))) + .getValue()); + + Assertions.assertEquals(Duration.ofMinutes(2).plusSeconds(30), + propertyClient + .floatSecondsLargerUnit( + new FloatSecondsLargerUnitDurationProperty(Duration.ofMinutes(2).plusSeconds(30))) + .getValue()); + propertyClient.iso8601(new ISO8601DurationProperty(DAY40)); List array = Arrays.asList(SECOND35, Duration.ofSeconds(46, 750_000_000)); diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/specialwords/ExtensibleStringsClientTest.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/specialwords/ExtensibleStringsClientTest.java new file mode 100644 index 00000000000..633147c06fd --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/specialwords/ExtensibleStringsClientTest.java @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package specialwords; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import specialwords.extensiblestrings.models.ExtensibleString; + +public class ExtensibleStringsClientTest { + + private final ExtensibleStringsClient client = new SpecialWordsClientBuilder().buildExtensibleStringsClient(); + + @Test + public void testPutExtensibleStringValue() { + ExtensibleString result = client.putExtensibleStringValue(ExtensibleString.CLASS); + Assertions.assertEquals(ExtensibleString.CLASS, result); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/specialwords/generated/SpecialWordsClientTestBase.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/specialwords/generated/SpecialWordsClientTestBase.java index 20be242ec4c..04ff1266c8e 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/specialwords/generated/SpecialWordsClientTestBase.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/specialwords/generated/SpecialWordsClientTestBase.java @@ -13,6 +13,7 @@ import com.azure.core.test.TestMode; import com.azure.core.test.TestProxyTestBase; import com.azure.core.util.Configuration; +import specialwords.ExtensibleStringsClient; import specialwords.ModelPropertiesClient; import specialwords.ModelsClient; import specialwords.OperationsClient; @@ -24,6 +25,8 @@ class SpecialWordsClientTestBase extends TestProxyTestBase { protected ModelPropertiesClient modelPropertiesClient; + protected ExtensibleStringsClient extensibleStringsClient; + protected OperationsClient operationsClient; protected ParametersClient parametersClient; @@ -48,6 +51,15 @@ protected void beforeTest() { } modelPropertiesClient = modelPropertiesClientbuilder.buildModelPropertiesClient(); + SpecialWordsClientBuilder extensibleStringsClientbuilder = new SpecialWordsClientBuilder() + .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "http://localhost:3000")) + .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null))) + .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC)); + if (getTestMode() == TestMode.RECORD) { + extensibleStringsClientbuilder.addPolicy(interceptorManager.getRecordPolicy()); + } + extensibleStringsClient = extensibleStringsClientbuilder.buildExtensibleStringsClient(); + SpecialWordsClientBuilder operationsClientbuilder = new SpecialWordsClientBuilder() .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "http://localhost:3000")) .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null))) diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/armstreamstyleserialization/PagedModelPackageTests.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/armstreamstyleserialization/PagedModelPackageTests.java new file mode 100644 index 00000000000..acc5506f354 --- /dev/null +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/armstreamstyleserialization/PagedModelPackageTests.java @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package tsptest.armstreamstyleserialization; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import tsptest.armstreamstyleserialization.fluent.models.ListResultSummary2Inner; +import tsptest.armstreamstyleserialization.implementation.models.ListResult; +import tsptest.armstreamstyleserialization.implementation.models.ListResultSummary; +import tsptest.armstreamstyleserialization.models.ListResult2; +import tsptest.armstreamstyleserialization.models.ListResult3; + +public class PagedModelPackageTests { + + @Test + public void testPagedModelPackage() { + Assertions.assertTrue(isInImplementationModels(ListResult.class)); + Assertions.assertTrue(isInImplementationModels(ListResultSummary.class)); + + // ListResult2 not in implementation, because its child ListResultSummary2(Inner) is PUBLIC + Assertions.assertFalse(isInImplementationModels(ListResult2.class)); + Assertions.assertFalse(isInImplementationModels(ListResultSummary2Inner.class)); + + // ListResult3 not in implementation, because we add `@access(Access.public)` to the model + Assertions.assertFalse(isInImplementationModels(ListResult3.class)); + } + + private static boolean isInImplementationModels(Class clazz) { + return clazz.getPackage().getName().endsWith(".implementation.models"); + } +} diff --git a/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/visibility/generated/VisibilityClientTestBase.java b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/visibility/generated/VisibilityClientTestBase.java index 1a2f22b26c4..06914a26ee1 100644 --- a/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/visibility/generated/VisibilityClientTestBase.java +++ b/packages/http-client-java/generator/http-client-generator-test/src/test/java/tsptest/visibility/generated/VisibilityClientTestBase.java @@ -13,29 +13,20 @@ import com.azure.core.test.TestMode; import com.azure.core.test.TestProxyTestBase; import com.azure.core.util.Configuration; -import tsptest.visibility.VisibilityClient; import tsptest.visibility.VisibilityClientBuilder; +import tsptest.visibility.VisibilityOpClient; import tsptest.visibility.VisibilityReadClient; import tsptest.visibility.VisibilityWriteClient; class VisibilityClientTestBase extends TestProxyTestBase { - protected VisibilityClient visibilityClient; - protected VisibilityReadClient visibilityReadClient; protected VisibilityWriteClient visibilityWriteClient; + protected VisibilityOpClient visibilityOpClient; + @Override protected void beforeTest() { - VisibilityClientBuilder visibilityClientbuilder - = new VisibilityClientBuilder().endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "endpoint")) - .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null))) - .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC)); - if (getTestMode() == TestMode.RECORD) { - visibilityClientbuilder.addPolicy(interceptorManager.getRecordPolicy()); - } - visibilityClient = visibilityClientbuilder.buildClient(); - VisibilityClientBuilder visibilityReadClientbuilder = new VisibilityClientBuilder().endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "endpoint")) .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null))) @@ -54,5 +45,14 @@ protected void beforeTest() { } visibilityWriteClient = visibilityWriteClientbuilder.buildVisibilityWriteClient(); + VisibilityClientBuilder visibilityOpClientbuilder + = new VisibilityClientBuilder().endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "endpoint")) + .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null))) + .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC)); + if (getTestMode() == TestMode.RECORD) { + visibilityOpClientbuilder.addPolicy(interceptorManager.getRecordPolicy()); + } + visibilityOpClient = visibilityOpClientbuilder.buildVisibilityOpClient(); + } } diff --git a/packages/http-client-java/generator/http-client-generator-test/tsp/arm-stream-style-serialization.tsp b/packages/http-client-java/generator/http-client-generator-test/tsp/arm-stream-style-serialization.tsp index d26c8cf9f3d..0187de15f86 100644 --- a/packages/http-client-java/generator/http-client-generator-test/tsp/arm-stream-style-serialization.tsp +++ b/packages/http-client-java/generator/http-client-generator-test/tsp/arm-stream-style-serialization.tsp @@ -253,6 +253,7 @@ interface Functions { interface Priorities { @post setPriority(@query priority: Priority): { + @header("Content-Type") contentType: "application/json"; @body body: Priority; }; } @@ -263,6 +264,33 @@ interface Items { @get @list list(): ListResult & ArmLroLocationHeader; + + @get + @list + @route("summary") + summary(): ListResultSummary; + + @get + @list + @route("list2") + list2(): ListResult2; + + @get + @route("summary2") + summary2(): ListResultSummary2; + + @get + @list + @route("list3") + list3(): ListResult3; + + @post + post(@body body: ListResult3): void; +} + +// model does not contain `@pageItems` property, but inherit them from parent +model ListResultSummary extends ListResult { + summary?: string; } model ListResult { @@ -273,6 +301,29 @@ model ListResult { nextLink?: string; } +// This paged model need to be public (instead of in "implementation" package), as its child ListResultSummary2 is public +model ListResult2 { + @pageItems + items: Result[]; + + @nextLink + nextLink?: string; +} + +// This paged model need to be public (instead of in "implementation" package), as it is referenced in public API or public model +@access(Access.public) +model ListResult3 { + @pageItems + items: Result[]; + + @nextLink + nextLink?: string; +} + +model ListResultSummary2 extends ListResult2 { + summary?: string; +} + model Result { name: string; diff --git a/packages/http-client-java/generator/http-client-generator-test/tsp/discriminator-edge-cases.tsp b/packages/http-client-java/generator/http-client-generator-test/tsp/discriminator-edge-cases.tsp index b3cfb94ed8c..bb8982abd9e 100644 --- a/packages/http-client-java/generator/http-client-generator-test/tsp/discriminator-edge-cases.tsp +++ b/packages/http-client-java/generator/http-client-generator-test/tsp/discriminator-edge-cases.tsp @@ -32,6 +32,13 @@ model GrandChildWithAnotherDiscriminator extends ChildWithAnotherDiscriminator { differentDiscriminator: "anotherValue"; } +/** Model with @discriminator but no known subtypes. */ +@discriminator("kind") +model ModelWithDiscriminatorNoSubtypes { + kind: string; + name: string; +} + @client({ service: TspTest.DiscriminatorEdgeCases, name: "DiscriminatorEdgeCasesClient", @@ -49,4 +56,10 @@ interface DiscriminatorEdgeCasesOp { getChildNewDiscrim(): { @body body: ChildWithAnotherDiscriminator; }; + + @get + @route("/nosubtypes") + getNoSubtypes(): { + @body body: ModelWithDiscriminatorNoSubtypes; + }; } diff --git a/packages/http-client-java/generator/http-client-generator-test/tsp/enum.tsp b/packages/http-client-java/generator/http-client-generator-test/tsp/enum.tsp index 989388c862b..8545bfbc2b2 100644 --- a/packages/http-client-java/generator/http-client-generator-test/tsp/enum.tsp +++ b/packages/http-client-java/generator/http-client-generator-test/tsp/enum.tsp @@ -202,4 +202,12 @@ interface EnumOp { @header colorArrayOpt?: ColorModel[], ): void; + + // The request and response should be `@header contentType: "application/json", @body body: ColorModel` + // The test here is to make sure the generated code still compile pass, even if it is not the expected operation definition. + @post + @route("operation/wrong-body") + getWrongBody(@body body: ColorModelBase): { + @body body: ColorModelBase; + }; } diff --git a/packages/http-client-java/generator/http-client-generator-test/tsp/visibility.tsp b/packages/http-client-java/generator/http-client-generator-test/tsp/visibility.tsp index 99a0b7c326a..db783adb259 100644 --- a/packages/http-client-java/generator/http-client-generator-test/tsp/visibility.tsp +++ b/packages/http-client-java/generator/http-client-generator-test/tsp/visibility.tsp @@ -5,6 +5,10 @@ using TypeSpec.Http; using Azure.ClientGenerator.Core; @service(#{ title: "Visibility" }) +@client({ + service: TspTest.Visibility, + name: "VisibilityClient", +}) namespace TspTest.Visibility; model Dog { @@ -51,6 +55,7 @@ interface VisibilityWrite { }; } +@operationGroup @route("/visibility") interface VisibilityOp extends VisibilityRead, VisibilityWrite { @post diff --git a/packages/http-client-java/package-lock.json b/packages/http-client-java/package-lock.json index bd7083c6333..9173d32e1c5 100644 --- a/packages/http-client-java/package-lock.json +++ b/packages/http-client-java/package-lock.json @@ -11,53 +11,53 @@ "dependencies": { "@autorest/codemodel": "~4.20.1", "js-yaml": "~4.1.1", - "lodash": "~4.17.23" + "lodash": "~4.18.1" }, "devDependencies": { - "@azure-tools/typespec-autorest": "0.65.0", - "@azure-tools/typespec-azure-core": "0.65.0", - "@azure-tools/typespec-azure-resource-manager": "0.65.0", - "@azure-tools/typespec-azure-rulesets": "0.65.0", - "@azure-tools/typespec-client-generator-core": "0.65.4", - "@microsoft/api-extractor": "^7.57.6", - "@microsoft/api-extractor-model": "^7.33.4", + "@azure-tools/typespec-autorest": "0.66.2", + "@azure-tools/typespec-azure-core": "0.66.1", + "@azure-tools/typespec-azure-resource-manager": "0.66.1", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-core": "0.66.4", + "@microsoft/api-extractor": "^7.58.0", + "@microsoft/api-extractor-model": "^7.33.5", "@types/js-yaml": "~4.0.9", "@types/lodash": "~4.17.24", - "@types/node": "~25.3.5", - "@typespec/compiler": "1.9.0", - "@typespec/events": "0.79.0", - "@typespec/http": "1.9.1", - "@typespec/openapi": "1.9.0", - "@typespec/rest": "0.79.0", - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/sse": "0.79.0", - "@typespec/streams": "0.79.0", - "@typespec/versioning": "0.79.0", - "@typespec/xml": "0.79.0", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", + "@types/node": "~25.5.0", + "@typespec/compiler": "1.10.0", + "@typespec/events": "0.80.0", + "@typespec/http": "1.10.0", + "@typespec/openapi": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/sse": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "@vitest/coverage-v8": "^4.1.2", + "@vitest/ui": "^4.1.2", "c8": "~11.0.0", "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "typescript": "~6.0.2", + "vitest": "^4.1.2" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-autorest": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-core": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-resource-manager": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.65.4 <1.0.0", - "@typespec/compiler": "^1.9.0", - "@typespec/events": ">=0.79.0 <1.0.0", - "@typespec/http": "^1.9.1", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": ">=0.79.0 <1.0.0", - "@typespec/sse": ">=0.79.0 <1.0.0", - "@typespec/streams": ">=0.79.0 <1.0.0", - "@typespec/versioning": ">=0.79.0 <1.0.0", - "@typespec/xml": ">=0.79.0 <1.0.0" + "@azure-tools/typespec-autorest": ">=0.66.2 <1.0.0", + "@azure-tools/typespec-azure-core": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-azure-resource-manager": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.66.4 <1.0.0", + "@typespec/compiler": "^1.10.0", + "@typespec/events": ">=0.80.0 <1.0.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": ">=0.80.0 <1.0.0", + "@typespec/sse": ">=0.80.0 <1.0.0", + "@typespec/streams": ">=0.80.0 <1.0.0", + "@typespec/versioning": ">=0.80.0 <1.0.0", + "@typespec/xml": ">=0.80.0 <1.0.0" } }, "node_modules/@autorest/codemodel": { @@ -110,24 +110,24 @@ } }, "node_modules/@azure-tools/typespec-autorest": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.65.0.tgz", - "integrity": "sha512-R8pZt7rYdA2Hr3nck93OGapkQZe3MSzoYq4PgRtsGDHcvA5Qp7RBQMF/tP5DEcFWDDm+unoQeDpbD02POb/LTA==", + "version": "0.66.2", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.66.2.tgz", + "integrity": "sha512-KPloSDZvY7c2PkDCGeWPoWJ3NL+0n5GPQKiospILLE5pCof6g5a20NM8mJLqTE+NMgzbNzgoYE5wXEFFpe3A+A==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@azure-tools/typespec-azure-resource-manager": "^0.65.0", - "@azure-tools/typespec-client-generator-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/versioning": "^0.79.0", - "@typespec/xml": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.1", + "@azure-tools/typespec-azure-resource-manager": "^0.66.1", + "@azure-tools/typespec-client-generator-core": "^0.66.4", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" }, "peerDependenciesMeta": { "@typespec/xml": { @@ -136,24 +136,24 @@ } }, "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.65.0.tgz", - "integrity": "sha512-dYgHtt0CY0Q9AimdIsMV41jHKLmAT4r++TLwyxAHRbxdiRG+Sll1UKJzOIIoq45Bq64wCfEltu5OOnyPA01/sQ==", + "version": "0.66.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.66.1.tgz", + "integrity": "sha512-i8lMegL4s0I6xQT61zIIhmN1aA6iYFoH+7owSl/msOD0yVWx3Khf3ETULX53yHFd7OoUDAjmFx7+8j9atWXzHQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0" } }, "node_modules/@azure-tools/typespec-azure-resource-manager": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.65.0.tgz", - "integrity": "sha512-3rvyGDIYSqraZ7jHfq5Bfet8u3ZeERWJWhwWMNvbShnrS/vVR3iuu/1z2M0p5mTRFuwUaSMlL/dbtBp1YqgGAg==", + "version": "0.66.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.66.1.tgz", + "integrity": "sha512-LExgmD3oK7iaX0bIdQsoxBYLCMKwPPBHYmLMhNW/GseMF1Dqi1Ne/VP7rmMP0dhrZNFh22LaZI2lTyCKm08DFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -164,34 +164,34 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/versioning": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.1", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0" } }, "node_modules/@azure-tools/typespec-azure-rulesets": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.65.0.tgz", - "integrity": "sha512-oGuCw61uU9fUASog/1iD1rGeGhcKgnAuyBWA63wRcMMrcW1ZqUK2xvjV1XJuoYRlMxU8HpQShFcvsj715pNVLQ==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.66.0.tgz", + "integrity": "sha512-Wf0SpphmKDDzHgaqpxl68DpP65VUWjpD3mrnZ3Lw4Pdtt8BcZf7+LKgFF06gPRnh15hR0VbjAERCzxI/qGY4ag==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@azure-tools/typespec-azure-resource-manager": "^0.65.0", - "@azure-tools/typespec-client-generator-core": "^0.65.0", - "@typespec/compiler": "^1.9.0" + "@azure-tools/typespec-azure-core": "^0.66.0", + "@azure-tools/typespec-azure-resource-manager": "^0.66.0", + "@azure-tools/typespec-client-generator-core": "^0.66.1", + "@typespec/compiler": "^1.10.0" } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.65.4", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.65.4.tgz", - "integrity": "sha512-p+MZU/nEmU3ciLEuNbqQtAybPxUKo/fKeKT9feh+tZLVpDDFO5DTefYoN4cteZQkPu/xyzxhjeUnKKvyVQxd6A==", + "version": "0.66.4", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.66.4.tgz", + "integrity": "sha512-KRMWLvojku2qFnPpUiZNTa/nm49IjSsGVhPmFhQ5a01KwI2T7zT+Ga39/xLTLHHT4aIgBaMWxD4ioZa2ZhbEKw==", "dev": true, "license": "MIT", "dependencies": { @@ -203,16 +203,16 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/events": "^0.79.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/sse": "^0.79.0", - "@typespec/streams": "^0.79.0", - "@typespec/versioning": "^0.79.0", - "@typespec/xml": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.1", + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/sse": "^0.80.0", + "@typespec/streams": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" } }, "node_modules/@azure/abort-controller": { @@ -309,9 +309,9 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", - "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", + "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -320,7 +320,7 @@ "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.0", + "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" }, "engines": { @@ -407,22 +407,22 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.28.2.tgz", - "integrity": "sha512-6vYUMvs6kJxJgxaCmHn/F8VxjLHNh7i9wzfwPGf8kyBJ8Gg2yvBXx175Uev8LdrD1F5C4o7qHa2CC4IrhGE1XQ==", + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.29.0.tgz", + "integrity": "sha512-/f3eHkSNUTl6DLQHm+bKecjBKcRQxbd/XLx8lvSYp8Nl/HRyPuIPOijt9Dt0sH50/SxOwQ62RnFCmFlGK+bR/w==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.14.2" + "@azure/msal-common": "15.15.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.14.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.14.2.tgz", - "integrity": "sha512-n8RBJEUmd5QotoqbZfd+eGBkzuFI1KX6jw2b3WcpSyGjwmzoeI/Jb99opIBPHpb8y312NB+B6+FGi2ZVSR8yfA==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.15.0.tgz", + "integrity": "sha512-/n+bN0AKlVa+AOcETkJSKj38+bvFs78BaP4rNtv3MJCmPH0YrHiskMRe74OhyZ5DZjGISlFyxqvf9/4QVEi2tw==", "dev": true, "license": "MIT", "engines": { @@ -430,13 +430,13 @@ } }, "node_modules/@azure/msal-node": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.7.tgz", - "integrity": "sha512-a+Xnrae+uwLnlw68bplS1X4kuJ9F/7K6afuMFyRkNIskhjgDezl5Fhrx+1pmAlDmC0VaaAxjRQMp1OmcqVwkIg==", + "version": "3.8.8", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.8.tgz", + "integrity": "sha512-+f1VrJH1iI517t4zgmuhqORja0bL6LDQXfBqkjuMmfTYXTQQnh1EvwwxO3UbKLT05N0obF72SRHFrC1RBDv5Gg==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.14.2", + "@azure/msal-common": "15.15.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -445,9 +445,9 @@ } }, "node_modules/@azure/storage-blob": { - "version": "12.30.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.30.0.tgz", - "integrity": "sha512-peDCR8blSqhsAKDbpSP/o55S4sheNwSrblvCaHUZ5xUI73XA7ieUGGwrONgD/Fng0EoDe1VOa3fAQ7+WGB3Ocg==", + "version": "12.31.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.31.0.tgz", + "integrity": "sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg==", "dev": true, "license": "MIT", "dependencies": { @@ -462,7 +462,7 @@ "@azure/core-util": "^1.11.0", "@azure/core-xml": "^1.4.5", "@azure/logger": "^1.1.4", - "@azure/storage-common": "^12.2.0", + "@azure/storage-common": "^12.3.0", "events": "^3.0.0", "tslib": "^2.8.1" }, @@ -492,9 +492,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", - "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { @@ -527,485 +527,80 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.5" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, "engines": { - "node": ">=18" + "node": ">=6.0.0" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], + "node_modules/@emnapi/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", + "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "peer": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], + "node_modules/@emnapi/runtime": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", + "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "peer": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "peer": true, + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@inquirer/ansi": { @@ -1488,43 +1083,50 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.57.6", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.6.tgz", - "integrity": "sha512-0rFv/D8Grzw1Mjs2+8NGUR+o4h9LVm5zKRtMeWnpdB5IMJF4TeHCL1zR5LMCIudkOvyvjbhMG5Wjs0B5nqsrRQ==", + "version": "7.58.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.58.0.tgz", + "integrity": "sha512-XcHlDylX5GblbGbs1eBoexjVyvdJMioTPuBCgCorE2rqijzTYxi6eudXyez3xACRxtH9aDtahoL9fYM4XTvQmg==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/api-extractor-model": "7.33.4", + "@microsoft/api-extractor-model": "7.33.5", "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.1", - "@rushstack/node-core-library": "5.20.3", + "@rushstack/node-core-library": "5.21.0", "@rushstack/rig-package": "0.7.2", - "@rushstack/terminal": "0.22.3", - "@rushstack/ts-command-line": "5.3.3", + "@rushstack/terminal": "0.22.4", + "@rushstack/ts-command-line": "5.3.4", "diff": "~8.0.2", "lodash": "~4.17.23", - "minimatch": "10.2.1", + "minimatch": "10.2.3", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", - "typescript": "5.8.2" + "typescript": "5.9.3" }, "bin": { "api-extractor": "bin/api-extractor" } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.33.4", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.4.tgz", - "integrity": "sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==", + "version": "7.33.5", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.5.tgz", + "integrity": "sha512-Xh4dXuusndVQqVz4nEN9xOp0DyzsKxeD2FFJkSPg4arAjDSKPcy6cAc7CaeBPA7kF2wV1fuDlo2p/bNMpVr8yg==", "dev": true, "license": "MIT", "dependencies": { "@microsoft/tsdoc": "~0.16.0", "@microsoft/tsdoc-config": "~0.18.1", - "@rushstack/node-core-library": "5.20.3" + "@rushstack/node-core-library": "5.21.0" } }, + "node_modules/@microsoft/api-extractor/node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1553,9 +1155,9 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1586,6 +1188,25 @@ "resolve": "~1.22.2" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.2.tgz", + "integrity": "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1624,6 +1245,16 @@ "node": ">= 8" } }, + "node_modules/@oxc-project/types": { + "version": "0.122.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.122.0.tgz", + "integrity": "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", @@ -1631,24 +1262,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", - "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", - "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==", "cpu": [ "arm64" ], @@ -1657,12 +1274,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", - "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==", "cpu": [ "arm64" ], @@ -1671,12 +1291,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", - "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.12.tgz", + "integrity": "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==", "cpu": [ "x64" ], @@ -1685,26 +1308,15 @@ "optional": true, "os": [ "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", - "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", - "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.12.tgz", + "integrity": "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==", "cpu": [ "x64" ], @@ -1713,26 +1325,15 @@ "optional": true, "os": [ "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", - "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", - "cpu": [ - "arm" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", - "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.12.tgz", + "integrity": "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==", "cpu": [ "arm" ], @@ -1741,26 +1342,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", - "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", - "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==", "cpu": [ "arm64" ], @@ -1769,54 +1359,32 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", - "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", - "cpu": [ - "loong64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", - "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.12.tgz", + "integrity": "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==", "cpu": [ - "loong64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", - "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", - "cpu": [ - "ppc64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", - "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==", "cpu": [ "ppc64" ], @@ -1825,40 +1393,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", - "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", - "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", - "cpu": [ - "riscv64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", - "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==", "cpu": [ "s390x" ], @@ -1867,12 +1410,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", - "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==", "cpu": [ "x64" ], @@ -1881,12 +1427,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", - "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.12.tgz", + "integrity": "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==", "cpu": [ "x64" ], @@ -1895,26 +1444,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", - "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", - "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==", "cpu": [ "arm64" ], @@ -1923,40 +1461,49 @@ "optional": true, "os": [ "openharmony" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", - "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.12.tgz", + "integrity": "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==", "cpu": [ - "arm64" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", - "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.12.tgz", + "integrity": "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==", "cpu": [ - "ia32" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", - "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.12.tgz", + "integrity": "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==", "cpu": [ "x64" ], @@ -1965,26 +1512,22 @@ "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", - "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", - "cpu": [ - "x64" ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.12.tgz", + "integrity": "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "MIT" }, "node_modules/@rushstack/node-core-library": { - "version": "5.20.3", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", - "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.21.0.tgz", + "integrity": "sha512-LFzN+1lyWROit/P8Md6yxAth7lLYKn37oCKJHirEE2TQB25NDUM7bALf0ar+JAtwFfRCH+D+DGOA7DAzIi2r+g==", "dev": true, "license": "MIT", "dependencies": { @@ -2062,13 +1605,13 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.22.3", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", - "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", + "version": "0.22.4", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.4.tgz", + "integrity": "sha512-fhtLjnXCc/4WleVbVl6aoc7jcWnU6yqjS1S8WoaNREG3ycu/viZ9R/9QM7Y/b4CDvcXoiDyMNIay7JMwBptM3g==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.20.3", + "@rushstack/node-core-library": "5.21.0", "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, @@ -2082,13 +1625,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", - "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.4.tgz", + "integrity": "sha512-MLkVKVEN6/2clKTrjN2B2KqKCuPxRwnNsWY7a+FCAq2EMdkj10cM8YgiBSMeGFfzM0mDMzargpHNnNzaBi9Whg==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.22.3", + "@rushstack/terminal": "0.22.4", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -2124,6 +1667,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/argparse": { "version": "1.0.38", "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", @@ -2176,34 +1730,34 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~7.18.0" } }, - "node_modules/@types/node/node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", "dev": true, "license": "MIT" }, "node_modules/@typespec/compiler": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.9.0.tgz", - "integrity": "sha512-Rz9fFWQSTJSnhBfZvtA/bDIuO82fknYdtyMsL9lZNJE82rquC6JByHPFsnbGH1VXA0HhMj9L7Oqyp3f0m/BTOA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.10.0.tgz", + "integrity": "sha512-R6BATDkughntPpaxeESJF+wxma5PEjgmnnKvH0/ByqUH8VyhIckQWE9kkP0Uc/EJ0o0VYhe8qCwWQvV70k5lTw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.28.6", + "@babel/code-frame": "~7.29.0", "@inquirer/prompts": "^8.0.1", - "ajv": "~8.17.1", + "ajv": "~8.18.0", "change-case": "~5.4.4", - "env-paths": "^3.0.0", + "env-paths": "^4.0.0", "globby": "~16.1.0", "is-unicode-supported": "^2.1.0", "mustache": "~4.2.0", @@ -2225,22 +1779,6 @@ "node": ">=20.0.0" } }, - "node_modules/@typespec/compiler/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@typespec/compiler/node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", @@ -2370,30 +1908,30 @@ } }, "node_modules/@typespec/events": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.79.0.tgz", - "integrity": "sha512-41R2jA7k21uMArjyUdvnqYzVnPPaSEcGi40dLMiRVP79m6XgnD3INuTdlMblaS1i+5jJ1BtS1o4QhBBuS/5/qg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.80.0.tgz", + "integrity": "sha512-FrWEUwxhDNbE2YN4fyqV5Qrz9qFJbvPoiKrJM7dexkb7eyhepq3dbc5zZgAm/qFBQ+XxGQQVJ4swXxKT+338fw==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/http": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.9.1.tgz", - "integrity": "sha512-agcwmbB/hK/o9KmM38UB8OGZwLgB17lJ7b4EjqYGpyshqcRMTESMRxnJIH7rRzUq4HJDTqal0tsb8z0K0zXuDg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.10.0.tgz", + "integrity": "sha512-/fj55fmUj4m/FmNdfH0V52menVrmS2r5Xj9d1H+pnjQbxvvaxS906RSRcoF8kbg3PvlibP/Py5u82TAk53AyqA==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/streams": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/streams": "^0.80.0" }, "peerDependenciesMeta": { "@typespec/streams": { @@ -2402,37 +1940,37 @@ } }, "node_modules/@typespec/openapi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.9.0.tgz", - "integrity": "sha512-5ieXCWRLcyFLv3IFk26ena/RW/NxvT5KiHaoNVFRd79J0XZjFcE0Od6Lxxqj4dWmCo3C8oKtOwFoQuie18G3lQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.10.0.tgz", + "integrity": "sha512-tukmyp+c9CFlA2FdF61XfT9eTe5WXWz6J8pOrJ9+IYg0BcBwhJkvDj6BYpDD6SjxbRr1wO5ZL2Whe6MequsyVw==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" } }, "node_modules/@typespec/rest": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.79.0.tgz", - "integrity": "sha512-6QIX7oaUGy/z4rseUrC86LjHxZn8rAAY4fXvGnlPRce6GhEdTb9S9OQPmlPeWngXwCx/07P2+FCR915APqmZxg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.80.0.tgz", + "integrity": "sha512-xczXLoB2akSIDner41gQYTS9CG6TdCN0QHYvXBT6ZrYEnBh+pMvdymW//5CSOTamZLOGo9AOJVJaFfwbFA4vQQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" } }, "node_modules/@typespec/spec-api": { - "version": "0.1.0-alpha.12", - "resolved": "https://registry.npmjs.org/@typespec/spec-api/-/spec-api-0.1.0-alpha.12.tgz", - "integrity": "sha512-cAJ1vj6qk2Vw5g1uesohBItA6fl8KqrTRIwj0DdpPaBtQeaUS7yRJZgGQQz/JLeqDj2B+8z2pooLuvEBtnS+jA==", + "version": "0.1.0-alpha.13", + "resolved": "https://registry.npmjs.org/@typespec/spec-api/-/spec-api-0.1.0-alpha.13.tgz", + "integrity": "sha512-ed0qqGM92vKuangmENUYMeDQZpSlsEMYdeH7+wMl+bIgXzfZ7yv07fNwcmROzSEJd0CzdCTgz+Hp+ifmR4USNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2445,45 +1983,47 @@ } }, "node_modules/@typespec/spec-coverage-sdk": { - "version": "0.1.0-alpha.15", - "resolved": "https://registry.npmjs.org/@typespec/spec-coverage-sdk/-/spec-coverage-sdk-0.1.0-alpha.15.tgz", - "integrity": "sha512-Y7SxNBEouGBlMIw5nD+skCYX8FkM2v1CxW79VjqX+iigJQsh2ML0F/G1Zh551l2Dr7zuMv+0qiPrmOC5v3yEgQ==", + "version": "0.1.0-alpha.16", + "resolved": "https://registry.npmjs.org/@typespec/spec-coverage-sdk/-/spec-coverage-sdk-0.1.0-alpha.16.tgz", + "integrity": "sha512-qwSnuE+CXjv4mn2uhioTVlaO4GjypR4ZtbkSoLmWA677ggYmoAjIDpyNgT1tjsc1lDKVtSiPvGhM9XFKExVmbQ==", "dev": true, "license": "MIT", "dependencies": { "@azure/identity": "~4.13.0", - "@azure/storage-blob": "~12.30.0", - "@types/node": "~25.0.2" + "@azure/storage-blob": "~12.31.0", + "@types/node": "~25.3.0", + "@types/semver": "^7.5.8", + "semver": "^7.7.1" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@typespec/spec-coverage-sdk/node_modules/@types/node": { - "version": "25.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", - "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@typespec/spector": { - "version": "0.1.0-alpha.23", - "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.23.tgz", - "integrity": "sha512-z5ORR/HnaLKYcTL2a73sUfC4LmuOqlCRmSPF8h5NtUNDpER3s4aLlFu4DgcaVYTgHruiBLMkLyHpfNPxKDzY7g==", + "version": "0.1.0-alpha.24", + "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.24.tgz", + "integrity": "sha512-POUSFunRZ4UbPEs+YLz0vE9tDoc6chQ/61moyiWO/k4hD2R1KTH0qlRHhuKW8/Y2wa8Jbuex39Ft/O3reHZSTQ==", "dev": true, "license": "MIT", "dependencies": { "@azure/identity": "~4.13.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/spec-api": "^0.1.0-alpha.12", - "@typespec/spec-coverage-sdk": "^0.1.0-alpha.15", - "@typespec/versioning": "^0.79.0", - "ajv": "~8.17.1", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/spec-api": "^0.1.0-alpha.13", + "@typespec/spec-coverage-sdk": "^0.1.0-alpha.16", + "@typespec/versioning": "^0.80.0", + "ajv": "~8.18.0", "body-parser": "^2.2.0", "deep-equal": "^2.2.0", "express": "^5.2.1", @@ -2504,23 +2044,6 @@ "node": ">=16.0.0" } }, - "node_modules/@typespec/spector/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@typespec/spector/node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", @@ -2650,38 +2173,38 @@ } }, "node_modules/@typespec/sse": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.79.0.tgz", - "integrity": "sha512-YQYlDWCNBza75S360jc51emwntWXMZfkvqXKng+etKP4iCuogJfTX1J8h1yd8tZwkuUNBcklEPCuz3O/+psopg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.80.0.tgz", + "integrity": "sha512-/lxYgMaxgEcjBVhep9tf/VnFD2wnkZlkmjUHLeZL8Cuf+qip61Ren6Ml91YtNnnIFYsuuymDzRclrA073ZBR6Q==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/events": "^0.79.0", - "@typespec/http": "^1.9.0", - "@typespec/streams": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/streams": "^0.80.0" } }, "node_modules/@typespec/streams": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.79.0.tgz", - "integrity": "sha512-nOXpLcEYNdWvLY/6WJ16rD6hGs7bKSmkH+WwgyVwdRON5KJ559quw56pns2DSANw+NaV0lJxJq/8ek5xKCGD6g==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.80.0.tgz", + "integrity": "sha512-lNvzrvX/ZRIxRpxIBZu90XNsT+uWsMbLtxHd9edspHAiID3c9WKZbl2fnLcPqdR/60odqKve4yGzB9gF58GUDQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.3.tgz", - "integrity": "sha512-91fp6CAAJSRtH5ja95T1FHSKa8aPW9/Zw6cta81jlZTUw/+Vq8jM/AfF/14h2b71wwR84JUTW/3Y8QPhDAawFA==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.4.tgz", + "integrity": "sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2694,55 +2217,55 @@ } }, "node_modules/@typespec/versioning": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.79.0.tgz", - "integrity": "sha512-mk65zpKNm+ARyHASnre/lp3o3FKzb0P8Nj96ji182JUy7ShrVCCF0u+bC+ZXQ8ZTRza1d0xBjRC/Xr4iM+Uwag==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.80.0.tgz", + "integrity": "sha512-WQCT0jN2lSRfwOy+Cd1KUYzenpKR5TdoX0uW6zQdvxQ9nQZIXoaSaReh9/ldhmSV4xv3p2dqF9oq1cdbVGfJTg==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/xml": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.79.0.tgz", - "integrity": "sha512-BqbbtkL9xuiAhehHKKUCMtRg0a1vjSvoiAOanvTIuoFq3N8PbKVV3dKTcyI/oS3iCCkJErdu11HQcAoD/VsIsA==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.80.0.tgz", + "integrity": "sha512-Qfy5eyCcOF3xYOU/dejhpmmeY75U1Q9C8XBE+GvSZ3lakRfKBIpT+X6Q07qmKSAbGYJZKYLWCIAy/dgCuu/OAA==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@vitest/coverage-v8": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz", - "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.2.tgz", + "integrity": "sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.0.18", - "ast-v8-to-istanbul": "^0.3.10", + "@vitest/utils": "4.1.2", + "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", - "magicast": "^0.5.1", + "magicast": "^0.5.2", "obug": "^2.1.1", - "std-env": "^3.10.0", - "tinyrainbow": "^3.0.3" + "std-env": "^4.0.0-rc.1", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.0.18", - "vitest": "4.0.18" + "@vitest/browser": "4.1.2", + "vitest": "4.1.2" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -2751,31 +2274,31 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz", + "integrity": "sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==", "dev": true, "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", + "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", - "tinyrainbow": "^3.0.3" + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz", + "integrity": "sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.18", + "@vitest/spy": "4.1.2", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -2784,7 +2307,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "msw": { @@ -2796,26 +2319,26 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", + "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz", + "integrity": "sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", + "@vitest/utils": "4.1.2", "pathe": "^2.0.3" }, "funding": { @@ -2823,13 +2346,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz", + "integrity": "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", + "@vitest/pretty-format": "4.1.2", + "@vitest/utils": "4.1.2", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -2838,9 +2362,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz", + "integrity": "sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==", "dev": true, "license": "MIT", "funding": { @@ -2848,36 +2372,37 @@ } }, "node_modules/@vitest/ui": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.18.tgz", - "integrity": "sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.1.2.tgz", + "integrity": "sha512-/irhyeAcKS2u6Zokagf9tqZJ0t8S6kMZq4ZG9BHZv7I+fkRrYfQX4w7geYeC2r6obThz39PDxvXQzZX+qXqGeg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", + "@vitest/utils": "4.1.2", "fflate": "^0.8.2", - "flatted": "^3.3.3", + "flatted": "^3.4.2", "pathe": "^2.0.3", "sirv": "^3.0.2", "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3" + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "4.0.18" + "vitest": "4.1.2" } }, "node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz", + "integrity": "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" + "@vitest/pretty-format": "4.1.2", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -3042,21 +2567,21 @@ } }, "node_modules/ast-v8-to-istanbul": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.10.tgz", - "integrity": "sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.0.tgz", + "integrity": "sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", - "js-tokens": "^9.0.1" + "js-tokens": "^10.0.0" } }, "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, "license": "MIT" }, @@ -3571,10 +3096,20 @@ "node": ">= 0.8" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/diff": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", - "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3630,13 +3165,16 @@ } }, "node_modules/env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", "dev": true, "license": "MIT", + "dependencies": { + "is-safe-filename": "^0.1.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3684,9 +3222,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, "license": "MIT" }, @@ -3703,48 +3241,6 @@ "node": ">= 0.4" } }, - "node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" - } - }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -3874,10 +3370,26 @@ "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", "dev": true }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, "node_modules/fast-xml-parser": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.6.tgz", - "integrity": "sha512-QNI3sAvSvaOiaMl8FYU4trnEzCwiRr8XMWgAHzlrWpTSj+QaCSvOf1h82OEP1s4hiAXhnbXSyFWCf4ldZzZRVA==", + "version": "5.5.9", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.9.tgz", + "integrity": "sha512-jldvxr1MC6rtiZKgrFnDSvT8xuH+eJqxqOBThUVjYrxssYTo1avZLGql5l0a0BAERR01CadYzZ83kVEkbyDg+g==", "dev": true, "funding": [ { @@ -3887,7 +3399,9 @@ ], "license": "MIT", "dependencies": { - "strnum": "^2.1.2" + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.0", + "strnum": "^2.2.2" }, "bin": { "fxparser": "src/cli/cli.js" @@ -3962,9 +3476,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -4162,22 +3676,6 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/globby": { "version": "16.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.0.tgz", @@ -4678,6 +4176,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-safe-filename": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", + "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -4786,9 +4297,9 @@ } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -4847,112 +4358,373 @@ "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jsonwebtoken": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", - "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "jws": "^4.0.1", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12", - "npm": ">=6" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/locate-path": { @@ -4971,9 +4743,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash.includes": { @@ -5046,14 +4818,14 @@ } }, "node_modules/magicast": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", - "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, @@ -5157,31 +4929,21 @@ } }, "node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", @@ -5205,19 +4967,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/morgan": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", @@ -5283,22 +5032,23 @@ "license": "MIT" }, "node_modules/multer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", - "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", "dev": true, "license": "MIT", "dependencies": { "append-field": "^1.0.0", "busboy": "^1.6.0", "concat-stream": "^2.0.0", - "mkdirp": "^0.5.6", - "object-assign": "^4.1.1", - "type-is": "^1.6.18", - "xtend": "^4.0.2" + "type-is": "^1.6.18" }, "engines": { "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/multer/node_modules/media-typer": { @@ -5396,16 +5146,6 @@ "node": ">= 0.6" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -5586,6 +5326,22 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", + "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -5678,9 +5434,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "dev": true, "funding": [ { @@ -5750,9 +5506,9 @@ } }, "node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5927,49 +5683,38 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rollup": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", - "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", + "node_modules/rolldown": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.12.tgz", + "integrity": "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@oxc-project/types": "=0.122.0", + "@rolldown/pluginutils": "1.0.0-rc.12" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.56.0", - "@rollup/rollup-android-arm64": "4.56.0", - "@rollup/rollup-darwin-arm64": "4.56.0", - "@rollup/rollup-darwin-x64": "4.56.0", - "@rollup/rollup-freebsd-arm64": "4.56.0", - "@rollup/rollup-freebsd-x64": "4.56.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", - "@rollup/rollup-linux-arm-musleabihf": "4.56.0", - "@rollup/rollup-linux-arm64-gnu": "4.56.0", - "@rollup/rollup-linux-arm64-musl": "4.56.0", - "@rollup/rollup-linux-loong64-gnu": "4.56.0", - "@rollup/rollup-linux-loong64-musl": "4.56.0", - "@rollup/rollup-linux-ppc64-gnu": "4.56.0", - "@rollup/rollup-linux-ppc64-musl": "4.56.0", - "@rollup/rollup-linux-riscv64-gnu": "4.56.0", - "@rollup/rollup-linux-riscv64-musl": "4.56.0", - "@rollup/rollup-linux-s390x-gnu": "4.56.0", - "@rollup/rollup-linux-x64-gnu": "4.56.0", - "@rollup/rollup-linux-x64-musl": "4.56.0", - "@rollup/rollup-openbsd-x64": "4.56.0", - "@rollup/rollup-openharmony-arm64": "4.56.0", - "@rollup/rollup-win32-arm64-msvc": "4.56.0", - "@rollup/rollup-win32-ia32-msvc": "4.56.0", - "@rollup/rollup-win32-x64-gnu": "4.56.0", - "@rollup/rollup-win32-x64-msvc": "4.56.0", - "fsevents": "~2.3.2" + "@rolldown/binding-android-arm64": "1.0.0-rc.12", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", + "@rolldown/binding-darwin-x64": "1.0.0-rc.12", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" } }, "node_modules/router": { @@ -6073,9 +5818,9 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz", + "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -6383,9 +6128,9 @@ } }, "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", "dev": true, "license": "MIT" }, @@ -6472,9 +6217,9 @@ } }, "node_modules/strnum": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", - "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", + "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", "dev": true, "funding": [ { @@ -6514,9 +6259,9 @@ } }, "node_modules/tar": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", - "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6596,9 +6341,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "dev": true, "license": "MIT", "engines": { @@ -6641,9 +6386,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -6654,9 +6399,9 @@ } }, "node_modules/tinyrainbow": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", - "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { @@ -6726,9 +6471,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6740,9 +6485,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, @@ -6821,17 +6566,16 @@ } }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.3.tgz", + "integrity": "sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.12", "tinyglobby": "^0.2.15" }, "bin": { @@ -6848,9 +6592,10 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -6863,13 +6608,16 @@ "@types/node": { "optional": true }, - "jiti": { + "@vitejs/devtools": { "optional": true }, - "less": { + "esbuild": { + "optional": true + }, + "jiti": { "optional": true }, - "lightningcss": { + "less": { "optional": true }, "sass": { @@ -6895,28 +6643,10 @@ } } }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -6927,31 +6657,31 @@ } }, "node_modules/vitest": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", - "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz", + "integrity": "sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.0.18", - "@vitest/mocker": "4.0.18", - "@vitest/pretty-format": "4.0.18", - "@vitest/runner": "4.0.18", - "@vitest/snapshot": "4.0.18", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "es-module-lexer": "^1.7.0", - "expect-type": "^1.2.2", + "@vitest/expect": "4.1.2", + "@vitest/mocker": "4.1.2", + "@vitest/pretty-format": "4.1.2", + "@vitest/runner": "4.1.2", + "@vitest/snapshot": "4.1.2", + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", - "std-env": "^3.10.0", + "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "bin": { @@ -6967,12 +6697,13 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.18", - "@vitest/browser-preview": "4.0.18", - "@vitest/browser-webdriverio": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/browser-playwright": "4.1.2", + "@vitest/browser-preview": "4.1.2", + "@vitest/browser-webdriverio": "4.1.2", + "@vitest/ui": "4.1.2", "happy-dom": "*", - "jsdom": "*" + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { @@ -7001,13 +6732,16 @@ }, "jsdom": { "optional": true + }, + "vite": { + "optional": false } } }, "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7116,9 +6850,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -7218,16 +6952,6 @@ "node": ">=4.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/packages/http-client-java/package.json b/packages/http-client-java/package.json index 69dd28c11cc..95d41f8803c 100644 --- a/packages/http-client-java/package.json +++ b/packages/http-client-java/package.json @@ -49,51 +49,51 @@ "generator/http-client-generator/target/classes/PerfAutomation.jfc" ], "peerDependencies": { - "@azure-tools/typespec-autorest": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-core": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-resource-manager": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.65.4 <1.0.0", - "@typespec/compiler": "^1.9.0", - "@typespec/events": ">=0.79.0 <1.0.0", - "@typespec/http": "^1.9.1", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": ">=0.79.0 <1.0.0", - "@typespec/sse": ">=0.79.0 <1.0.0", - "@typespec/streams": ">=0.79.0 <1.0.0", - "@typespec/versioning": ">=0.79.0 <1.0.0", - "@typespec/xml": ">=0.79.0 <1.0.0" + "@azure-tools/typespec-autorest": ">=0.66.2 <1.0.0", + "@azure-tools/typespec-azure-core": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-azure-resource-manager": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.66.4 <1.0.0", + "@typespec/compiler": "^1.10.0", + "@typespec/events": ">=0.80.0 <1.0.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": ">=0.80.0 <1.0.0", + "@typespec/sse": ">=0.80.0 <1.0.0", + "@typespec/streams": ">=0.80.0 <1.0.0", + "@typespec/versioning": ">=0.80.0 <1.0.0", + "@typespec/xml": ">=0.80.0 <1.0.0" }, "dependencies": { "@autorest/codemodel": "~4.20.1", "js-yaml": "~4.1.1", - "lodash": "~4.17.23" + "lodash": "~4.18.1" }, "devDependencies": { - "@azure-tools/typespec-autorest": "0.65.0", - "@azure-tools/typespec-azure-core": "0.65.0", - "@azure-tools/typespec-azure-resource-manager": "0.65.0", - "@azure-tools/typespec-azure-rulesets": "0.65.0", - "@azure-tools/typespec-client-generator-core": "0.65.4", - "@microsoft/api-extractor": "^7.57.6", - "@microsoft/api-extractor-model": "^7.33.4", + "@azure-tools/typespec-autorest": "0.66.2", + "@azure-tools/typespec-azure-core": "0.66.1", + "@azure-tools/typespec-azure-resource-manager": "0.66.1", + "@azure-tools/typespec-azure-rulesets": "0.66.0", + "@azure-tools/typespec-client-generator-core": "0.66.4", + "@microsoft/api-extractor": "^7.58.0", + "@microsoft/api-extractor-model": "^7.33.5", "@types/js-yaml": "~4.0.9", "@types/lodash": "~4.17.24", - "@types/node": "~25.3.5", - "@typespec/compiler": "1.9.0", - "@typespec/events": "0.79.0", - "@typespec/http": "1.9.1", - "@typespec/openapi": "1.9.0", - "@typespec/rest": "0.79.0", - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/sse": "0.79.0", - "@typespec/streams": "0.79.0", - "@typespec/versioning": "0.79.0", - "@typespec/xml": "0.79.0", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", + "@types/node": "~25.5.0", + "@typespec/compiler": "1.10.0", + "@typespec/events": "0.80.0", + "@typespec/http": "1.10.0", + "@typespec/openapi": "1.10.0", + "@typespec/rest": "0.80.0", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/sse": "0.80.0", + "@typespec/streams": "0.80.0", + "@typespec/versioning": "0.80.0", + "@typespec/xml": "0.80.0", + "@vitest/coverage-v8": "^4.1.2", + "@vitest/ui": "^4.1.2", "c8": "~11.0.0", "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "typescript": "~6.0.2", + "vitest": "^4.1.2" } } diff --git a/packages/http-client-js/package.json b/packages/http-client-js/package.json index 5e21f1ce6ab..37465bbff50 100644 --- a/packages/http-client-js/package.json +++ b/packages/http-client-js/package.json @@ -53,36 +53,36 @@ "@typespec/rest": "workspace:^" }, "dependencies": { - "@alloy-js/core": "^0.22.0", - "@alloy-js/typescript": "^0.22.0", + "@alloy-js/core": "catalog:", + "@alloy-js/typescript": "catalog:", "@typespec/emitter-framework": "workspace:^", "@typespec/http-client": "workspace:^", - "prettier": "~3.8.0" + "prettier": "catalog:" }, "devDependencies": { - "@alloy-js/cli": "^0.22.0", - "@alloy-js/rollup-plugin": "^0.1.0", - "@types/yargs": "~17.0.33", + "@alloy-js/cli": "catalog:", + "@alloy-js/rollup-plugin": "catalog:", + "@types/yargs": "catalog:", "@typespec/http": "workspace:^", "@typespec/http-specs": "workspace:^", "@typespec/spector": "workspace:^", - "@typespec/ts-http-runtime": "0.3.3", + "@typespec/ts-http-runtime": "catalog:", "@typespec/tspd": "workspace:^", "@typespec/versioning": "workspace:^", - "@vitest/ui": "^4.0.18", - "change-case": "~5.4.4", - "concurrently": "^9.1.2", - "cross-env": "~10.1.0", - "execa": "^9.6.1", - "fs-extra": "^11.2.0", - "globby": "~16.1.0", - "inquirer": "^13.1.0", - "ora": "^9.0.0", - "p-limit": "^7.1.1", - "picocolors": "~1.1.1", - "typescript": "~5.9.3", - "uri-template": "^2.0.0", - "vitest": "^4.0.18", - "yargs": "~18.0.0" + "@vitest/ui": "catalog:", + "change-case": "catalog:", + "concurrently": "catalog:", + "cross-env": "catalog:", + "execa": "catalog:", + "fs-extra": "catalog:", + "globby": "catalog:", + "inquirer": "catalog:", + "ora": "catalog:", + "p-limit": "catalog:", + "picocolors": "catalog:", + "typescript": "catalog:", + "uri-template": "catalog:", + "vitest": "catalog:", + "yargs": "catalog:" } } diff --git a/packages/http-client-python/.gitignore b/packages/http-client-python/.gitignore index 5cdaba90a6c..094f6579dc5 100644 --- a/packages/http-client-python/.gitignore +++ b/packages/http-client-python/.gitignore @@ -7,3 +7,6 @@ generator/test/.diff-summary.md # Regeneration marker (tracks when generated code was last regenerated) .last-regenerate + +# local folder for debug +alpha diff --git a/packages/http-client-python/CHANGELOG.md b/packages/http-client-python/CHANGELOG.md index fe524017046..561589fd67e 100644 --- a/packages/http-client-python/CHANGELOG.md +++ b/packages/http-client-python/CHANGELOG.md @@ -1,5 +1,34 @@ # Change Log - @typespec/http-client-python +## 0.28.2 + +### Bug Fixes + +- [#10167](https://github.com/microsoft/typespec/pull/10167) Fix import of `_deserialize` in mix of xml and non-xml models + + +## 0.28.1 + +### Bug Fixes + +- [#10084](https://github.com/microsoft/typespec/pull/10084) Fix PermissionError when detecting package manager on WSL +- [#10105](https://github.com/microsoft/typespec/pull/10105) Remove `None` from "Known values" in `api_version` parameter docstring since the parameter is typed as `str` and `None` is not a valid API version value. +- [#10117](https://github.com/microsoft/typespec/pull/10117) Fix model usage which is referred both in request and response + + +## 0.28.0 + +### Features + +- [#9898](https://github.com/microsoft/typespec/pull/9898) Remove enum value padding because we generate our enum value names with upper case so there is no need + +### Bug Fixes + +- [#9778](https://github.com/microsoft/typespec/pull/9778) Return empty list instead of None for non-optional unwrapped XML list fields during deserialization +- [#9952](https://github.com/microsoft/typespec/pull/9952) Fix extensible enum member names incorrectly getting an `Enum` suffix when the member name matched a Python reserved word (e.g. `ANDEnum` → `AND`, `CLASSEnum` → `CLASS`). +- [#9964](https://github.com/microsoft/typespec/pull/9964) Remove includeRootSlash client option logic, which should be handled at the TypeSpec core level + + ## 0.27.2 ### Bump dependencies diff --git a/packages/http-client-python/emitter/src/code-model.ts b/packages/http-client-python/emitter/src/code-model.ts index 7a33b7b486a..974008d8b3b 100644 --- a/packages/http-client-python/emitter/src/code-model.ts +++ b/packages/http-client-python/emitter/src/code-model.ts @@ -25,14 +25,7 @@ import { emitPagingHttpMethod, } from "./http.js"; import { PythonSdkContext } from "./lib.js"; -import { - KnownTypes, - disableGenerationMap, - emitEndpointType, - getType, - simpleTypesMap, - typesMap, -} from "./types.js"; +import { KnownTypes, emitEndpointType, getType } from "./types.js"; import { emitParamBase, getClientNamespace, getImplementation, getRootNamespace } from "./utils.js"; function emitBasicMethod( @@ -263,7 +256,7 @@ function emitOperationGroups( // operation has same clientNamespace as the operation group for (const og of operationGroups) { for (const op of og.operations) { - op.clientNamespace = getClientNamespace(context, og.clientNamespace); + op.clientNamespace = og.clientNamespace; } } @@ -366,7 +359,7 @@ export function emitCodeModel(sdkContext: PythonSdkContext) { continue; } // filter out specific models not used in python, e.g., pageable models - if (disableGenerationMap.has(model)) { + if (sdkContext.__disableGenerationMap.has(model)) { continue; } // filter out core models @@ -391,19 +384,20 @@ export function emitCodeModel(sdkContext: PythonSdkContext) { } // clear usage when a model is only used by paging - for (const type of typesMap.values()) { + for (const type of sdkContext.__typesMap.values()) { if ( type["type"] === "model" && - type["referredByOperationType"] === ReferredByOperationTypes.PagingOnly + type["referredByOperationType"] === ReferredByOperationTypes.PagingOnly && + (type["usage"] & UsageFlags.Input) === 0 ) { type["usage"] = UsageFlags.None; } } codeModel["types"] = [ - ...typesMap.values(), + ...sdkContext.__typesMap.values(), ...Object.values(KnownTypes), - ...simpleTypesMap.values(), + ...sdkContext.__simpleTypesMap.values(), ]; codeModel["crossLanguagePackageId"] = ignoreDiagnostics(getCrossLanguagePackageId(sdkContext)); if ((sdkContext.emitContext.options as any).flavor === "azure") { diff --git a/packages/http-client-python/emitter/src/emitter.ts b/packages/http-client-python/emitter/src/emitter.ts index 9a3b66b883a..724a2c4387b 100644 --- a/packages/http-client-python/emitter/src/emitter.ts +++ b/packages/http-client-python/emitter/src/emitter.ts @@ -10,7 +10,6 @@ import { emitCodeModel } from "./code-model.js"; import { saveCodeModelAsYaml } from "./external-process.js"; import { PythonEmitterOptions, PythonSdkContext, reportDiagnostic } from "./lib.js"; import { runPython3 } from "./run-python3.js"; -import { disableGenerationMap, simpleTypesMap, typesMap } from "./types.js"; import { getRootNamespace, md2Rst } from "./utils.js"; function addDefaultOptions(sdkContext: PythonSdkContext) { @@ -59,6 +58,9 @@ async function createPythonSdkContext( return { ...sdkContext, __endpointPathParameters: [], + __typesMap: new Map(), + __simpleTypesMap: new Map(), + __disableGenerationMap: new Set(), }; } @@ -100,12 +102,6 @@ function walkThroughNodes(yamlMap: Record): Record { return yamlMap; } -function cleanAllCache() { - typesMap.clear(); - simpleTypesMap.clear(); - disableGenerationMap.clear(); -} - export async function $onEmit(context: EmitContext) { try { await onEmitMain(context); @@ -124,9 +120,6 @@ export async function $onEmit(context: EmitContext) { } async function onEmitMain(context: EmitContext) { - // clean all cache to make sure emitter could work in watch mode - cleanAllCache(); - const program = context.program; const sdkContext = await createPythonSdkContext(context); const root = path.join(dirname(fileURLToPath(import.meta.url)), "..", ".."); @@ -168,7 +161,7 @@ async function onEmitMain(context: EmitContext) { try { await runPython3(path.join(root, "/eng/scripts/setup/install.py")); await runPython3(path.join(root, "/eng/scripts/setup/prepare.py")); - } catch (error) { + } catch { // if the python env is not ready, we use pyodide instead resolvedOptions["use-pyodide"] = true; } @@ -250,7 +243,7 @@ async function onEmitMain(context: EmitContext) { execSync( `${venvPath} -m black --line-length=120 --quiet --fast ${outputDir} --exclude "${excludePattern}"`, ); - checkForPylintIssues(outputDir, excludePattern); + await checkForPylintIssues(outputDir, excludePattern); } } } @@ -269,7 +262,7 @@ async function setupPyodideCall(root: string) { if (lockAge > 300) { fs.unlinkSync(micropipLockPath); } - } catch (err) { + } catch { // ignore } } @@ -288,14 +281,14 @@ async function setupPyodideCall(root: string) { fs.closeSync(fd); fs.unlinkSync(micropipLockPath); break; - } catch (err) { + } catch { await new Promise((resolve) => setTimeout(resolve, 1000)); } } return pyodide; } -function checkForPylintIssues(outputDir: string, excludePattern: string) { +async function checkForPylintIssues(outputDir: string, excludePattern: string) { const excludeRegex = new RegExp(excludePattern); const shouldExcludePath = (filePath: string): boolean => { @@ -304,9 +297,8 @@ function checkForPylintIssues(outputDir: string, excludePattern: string) { return excludeRegex.test(normalizedPath); }; - const processFile = (filePath: string) => { - let fileContent; - fileContent = fs.readFileSync(filePath, "utf-8"); + const processFile = async (filePath: string) => { + let fileContent = await fs.promises.readFile(filePath, "utf-8"); const pylintDisables: string[] = []; const lineEnding = fileContent.includes("\r\n") && os.platform() === "win32" ? "\r\n" : "\n"; const lines: string[] = fileContent.split(lineEnding); @@ -321,32 +313,38 @@ function checkForPylintIssues(outputDir: string, excludePattern: string) { fileContent = lines[0].includes("pylint: disable=") ? [lines[0] + "," + pylintDisables.join(",")].concat(lines.slice(1)).join(lineEnding) : `# pylint: disable=${pylintDisables.join(",")}${lineEnding}` + fileContent; + await fs.promises.writeFile(filePath, fileContent); } } - - fs.writeFileSync(filePath, fileContent); }; - const walkDir = (dir: string) => { + const collectPythonFiles = async (dir: string): Promise => { if (shouldExcludePath(dir)) { - return; + return []; } - const files = fs.readdirSync(dir); - files.forEach((file) => { - const filePath = path.join(dir, file); + const entries = await fs.promises.readdir(dir, { withFileTypes: true }); + + const promises = entries.map(async (entry) => { + const filePath = path.join(dir, entry.name); if (shouldExcludePath(filePath)) { - return; + return []; } - if (fs.statSync(filePath).isDirectory()) { - walkDir(filePath); - } else if (file.endsWith(".py")) { - processFile(filePath); + if (entry.isDirectory()) { + return collectPythonFiles(filePath); + } else if (entry.name.endsWith(".py")) { + return [filePath]; } + return []; }); + + const results = await Promise.all(promises); + return results.flat(); }; - walkDir(outputDir); + // Collect all Python files first, then process in parallel + const pythonFiles = await collectPythonFiles(outputDir); + await Promise.all(pythonFiles.map(processFile)); } diff --git a/packages/http-client-python/emitter/src/lib.ts b/packages/http-client-python/emitter/src/lib.ts index 120d008cb62..ca66478bffe 100644 --- a/packages/http-client-python/emitter/src/lib.ts +++ b/packages/http-client-python/emitter/src/lib.ts @@ -1,5 +1,6 @@ import { SdkContext, + SdkType, UnbrandedSdkEmitterOptions, } from "@azure-tools/typespec-client-generator-core"; import { createTypeSpecLibrary, JSONSchemaType, paramMessage } from "@typespec/compiler"; @@ -28,6 +29,9 @@ export interface PythonEmitterOptions { export interface PythonSdkContext extends SdkContext { __endpointPathParameters: Record[]; + __typesMap: Map>; + __simpleTypesMap: Map>; + __disableGenerationMap: Set; } export const PythonEmitterOptionsSchema: JSONSchemaType = { diff --git a/packages/http-client-python/emitter/src/system-requirements.ts b/packages/http-client-python/emitter/src/system-requirements.ts index 7f12ff5b5a7..32521654c1b 100644 --- a/packages/http-client-python/emitter/src/system-requirements.ts +++ b/packages/http-client-python/emitter/src/system-requirements.ts @@ -16,8 +16,8 @@ const execute = ( options.onCreate(cp); } - options.onStdOutData && cp.stdout.on("data", options.onStdOutData); - options.onStdErrData && cp.stderr.on("data", options.onStdErrData); + if (options.onStdOutData) cp.stdout.on("data", options.onStdOutData); + if (options.onStdErrData) cp.stderr.on("data", options.onStdErrData); let err = ""; let out = ""; @@ -34,7 +34,7 @@ const execute = ( cp.on("error", (err) => { reject(err); }); - cp.on("close", (code, signal) => + cp.on("close", (code, _signal) => resolve({ stdout: out, stderr: err, @@ -110,7 +110,7 @@ const tryPython = async ( `"${PRINT_PYTHON_VERSION_SCRIPT}"`, ]); return validateVersionRequirement(resolution, result.stdout.trim(), requirement); - } catch (e) { + } catch { return { error: true, ...resolution, diff --git a/packages/http-client-python/emitter/src/types.ts b/packages/http-client-python/emitter/src/types.ts index b7f6f579106..3e0ee6f6b32 100644 --- a/packages/http-client-python/emitter/src/types.ts +++ b/packages/http-client-python/emitter/src/types.ts @@ -28,10 +28,6 @@ import { getImplementation, } from "./utils.js"; -export const typesMap = new Map>(); -export const simpleTypesMap = new Map>(); -export const disableGenerationMap = new Set(); - export interface CredentialType { kind: "Credential"; scheme: HttpAuth; @@ -59,13 +55,16 @@ function isEmptyModel(type: SdkType): boolean { ); } -export function getSimpleTypeResult(result: Record): Record { +export function getSimpleTypeResult( + context: PythonSdkContext, + result: Record, +): Record { const key = dump(result, { sortKeys: true }); - const value = simpleTypesMap.get(key); + const value = context.__simpleTypesMap.get(key); if (value) { result = value; } else { - simpleTypesMap.set(key, result); + context.__simpleTypesMap.set(key, result); } return result; } @@ -82,16 +81,16 @@ export function getType( case "enum": return emitEnum(context, type); case "constant": - return emitConstant(type)!; + return emitConstant(context, type)!; case "array": case "dict": return emitArrayOrDict(context, type)!; case "utcDateTime": case "offsetDateTime": case "duration": - return emitDurationOrDateType(type); + return emitDurationOrDateType(context, type); case "enumvalue": - return emitEnumMember(type, emitEnum(context, type.enumType)); + return emitEnumMember(context, type, emitEnum(context, type.enumType)); case "credential": return emitCredential(context, type); case "bytes": @@ -116,7 +115,7 @@ export function getType( case "decimal128": case "string": case "url": - return emitBuiltInType(type); + return emitBuiltInType(context, type); case "unknown": return KnownTypes.any; case "nullable": @@ -133,12 +132,12 @@ function emitMultiPartFile( type: MultiPartFileType, ): Record { if (type.type.kind === "array") { - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: "list", elementType: getType(context, createMultiPartFileType(type.type.valueType)), }); } - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: type.kind, description: type.type.summary ? type.type.summary : type.type.doc, }); @@ -183,7 +182,7 @@ function emitCredential( }, }; } - return getSimpleTypeResult(credential_type); + return getSimpleTypeResult(context, credential_type); } function visibilityMapping(visibility?: Visibility[]): string[] | undefined { @@ -211,14 +210,14 @@ function createMultiPartFileType(type: SdkType): MultiPartFileType { return { kind: "multipartfile", type }; } -function addDisableGenerationMap(type: SdkType): void { - if (disableGenerationMap.has(type)) return; +function addDisableGenerationMap(context: PythonSdkContext, type: SdkType): void { + if (context.__disableGenerationMap.has(type)) return; - disableGenerationMap.add(type); + context.__disableGenerationMap.add(type); if (type.kind === "model" && type.baseModel) { - addDisableGenerationMap(type.baseModel); + addDisableGenerationMap(context, type.baseModel); } else if (type.kind === "array") { - addDisableGenerationMap(type.valueType); + addDisableGenerationMap(context, type.valueType); } } @@ -231,7 +230,7 @@ function emitProperty( if (isMultipartFileInput) { sourceType = createMultiPartFileType(property.type); // Python convert all the type of file part to FileType so clear these models' usage so that they won't be generated - addDisableGenerationMap(property.type); + addDisableGenerationMap(context, property.type); } return { clientName: camelToSnakeCase(property.name), @@ -257,8 +256,8 @@ function emitModel(context: PythonSdkContext, type: SdkModelType): Record { - return getSimpleTypeResult({ +function getConstantFromEnumValueType( + context: PythonSdkContext, + type: SdkEnumValueType, +): Record { + return getSimpleTypeResult(context, { type: "constant", value: type.value, - valueType: emitBuiltInType(type.valueType), + valueType: emitBuiltInType(context, type.valueType), }); } function emitEnum(context: PythonSdkContext, type: SdkEnumType): Record { - if (typesMap.has(type)) { - return typesMap.get(type)!; + if (context.__typesMap.has(type)) { + return context.__typesMap.get(type)!; } if (type.isGeneratedName) { const types = []; for (const value of type.values) { - types.push(getConstantFromEnumValueType(value)); + types.push(getConstantFromEnumValueType(context, value)); } if (!type.isFixed) { - types.push(emitBuiltInType(type.valueType)); + types.push(emitBuiltInType(context, type.valueType)); } const newValue = { @@ -350,7 +352,7 @@ function emitEnum(context: PythonSdkContext, type: SdkEnumType): Record[] = []; @@ -361,16 +363,16 @@ function emitEnum(context: PythonSdkContext, type: SdkEnumType): Record, ): Record { - if (typesMap.has(type)) { - return typesMap.get(type)!; + if (context.__typesMap.has(type)) { + return context.__typesMap.get(type)!; } // python don't generate enum created by TCGC, so we shall not generate type for enum member of the enum, either. if (type.enumType.isGeneratedName) { - return getConstantFromEnumValueType(type); + return getConstantFromEnumValueType(context, type); } const result = { @@ -401,14 +404,17 @@ function emitEnumMember( type: type.kind, valueType: enumType["valueType"], }; - typesMap.set(type, result); + context.__typesMap.set(type, result); return result; } -function emitDurationOrDateType(type: SdkDurationType | SdkDateTimeType): Record { - return getSimpleTypeResult({ - ...emitBuiltInType(type), - wireType: emitBuiltInType(type.wireType), +function emitDurationOrDateType( + context: PythonSdkContext, + type: SdkDurationType | SdkDateTimeType, +): Record { + return getSimpleTypeResult(context, { + ...emitBuiltInType(context, type), + wireType: emitBuiltInType(context, type.wireType), }); } @@ -417,17 +423,17 @@ function emitArrayOrDict( type: SdkArrayType | SdkDictionaryType, ): Record { const kind = type.kind === "array" ? "list" : type.kind; - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: kind, elementType: getType(context, type.valueType), }); } -function emitConstant(type: SdkConstantType) { - return getSimpleTypeResult({ +function emitConstant(context: PythonSdkContext, type: SdkConstantType) { + return getSimpleTypeResult(context, { type: type.kind, value: type.value, - valueType: emitBuiltInType(type.valueType), + valueType: emitBuiltInType(context, type.valueType), }); } @@ -461,12 +467,13 @@ const sdkScalarKindToPythonKind: Record = { }; function emitBuiltInType( + context: PythonSdkContext, type: SdkBuiltInType | SdkDurationType | SdkDateTimeType, ): Record { if (type.encode) { if (type.kind === "duration") { if (type.encode === "ISO8601") { - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: type.kind, encode: type.encode, }); @@ -474,13 +481,13 @@ function emitBuiltInType( } if (type.kind === "utcDateTime" || type.kind === "offsetDateTime") { if (type.encode === "unixTimestamp") { - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: "unixtime", encode: type.encode, }); } if (type.encode === "rfc3339" || type.encode === "rfc7231") { - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: type.kind, encode: type.encode, }); @@ -489,21 +496,21 @@ function emitBuiltInType( // fallback to wire type for unknown or unsupported encode if ("wireType" in type && type.wireType !== undefined) { - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: sdkScalarKindToPythonKind[type.wireType.kind] || type.wireType.kind, encode: type.encode, }); } } - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { type: sdkScalarKindToPythonKind[type.kind] || type.kind, // TODO: switch to kind encode: type.encode, }); } function emitUnion(context: PythonSdkContext, type: SdkUnionType): Record { - return getSimpleTypeResult({ + return getSimpleTypeResult(context, { name: type.isGeneratedName ? undefined : type.name, snakeCaseName: type.isGeneratedName ? undefined : camelToSnakeCase(type.name), description: type.isGeneratedName ? "" : `Type of ${type.name}`, @@ -515,8 +522,11 @@ function emitUnion(context: PythonSdkContext, type: SdkUnionType): Record { - const cache = simpleTypesMap.get(key); +export function getConstantType( + context: PythonSdkContext, + key: string | null, +): Record { + const cache = context.__simpleTypesMap.get(key); if (cache) { return cache; } @@ -527,7 +537,7 @@ export function getConstantType(key: string | null): Record { valueType: KnownTypes.string, xmlMetadata: {}, }; - simpleTypesMap.set(key, type); + context.__simpleTypesMap.set(key, type); return type; } diff --git a/packages/http-client-python/emitter/src/utils.ts b/packages/http-client-python/emitter/src/utils.ts index 585ef6e9765..9b30231a71d 100644 --- a/packages/http-client-python/emitter/src/utils.ts +++ b/packages/http-client-python/emitter/src/utils.ts @@ -213,7 +213,7 @@ export function emitParamBase( let type = getType(context, parameter.type); if (parameter.isApiVersionParam) { if (parameter.clientDefaultValue) { - type = getSimpleTypeResult({ + type = getSimpleTypeResult(context, { type: "constant", value: parameter.clientDefaultValue, valueType: type, @@ -262,6 +262,7 @@ export function capitalize(name: string): string { return name[0].toUpperCase() + name.slice(1); } +// Library namespaces that should not be used as client namespaces const LIB_NAMESPACE = [ "azure.core", "azure.resourcemanager", @@ -272,29 +273,25 @@ const LIB_NAMESPACE = [ ]; export function getRootNamespace(context: PythonSdkContext): string { - let rootNamespace = ""; if (context.sdkPackage.clients.length > 0) { - rootNamespace = context.sdkPackage.clients[0].namespace; - } else if (context.sdkPackage.models.length > 0) { - const result = context.sdkPackage.models - .map((model) => model.namespace) - .filter((namespace) => !LIB_NAMESPACE.includes(namespace)); - if (result.length > 0) { - result.sort(); - rootNamespace = result[0]; - } + return context.sdkPackage.clients[0].namespace.toLowerCase(); } else if (context.sdkPackage.namespaces.length > 0) { - rootNamespace = context.sdkPackage.namespaces[0].fullName; + return context.sdkPackage.namespaces[0].fullName.toLowerCase(); } + return ""; +} - return rootNamespace.toLowerCase(); +function isLibraryNamespace(namespace: string): boolean { + const ns = namespace.toLowerCase(); + return LIB_NAMESPACE.some((lib) => ns.startsWith(lib)); } export function getClientNamespace(context: PythonSdkContext, clientNamespace: string) { - if ( - clientNamespace === "" || - LIB_NAMESPACE.some((item) => clientNamespace.toLowerCase().startsWith(item)) - ) { + // Namespace precedence: @clientNamespace > --namespace > original namespace + // These are resolved by TCGC and passed in as clientNamespace. + // However, models from library namespaces (azure.core, azure.resourcemanager, etc.) + // should use the SDK's root namespace instead. + if (clientNamespace === "" || isLibraryNamespace(clientNamespace)) { return getRootNamespace(context); } return clientNamespace.toLowerCase(); @@ -320,7 +317,7 @@ function parseToken(token: Token): string { case "codespan": parsed += `\`\`${token.text}\`\``; break; - case "code": + case "code": { let codeBlockStyle = token.codeBlockStyle; if (codeBlockStyle === undefined) { codeBlockStyle = token.raw.split("\n")[0].replace("```", "").trim(); @@ -331,6 +328,7 @@ function parseToken(token: Token): string { } parsed += `\n\n.. code-block:: ${codeBlockStyle ?? ""}\n\n ${token.text.split("\n").join("\n ")}`; break; + } case "link": if (token.href !== undefined) { parsed += `\`${token.text} <${token.href}>\`_`; diff --git a/packages/http-client-python/eng/pipeline/templates/ci-stages.yml b/packages/http-client-python/eng/pipeline/templates/ci-stages.yml index 24ccab887a7..63ffca6588c 100644 --- a/packages/http-client-python/eng/pipeline/templates/ci-stages.yml +++ b/packages/http-client-python/eng/pipeline/templates/ci-stages.yml @@ -26,4 +26,4 @@ stages: Condition: ${{ parameters.Condition }} DependsOn: ${{ parameters.DependsOn }} LanguageShortName: "python" - PythonVersion: "3.11" + PythonVersion: "3.12" diff --git a/packages/http-client-python/eng/scripts/Build-Packages.ps1 b/packages/http-client-python/eng/scripts/Build-Packages.ps1 index 73b25b1f664..16fd147f5db 100644 --- a/packages/http-client-python/eng/scripts/Build-Packages.ps1 +++ b/packages/http-client-python/eng/scripts/Build-Packages.ps1 @@ -1,4 +1,30 @@ #Requires -Version 7.0 +<# +.SYNOPSIS + Builds and packages the TypeSpec Python emitter for publishing. + +.DESCRIPTION + This script is called by the CI pipeline to create publishable packages. + It runs: + 1. npm run build - Compile TypeScript emitter and build Python wheel + 2. npm run lint - Run linting (Linux only) + 3. npm pack - Create npm tarball for publishing + +.PARAMETER BuildNumber + The build number for versioning. + +.PARAMETER Output + Output directory for built packages. Defaults to ./ci-build. + +.PARAMETER Prerelease + Flag indicating if this is a prerelease build. + +.PARAMETER PublishType + Type of publish: "internal" for dev feed, otherwise public. + +.EXAMPLE + ./Build-Packages.ps1 -Output ./dist +#> param( [string] $BuildNumber, @@ -7,6 +33,15 @@ param( [string] $PublishType ) +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 3.0 + +# Setup paths and helpers +$packageRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/') +. "$packageRoot/../../eng/emitters/scripts/CommandInvocation-Helpers.ps1" +Set-ConsoleEncoding + +# Helper function to write package info for downstream publishing function Write-PackageInfo { param( [string] $packageName, @@ -15,81 +50,71 @@ function Write-PackageInfo { ) $packageInfoPath = "$outputPath/PackageInfo" - if (!(Test-Path $packageInfoPath)) { New-Item -ItemType Directory -Force -Path $packageInfoPath | Out-Null } @{ - Name = $packageName - Version = $version + Name = $packageName + Version = $version DirectoryPath = $directoryPath - SdkType = "client" - IsNewSdk = $true + SdkType = "client" + IsNewSdk = $true ReleaseStatus = "Unreleased" } | ConvertTo-Json | Set-Content -Path "$packageInfoPath/$packageName.json" } -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 3.0 -$packageRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/') -. "$packageRoot/../../eng/emitters/scripts/CommandInvocation-Helpers.ps1" -Set-ConsoleEncoding - Write-Host "Building packages for BuildNumber: '$BuildNumber', Output: '$Output', Prerelease: '$Prerelease', PublishType: '$PublishType'" +# Setup output directory $outputPath = $Output ? $Output : "$packageRoot/ci-build" - -# create the output folders $outputPath = New-Item -ItemType Directory -Force -Path $outputPath | Select-Object -ExpandProperty FullName New-Item -ItemType Directory -Force -Path "$outputPath/packages" | Out-Null -Write-Host "Getting existing version" +# Get package version $emitterVersion = node -p -e "require('$packageRoot/package.json').version" +Write-Host "Package version: $emitterVersion" -# build the generator -Push-Location "$packageRoot/generator" - -# build and pack the emitter with the generator Push-Location "$packageRoot" try { - Write-Host "Working in $PWD" - + # Step 1: Build the emitter and generator + Write-Host "`n=== Building emitter and generator ===" -ForegroundColor Cyan Invoke-LoggedCommand "npm run build" -GroupOutput - # Only run lint:py on Linux OS + # Step 2: Run linting (Linux only, as CI runs on Linux) if ($IsLinux) { - Write-Host "run lint check for pygen" - Invoke-LoggedCommand "npm run lint:py" -GroupOutput + Write-Host "`n=== Running lint checks ===" -ForegroundColor Cyan + Invoke-LoggedCommand "npm run lint" -GroupOutput } - # pack the emitter + # Step 3: Create npm package + Write-Host "`n=== Creating npm package ===" -ForegroundColor Cyan Invoke-LoggedCommand "npm pack" Copy-Item "typespec-http-client-python-$emitterVersion.tgz" -Destination "$outputPath/packages" - # install packed emitter to check dependencies + # Step 4: Verify package can be installed + Write-Host "`n=== Verifying package installation ===" -ForegroundColor Cyan Invoke-LoggedCommand "npm install typespec-http-client-python-$emitterVersion.tgz" -GroupOutput - Write-PackageInfo -packageName "typespec-http-client-python" -directoryPath "packages/http-client-python/emitter/src" -version $emitterVersion + # Write package info for publishing pipeline + Write-PackageInfo -packageName "typespec-http-client-python" ` + -directoryPath "packages/http-client-python/emitter/src" ` + -version $emitterVersion } finally { Pop-Location } +# Generate override URLs for internal publishing +$overrides = @{} if ($PublishType -eq "internal") { - $feedUrl = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js-test-autorest/npm/registry" - - $overrides = @{ - "@typespec/http-client-python" = "$feedUrl/@typespec/http-client-python/-/http-client-python-$emitterVersion.tgz" - } -} else { - $overrides = @{} + $feedUrl = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-js/npm/registry" + $overrides["@typespec/http-client-python"] = "$feedUrl/@typespec/http-client-python/-/http-client-python-$emitterVersion.tgz" } - $overrides | ConvertTo-Json | Set-Content "$outputPath/overrides.json" -$packageMatrix = [ordered]@{ - "emitter" = $emitterVersion -} +# Write package version matrix +@{ "emitter" = $emitterVersion } | ConvertTo-Json | Set-Content "$outputPath/package-versions.json" -$packageMatrix | ConvertTo-Json | Set-Content "$outputPath/package-versions.json" +Write-Host "`n=== Build complete ===" -ForegroundColor Green +Write-Host "Output: $outputPath" diff --git a/packages/http-client-python/eng/scripts/Check-GitChanges.ps1 b/packages/http-client-python/eng/scripts/Check-GitChanges.ps1 index c4bde91a49e..ba7b32178a8 100644 --- a/packages/http-client-python/eng/scripts/Check-GitChanges.ps1 +++ b/packages/http-client-python/eng/scripts/Check-GitChanges.ps1 @@ -1,4 +1,21 @@ #Requires -Version 7.0 +<# +.SYNOPSIS + Checks for uncommitted git changes. + +.DESCRIPTION + This script verifies that there are no uncommitted changes in the repository. + It excludes package.json and package-lock.json from the check since those + may be modified during npm operations. + + Used by CI to ensure regeneration produces consistent output. + +.PARAMETER Exceptions + Additional paths to exclude from the check (not currently used). + +.EXAMPLE + ./Check-GitChanges.ps1 +#> param( [string] $Exceptions @@ -6,17 +23,27 @@ param( $ErrorActionPreference = 'Stop' Set-StrictMode -Version 3.0 + +# Setup paths and helpers $packageRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/') . "$packageRoot/../../eng/emitters/scripts/CommandInvocation-Helpers.ps1" Set-ConsoleEncoding -$diffExcludes = @( +# Files to exclude from diff check (these may change during npm operations) +$excludedFiles = @( "$packageRoot/package.json" "$packageRoot/package-lock.json" -) | ForEach-Object { "`":(exclude)$_`"" } | Join-String -Separator ' ' +) +$diffExcludes = $excludedFiles | ForEach-Object { "`":(exclude)$_`"" } | Join-String -Separator ' ' + +# Check for changes, ignoring whitespace differences at end of lines Invoke-LoggedCommand "git -c core.safecrlf=false diff --ignore-space-at-eol --exit-code -- $diffExcludes" -IgnoreExitCode -if($LastExitCode -ne 0) { +if ($LastExitCode -ne 0) { + Write-Host "`nUncommitted changes detected!" -ForegroundColor Red + Write-Host "Run 'npm run regenerate' locally and commit the changes." throw "Changes detected" } + +Write-Host "No changes detected." -ForegroundColor Green diff --git a/packages/http-client-python/eng/scripts/Functions.ps1 b/packages/http-client-python/eng/scripts/Functions.ps1 index cc90c290378..e62336c8a89 100644 --- a/packages/http-client-python/eng/scripts/Functions.ps1 +++ b/packages/http-client-python/eng/scripts/Functions.ps1 @@ -1,26 +1,65 @@ -# Return list of nupkg artifacts -function Get-Package-Artifacts ($location, $filter) -{ - $filterToUse = $filter.StartsWith("typespec-") ? $filter.SubString(0, $filter.Length - 1) + ".api.json" : $filter +<# +.SYNOPSIS + Helper functions for finding package artifacts. + +.DESCRIPTION + These functions are used by the publishing pipeline to locate + built package artifacts for API review and publishing. +#> + +<# +.SYNOPSIS + Gets package artifacts from a directory. + +.PARAMETER location + The directory containing the packages folder. + +.PARAMETER filter + Filter pattern for matching package files. +#> +function Get-Package-Artifacts { + param( + [string] $location, + [string] $filter + ) + + # Convert typespec package filter to API json filter + $filterToUse = if ($filter.StartsWith("typespec-")) { + $filter.SubString(0, $filter.Length - 1) + ".api.json" + } else { + $filter + } $packages = Get-ChildItem -Path "$location/packages" -Filter $filterToUse -Recurse - if (!$packages) - { - Write-Host "$($location)/packages does not have any packages matching filter $($filterToUse)" + if (!$packages) { + Write-Host "$location/packages does not have any packages matching filter $filterToUse" return $null } + return $packages[0] } -function Find-Artifacts-For-Apireview($artifactDir, $packageName) -{ - # Find all nupkg files in given artifact directory +<# +.SYNOPSIS + Finds artifacts for API review. + +.PARAMETER artifactDir + Directory containing build artifacts. + +.PARAMETER packageName + Name of the package to find. +#> +function Find-Artifacts-For-Apireview { + param( + [string] $artifactDir, + [string] $packageName + ) + $package = Get-Package-Artifacts $artifactDir "$packageName*" - if (!$package) - { - Write-Host "Package is not available in artifact path $($artifactDir)/packages" + if (!$package) { + Write-Host "Package is not available in artifact path $artifactDir/packages" return $null } - $packages = @{ $package.Name = $package.FullName } - return $packages + + return @{ $package.Name = $package.FullName } } diff --git a/packages/http-client-python/eng/scripts/Generate.ps1 b/packages/http-client-python/eng/scripts/Generate.ps1 index 5bd459127b6..c80196272a9 100644 --- a/packages/http-client-python/eng/scripts/Generate.ps1 +++ b/packages/http-client-python/eng/scripts/Generate.ps1 @@ -1,14 +1,48 @@ #Requires -Version 7.0 +<# +.SYNOPSIS + Regenerates all test fixtures and documentation. -Import-Module "$PSScriptRoot\Generation.psm1" -DisableNameChecking -Force; +.DESCRIPTION + This script is called by the CI pipeline to regenerate test outputs. + It runs: + 1. npm run build - Compile TypeScript emitter and build Python wheel + 2. npm run regenerate - Regenerate all test fixtures from TypeSpec files + 3. npm run regen-docs - Regenerate API documentation -$repoRoot = Resolve-Path (Join-Path $PSScriptRoot '..' '..') +.EXAMPLE + ./Generate.ps1 +#> -Write-Host "Building project ..." -& npm run build +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 3.0 -Write-Host "Regenerating project ..." -& npm run regenerate +# Setup paths +$packageRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/') -Write-Host "Regenerating docs ..." -& npm run regen-docs +Push-Location "$packageRoot" +try { + Write-Host "=== Building project ===" -ForegroundColor Cyan + & npm run build + if ($LASTEXITCODE -ne 0) { throw "Build failed" } + + Write-Host "`n=== Regenerating test fixtures ===" -ForegroundColor Cyan + & npm run regenerate + if ($LASTEXITCODE -ne 0) { throw "Regeneration failed" } + + Write-Host "`n=== Regenerating documentation ===" -ForegroundColor Cyan + # Check if tspd is available (requires full monorepo build) + $tspdCli = Join-Path $packageRoot "../../packages/tspd/dist/src/cli.js" + if (Test-Path $tspdCli) { + & npm run regen-docs + if ($LASTEXITCODE -ne 0) { throw "Documentation regeneration failed" } + } else { + Write-Host "Skipping documentation regeneration (tspd not built)" -ForegroundColor Yellow + Write-Host "Run from monorepo root with full build to regenerate docs" -ForegroundColor Yellow + } + + Write-Host "`n=== Generation complete ===" -ForegroundColor Green +} +finally { + Pop-Location +} diff --git a/packages/http-client-python/eng/scripts/Generation.psm1 b/packages/http-client-python/eng/scripts/Generation.psm1 index 5f69ef05343..713075efc64 100644 --- a/packages/http-client-python/eng/scripts/Generation.psm1 +++ b/packages/http-client-python/eng/scripts/Generation.psm1 @@ -1,22 +1,51 @@ +<# +.SYNOPSIS + PowerShell module with helper functions for generation scripts. + +.DESCRIPTION + This module provides the Invoke function for running shell commands + cross-platform (Windows, Linux, macOS). +#> + $repoRoot = Resolve-Path (Join-Path $PSScriptRoot '..') -function Invoke($command, $executePath=$repoRoot) -{ - Write-Host "> $command" +<# +.SYNOPSIS + Invokes a shell command cross-platform. + +.PARAMETER command + The command to execute. + +.PARAMETER executePath + The directory to execute the command in. Defaults to repo root. + +.EXAMPLE + Invoke "npm run build" +#> +function Invoke { + param( + [string] $command, + [string] $executePath = $repoRoot + ) + + Write-Host "> $command" -ForegroundColor Cyan + Push-Location $executePath - if ($IsLinux -or $IsMacOs) - { - sh -c "$command 2>&1" - } - else - { - cmd /c "$command 2>&1" - } - Pop-Location + try { + if ($IsLinux -or $IsMacOs) { + sh -c "$command 2>&1" + } + else { + cmd /c "$command 2>&1" + } - if($LastExitCode -ne 0) - { - Write-Error "Command failed to execute: $command" + if ($LastExitCode -ne 0) { + throw "Command failed: $command" + } + } + finally { + Pop-Location } } + Export-ModuleMember -Function "Invoke" diff --git a/packages/http-client-python/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-python/eng/scripts/Initialize-Repository.ps1 index 4320a530734..4fc04484175 100644 --- a/packages/http-client-python/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-python/eng/scripts/Initialize-Repository.ps1 @@ -1,4 +1,21 @@ #Requires -Version 7.0 +<# +.SYNOPSIS + Initializes the repository by installing npm dependencies. + +.DESCRIPTION + This script is called by the CI pipeline to set up the repository. + It runs `npm ci` to install dependencies from package-lock.json. + +.PARAMETER BuildArtifactsPath + Optional path to build artifacts (used in CI for caching lock files). + +.PARAMETER UseTypeSpecNext + Optional switch for using TypeSpec next version (not currently used). + +.EXAMPLE + ./Initialize-Repository.ps1 +#> param( [string] $BuildArtifactsPath, @@ -7,32 +24,33 @@ param( $ErrorActionPreference = 'Stop' Set-StrictMode -Version 3.0 + +# Setup paths and helpers $packageRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/') . "$packageRoot/../../eng/emitters/scripts/CommandInvocation-Helpers.ps1" Set-ConsoleEncoding Push-Location "$packageRoot" try { + # Clean install of npm dependencies if (Test-Path "./node_modules") { + Write-Host "Removing existing node_modules..." Remove-Item -Recurse -Force "./node_modules" } - # install and list npm packages - + Write-Host "Installing npm dependencies..." Invoke-LoggedCommand "npm ci" - Invoke-LoggedCommand "npm ls -a" -GroupOutput - Write-Host "artifactStagingDirectory: $env:BUILD_ARTIFACTSTAGINGDIRECTORY" - Write-Host "BuildArtifactsPath: $BuildArtifactsPath" + # Copy lock files to artifacts for CI caching (if running in Azure DevOps) $artifactStagingDirectory = $env:BUILD_ARTIFACTSTAGINGDIRECTORY if ($artifactStagingDirectory -and !$BuildArtifactsPath) { - $lockFilesPath = "$artifactStagingDirectory/lock-files" - New-Item -ItemType Directory -Path "$lockFilesPath/emitter" | Out-Null - - Write-Host "Copying emitter/package.json and emitter/package-lock.json to $lockFilesPath" - Copy-Item './package.json' "$lockFilesPath/emitter/package.json" -Force - Copy-Item './package-lock.json' "$lockFilesPath/emitter/package-lock.json" -Force + $lockFilesPath = "$artifactStagingDirectory/lock-files/emitter" + New-Item -ItemType Directory -Path $lockFilesPath -Force | Out-Null + + Write-Host "Copying lock files to $lockFilesPath" + Copy-Item './package.json' "$lockFilesPath/package.json" -Force + Copy-Item './package-lock.json' "$lockFilesPath/package-lock.json" -Force } } finally { diff --git a/packages/http-client-python/eng/scripts/Test-Packages.ps1 b/packages/http-client-python/eng/scripts/Test-Packages.ps1 index a5fba247cd8..05ea968b8cb 100644 --- a/packages/http-client-python/eng/scripts/Test-Packages.ps1 +++ b/packages/http-client-python/eng/scripts/Test-Packages.ps1 @@ -1,4 +1,32 @@ #Requires -Version 7.0 +<# +.SYNOPSIS + Runs tests for the TypeSpec Python emitter. + +.DESCRIPTION + This script is called by the CI pipeline to run tests. + + With -UnitTests: + - Runs npm run build (compile emitter) + + With -GenerationChecks: + - Runs npm run build (compile emitter) + - Runs Generate.ps1 (regenerate test fixtures) + - Runs Check-GitChanges.ps1 (verify no uncommitted changes) + - Runs npm run ci (full test suite: pytest, lint, mypy, pyright) + +.PARAMETER UnitTests + Run unit tests only (just builds the project). + +.PARAMETER GenerationChecks + Run full generation checks and test suite. + +.PARAMETER Filter + Optional filter pattern for tests (not currently used). + +.EXAMPLE + ./Test-Packages.ps1 -GenerationChecks +#> param( [switch] $UnitTests, @@ -7,57 +35,45 @@ param( ) $ErrorActionPreference = 'Stop' - Set-StrictMode -Version 3.0 + +# Setup paths and helpers $packageRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/') . "$packageRoot/../../eng/emitters/scripts/CommandInvocation-Helpers.ps1" Set-ConsoleEncoding +Write-Host "Python version:" Invoke-LoggedCommand "python --version" Push-Location $packageRoot try { if ($UnitTests) { - Push-Location "$packageRoot" - try { - - Write-Host "Updated PATH: $env:PATH" - # test the emitter - Invoke-LoggedCommand "npm run build" -GroupOutput - - } - finally { - Pop-Location - } + Write-Host "`n=== Running unit tests ===" -ForegroundColor Cyan + Invoke-LoggedCommand "npm run build" -GroupOutput } + if ($GenerationChecks) { - Set-StrictMode -Version 1 - - # run E2E Test for TypeSpec emitter - Write-Host "Generating test projects ..." + # Step 1: Regenerate all test fixtures + Write-Host "`n=== Regenerating test fixtures ===" -ForegroundColor Cyan & "$packageRoot/eng/scripts/Generate.ps1" - Write-Host 'Code generation is completed.' + # Step 2: Check for uncommitted changes (regeneration should be clean) + Write-Host "`n=== Checking for uncommitted changes ===" -ForegroundColor Cyan try { - Write-Host 'Checking for differences in generated code...' & "$packageRoot/eng/scripts/Check-GitChanges.ps1" - Write-Host 'Done. No code generation differences detected.' + Write-Host "No uncommitted changes detected." -ForegroundColor Green } catch { - Write-Error 'Generated code is not up to date. Please run: eng/Generate.ps1' + Write-Error "Generated code is not up to date. Please run: npm run regenerate" } - try { - Write-Host "Pip List" - & pip list - # Run tox - Write-Host 'Running tests' - & npm run ci - Write-Host 'tox tests passed' - } - catch { - Write-Error "Spector tests failed: $_" - } + # Step 3: Run full test suite + Write-Host "`n=== Running full test suite ===" -ForegroundColor Cyan + Write-Host "Installed packages:" + & pip list + + Invoke-LoggedCommand "npm run ci" + Write-Host "All tests passed." -ForegroundColor Green } } finally { diff --git a/packages/http-client-python/eng/scripts/ci/config/eslint-ci.config.mjs b/packages/http-client-python/eng/scripts/ci/config/eslint-ci.config.mjs new file mode 100644 index 00000000000..b8a1418a63e --- /dev/null +++ b/packages/http-client-python/eng/scripts/ci/config/eslint-ci.config.mjs @@ -0,0 +1,54 @@ +// @ts-check +// Standalone eslint config for http-client-python package +// This config is used in CI where monorepo dependencies may not be available +import eslint from "@eslint/js"; +import tsEslint from "typescript-eslint"; + +export default [ + { + ignores: ["**/dist/**/*", "**/node_modules/**/*"], + }, + eslint.configs.recommended, + ...tsEslint.configs.recommended, + { + rules: { + // TypeScript plugin overrides + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-empty-object-type": "off", + "@typescript-eslint/no-unused-vars": [ + "warn", + { + varsIgnorePattern: "^_", + argsIgnorePattern: ".*", + ignoreRestSiblings: true, + caughtErrorsIgnorePattern: ".*", + }, + ], + "@typescript-eslint/no-unused-expressions": [ + "warn", + { allowShortCircuit: true, allowTernary: true }, + ], + + // Core rules + "no-inner-declarations": "off", + "no-empty": "off", + "no-constant-condition": "off", + "no-case-declarations": "off", + "no-ex-assign": "off", + "no-undef": "off", + "prefer-const": [ + "warn", + { + destructuring: "all", + }, + ], + eqeqeq: ["warn", "always", { null: "ignore" }], + "no-console": "warn", + "symbol-description": "warn", + }, + }, +]; diff --git a/packages/http-client-python/eng/scripts/ci/mypy.ini b/packages/http-client-python/eng/scripts/ci/config/mypy.ini similarity index 100% rename from packages/http-client-python/eng/scripts/ci/mypy.ini rename to packages/http-client-python/eng/scripts/ci/config/mypy.ini diff --git a/packages/http-client-python/eng/scripts/ci/pylintrc b/packages/http-client-python/eng/scripts/ci/config/pylintrc similarity index 100% rename from packages/http-client-python/eng/scripts/ci/pylintrc rename to packages/http-client-python/eng/scripts/ci/config/pylintrc diff --git a/packages/http-client-python/eng/scripts/ci/pyproject.toml b/packages/http-client-python/eng/scripts/ci/config/pyproject.toml similarity index 100% rename from packages/http-client-python/eng/scripts/ci/pyproject.toml rename to packages/http-client-python/eng/scripts/ci/config/pyproject.toml diff --git a/packages/http-client-python/eng/scripts/ci/pyrightconfig.json b/packages/http-client-python/eng/scripts/ci/config/pyrightconfig.json similarity index 100% rename from packages/http-client-python/eng/scripts/ci/pyrightconfig.json rename to packages/http-client-python/eng/scripts/ci/config/pyrightconfig.json diff --git a/packages/http-client-python/eng/scripts/ci/dev_requirements.txt b/packages/http-client-python/eng/scripts/ci/dev_requirements.txt index 7e3b05234a1..2d713225106 100644 --- a/packages/http-client-python/eng/scripts/ci/dev_requirements.txt +++ b/packages/http-client-python/eng/scripts/ci/dev_requirements.txt @@ -1,6 +1,7 @@ pyright==1.1.407 pylint==4.0.4 tox==4.16.0 +tox-uv mypy==1.19.1 colorama==0.4.6 debugpy==1.8.2 diff --git a/packages/http-client-python/eng/scripts/ci/format.ts b/packages/http-client-python/eng/scripts/ci/format.ts index 39663edcae3..96d08dedc39 100644 --- a/packages/http-client-python/eng/scripts/ci/format.ts +++ b/packages/http-client-python/eng/scripts/ci/format.ts @@ -1,3 +1,233 @@ -import { runCommand } from "./utils.js"; +/* eslint-disable no-console */ +import { spawn } from "child_process"; +import fs from "fs"; +import { dirname, join } from "path"; +import pc from "picocolors"; +import { fileURLToPath } from "url"; +import { parseArgs } from "util"; -runCommand("black", ["generator/", "eng/", "--config", "./eng/scripts/ci/pyproject.toml"]); +const root = join(dirname(fileURLToPath(import.meta.url)), "../../../"); +const monorepoRoot = join(root, "../../"); + +// Get Python venv path +function getVenvPython(): string { + const venvPath = join(root, "venv"); + if (fs.existsSync(join(venvPath, "bin"))) { + return join(venvPath, "bin", "python"); + } else if (fs.existsSync(join(venvPath, "Scripts"))) { + return join(venvPath, "Scripts", "python.exe"); + } + throw new Error("Virtual environment not found. Run 'npm run install' first."); +} + +const argv = parseArgs({ + args: process.argv.slice(2), + options: { + emitter: { type: "boolean", short: "e" }, + generator: { type: "boolean", short: "g" }, + generated: { type: "boolean" }, + check: { type: "boolean", short: "c" }, + help: { type: "boolean", short: "h" }, + }, +}); + +if (argv.values.help) { + console.log(` +${pc.bold("Usage:")} tsx format.ts [options] + +${pc.bold("Description:")} + Format code using Prettier (TypeScript) and Black (Python). + +${pc.bold("Options:")} + ${pc.cyan("-e, --emitter")} + Format TypeScript emitter code with Prettier. + + ${pc.cyan("-g, --generator")} + Format Python generator source code (pygen) with Black. + + ${pc.cyan("--generated")} + Format generated SDK packages with Black. + + ${pc.cyan("-c, --check")} + Check formatting without making changes (exit with error if unformatted). + + ${pc.cyan("-h, --help")} + Show this help message. + +${pc.bold("Examples:")} + ${pc.dim("# Format emitter + pygen source (default)")} + tsx format.ts + + ${pc.dim("# Format only TypeScript emitter")} + tsx format.ts --emitter + + ${pc.dim("# Format only pygen source code")} + tsx format.ts --generator + + ${pc.dim("# Check formatting without making changes")} + tsx format.ts --check + + ${pc.dim("# Format generated SDK packages")} + tsx format.ts --generated +`); + process.exit(0); +} + +function runCommand(command: string, args: string[]): Promise { + // Add node_modules/.bin directories to PATH so commands like prettier can be found + const pathSep = process.platform === "win32" ? ";" : ":"; + const binPaths = [ + join(root, "node_modules", ".bin"), + join(monorepoRoot, "node_modules", ".bin"), + ].join(pathSep); + const env = { + ...process.env, + PATH: `${binPaths}${pathSep}${process.env.PATH}`, + }; + + return new Promise((resolve) => { + console.log(`${pc.cyan("[RUN]")} ${command} ${args.join(" ")}`); + const proc = spawn(command, args, { + cwd: root, + stdio: "inherit", + shell: true, + env, + }); + + proc.on("close", (code) => { + if (code === 0) { + console.log(`${pc.green("[PASS]")} ${command} completed successfully`); + resolve(true); + } else { + console.log(`${pc.red("[FAIL]")} ${command} failed with code ${code}`); + resolve(false); + } + }); + + proc.on("error", (err) => { + console.log(`${pc.red("[ERROR]")} ${command}: ${err.message}`); + resolve(false); + }); + }); +} + +async function formatEmitter(check: boolean): Promise { + console.log(`\n${pc.bold("=== Formatting TypeScript Emitter ===")}\n`); + // Use prettier directly - it's available via node_modules/.bin in PATH + // Exclude CHANGELOG.md as it's managed by chronus changelog tool + const args = check + ? [ + "--check", + "emitter/", + "eng/scripts/", + "*.json", + "README.md", + "CONTRIBUTING.md", + "ARCHITECTURE.md", + ] + : [ + "--write", + "emitter/", + "eng/scripts/", + "*.json", + "README.md", + "CONTRIBUTING.md", + "ARCHITECTURE.md", + ]; + return runCommand("prettier", args); +} + +async function formatPygenSource(check: boolean): Promise { + console.log(`\n${pc.bold("=== Formatting Python Generator (pygen) ===")}\n`); + + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + return false; + } + + const args = [ + "-m", + "black", + "generator/pygen", + "eng/scripts/", + "--config", + "./eng/scripts/ci/config/pyproject.toml", + ]; + if (check) { + args.push("--check"); + } + return runCommand(pythonPath, args); +} + +async function formatGeneratedPackages(check: boolean): Promise { + console.log(`\n${pc.bold("=== Formatting Generated SDK Packages ===")}\n`); + + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + return false; + } + + const args = [ + "-m", + "black", + "generator/test/azure/generated", + "generator/test/unbranded/generated", + "--config", + "./eng/scripts/ci/config/pyproject.toml", + ]; + if (check) { + args.push("--check"); + } + return runCommand(pythonPath, args); +} + +async function main(): Promise { + const runEmitter = argv.values.emitter; + const runGenerator = argv.values.generator; + const runGenerated = argv.values.generated; + const check = argv.values.check || false; + + // If --generated is specified, only format generated packages + if (runGenerated) { + const result = await formatGeneratedPackages(check); + if (!result) process.exit(1); + console.log( + `\n${pc.green(pc.bold(`Generated SDK formatting ${check ? "check " : ""}complete!`))}\n`, + ); + return; + } + + // Default: format emitter + pygen source + const runBoth = !runEmitter && !runGenerator; + + let success = true; + + if (runEmitter || runBoth) { + const result = await formatEmitter(check); + if (!result) success = false; + } + + if (runGenerator || runBoth) { + const result = await formatPygenSource(check); + if (!result) success = false; + } + + if (!success) { + process.exit(1); + } + + console.log( + `\n${pc.green(pc.bold(`All formatting ${check ? "checks passed" : "complete"}!`))}\n`, + ); +} + +main().catch((error) => { + console.error(`${pc.red("Unexpected error:")}`, error); + process.exit(1); +}); diff --git a/packages/http-client-python/eng/scripts/ci/lint.ts b/packages/http-client-python/eng/scripts/ci/lint.ts index eb9c581bfcc..9d6150b9acc 100644 --- a/packages/http-client-python/eng/scripts/ci/lint.ts +++ b/packages/http-client-python/eng/scripts/ci/lint.ts @@ -1,36 +1,232 @@ +/* eslint-disable no-console */ +import { spawn } from "child_process"; +import fs from "fs"; +import { dirname, join } from "path"; +import pc from "picocolors"; +import { fileURLToPath } from "url"; import { parseArgs } from "util"; -import { runCommand } from "./utils.js"; -// PARSE INPUT ARGUMENTS +const root = join(dirname(fileURLToPath(import.meta.url)), "../../../"); +const monorepoRoot = join(root, "../../"); +const testsDir = join(root, "tests"); + +// Get Python venv path +function getVenvPython(): string { + const venvPath = join(root, "venv"); + if (fs.existsSync(join(venvPath, "bin"))) { + return join(venvPath, "bin", "python"); + } else if (fs.existsSync(join(venvPath, "Scripts"))) { + return join(venvPath, "Scripts", "python.exe"); + } + throw new Error("Virtual environment not found. Run 'npm run install' first."); +} const argv = parseArgs({ args: process.argv.slice(2), options: { - folderName: { type: "string" }, - command: { type: "string" }, + emitter: { type: "boolean", short: "e" }, + generator: { type: "boolean", short: "g" }, + generated: { type: "boolean" }, + flavor: { type: "string", short: "f" }, + help: { type: "boolean", short: "h" }, }, }); -export function pylint() { - runCommand("pylint", [argv.values.folderName!, "--rcfile", "./eng/scripts/ci/pylintrc"]); +if (argv.values.help) { + console.log(` +${pc.bold("Usage:")} tsx lint.ts [options] + +${pc.bold("Description:")} + Run linting checks on the codebase. + +${pc.bold("Options:")} + ${pc.cyan("-e, --emitter")} + Run ESLint on TypeScript emitter code. + + ${pc.cyan("-g, --generator")} + Run pylint on Python generator source code (pygen). + + ${pc.cyan("--generated")} + Run pylint on generated SDK packages (via tox). + Use with --flavor to specify azure or unbranded. + + ${pc.cyan("-f, --flavor ")} + SDK flavor to lint (only applies to --generated). + If not specified, lints both flavors. + + ${pc.cyan("-h, --help")} + Show this help message. + +${pc.bold("Examples:")} + ${pc.dim("# Lint emitter + pygen source (default)")} + tsx lint.ts + + ${pc.dim("# Lint only TypeScript emitter")} + tsx lint.ts --emitter + + ${pc.dim("# Lint only pygen source code")} + tsx lint.ts --generator + + ${pc.dim("# Lint generated SDK packages")} + tsx lint.ts --generated + + ${pc.dim("# Lint generated SDK packages for azure only")} + tsx lint.ts --generated --flavor=azure +`); + process.exit(0); +} + +function runCommand( + command: string, + args: string[], + cwd?: string, + displayName?: string, +): Promise { + const workingDir = cwd || root; + const name = displayName || command; + + // Add node_modules/.bin directories to PATH so commands like eslint can be found + // Also set NODE_PATH so that config files can resolve packages from monorepo's node_modules + const pathSep = process.platform === "win32" ? ";" : ":"; + const binPaths = [ + join(workingDir, "node_modules", ".bin"), + join(root, "node_modules", ".bin"), + join(monorepoRoot, "node_modules", ".bin"), + ].join(pathSep); + const nodePaths = [ + join(workingDir, "node_modules"), + join(root, "node_modules"), + join(monorepoRoot, "node_modules"), + ].join(pathSep); + const env = { + ...process.env, + PATH: `${binPaths}${pathSep}${process.env.PATH}`, + NODE_PATH: nodePaths, + }; + + return new Promise((resolve) => { + // If displayName is provided, show it as-is; otherwise show command + args + const logMessage = displayName ? displayName : `${command} ${args.join(" ")}`; + console.log(`${pc.cyan("[RUN]")} ${logMessage}`); + const proc = spawn(command, args, { + cwd: workingDir, + stdio: "inherit", + shell: true, + env, + }); + + proc.on("close", (code) => { + if (code === 0) { + console.log(`${pc.green("[PASS]")} ${name} completed successfully`); + resolve(true); + } else { + console.log(`${pc.red("[FAIL]")} ${name} failed with code ${code}`); + resolve(false); + } + }); + + proc.on("error", (err) => { + console.log(`${pc.red("[ERROR]")} ${name}: ${err.message}`); + resolve(false); + }); + }); } -export function mypy() { - runCommand("mypy", [argv.values.folderName!, "--config-file", "./eng/scripts/ci/mypy.ini"]); +async function lintEmitter(): Promise { + console.log(`\n${pc.bold("=== Linting TypeScript Emitter ===")}\n`); + // Run eslint with local config to avoid dependency on monorepo's eslint.config.js + // This ensures the package can be linted in CI without full monorepo dependencies + return runCommand( + "eslint", + ["emitter/", "--config", "eng/scripts/ci/config/eslint-ci.config.mjs", "--max-warnings=0"], + root, + "eslint emitter/ --max-warnings=0", + ); } -export function pyright() { - runCommand("pyright", [argv.values.folderName!, "-p", "./eng/scripts/ci/pyrightconfig.json"]); +async function lintPygenSource(): Promise { + console.log(`\n${pc.bold("=== Linting Python Generator (pygen) ===")}\n`); + + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + return false; + } + + // Lint pygen source code directly with pylint + return runCommand(pythonPath, [ + "-m", + "pylint", + "generator/pygen", + "--rcfile=eng/scripts/ci/config/pylintrc", + "--recursive=y", + "--py-version=3.9", + ]); } -if (argv.values.command === "pylint") { - pylint(); -} else if (argv.values.command === "mypy") { - mypy(); -} else if (argv.values.command === "pyright") { - pyright(); -} else { - pylint(); - mypy(); - pyright(); +async function lintGeneratedPackages(flavor?: string): Promise { + const flavors = flavor ? [flavor] : ["azure", "unbranded"]; + console.log(`\n${pc.bold(`=== Linting Generated SDK Packages (${flavors.join(", ")}) ===`)}\n`); + + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + return false; + } + + let success = true; + for (const f of flavors) { + const toxEnv = `lint-${f}`; + const result = await runCommand( + pythonPath, + ["-m", "tox", "-c", "tox.ini", "-e", toxEnv], + testsDir, + ); + if (!result) success = false; + } + return success; } + +async function main(): Promise { + const runEmitter = argv.values.emitter; + const runGenerator = argv.values.generator; + const runGenerated = argv.values.generated; + + // If --generated is specified, only lint generated packages + if (runGenerated) { + const result = await lintGeneratedPackages(argv.values.flavor); + if (!result) process.exit(1); + console.log(`\n${pc.green(pc.bold("Generated SDK linting complete!"))}\n`); + return; + } + + // Default: lint emitter + pygen source + const runBoth = !runEmitter && !runGenerator; + + let success = true; + + if (runEmitter || runBoth) { + const result = await lintEmitter(); + if (!result) success = false; + } + + if (runGenerator || runBoth) { + const result = await lintPygenSource(); + if (!result) success = false; + } + + if (!success) { + process.exit(1); + } + + console.log(`\n${pc.green(pc.bold("All linting checks passed!"))}\n`); +} + +main().catch((error) => { + console.error(`${pc.red("Unexpected error:")}`, error); + process.exit(1); +}); diff --git a/packages/http-client-python/eng/scripts/ci/regenerate-common.ts b/packages/http-client-python/eng/scripts/ci/regenerate-common.ts index 9f9a91266d6..101cfc7b293 100644 --- a/packages/http-client-python/eng/scripts/ci/regenerate-common.ts +++ b/packages/http-client-python/eng/scripts/ci/regenerate-common.ts @@ -282,6 +282,7 @@ export interface RegenerateFlagsInput { debug?: boolean; name?: string; pyodide?: boolean; + jobs?: number; } export interface RegenerateFlags { @@ -403,8 +404,9 @@ export function buildOptions( } if (options["emitter-output-dir"] === undefined) { const packageName = options["package-name"] || defaultPackageName(spec, config); + // Output to new tests/generated// structure options["emitter-output-dir"] = toPosix( - `${generatedFolder}/test/${flags.flavor}/generated/${packageName}`, + `${generatedFolder}/../tests/generated/${flags.flavor}/${packageName}`, ); } if (flags.debug) { @@ -423,21 +425,21 @@ export async function runTaskPool( tasks: Array<() => Promise>, poolLimit: number, ): Promise { - async function worker(start: number, end: number) { - while (start < end) { - await tasks[start](); - start++; + const executing: Set> = new Set(); + + for (const task of tasks) { + // Start the task and remove from set when done + const p: Promise = task().finally(() => executing.delete(p)); + executing.add(p); + + // If at capacity, wait for one to complete + if (executing.size >= poolLimit) { + await Promise.race(executing); } } - const workers = []; - let start = 0; - while (start < tasks.length) { - const end = Math.min(start + poolLimit, tasks.length); - workers.push((async () => await worker(start, end))()); - start = end; - } - await Promise.all(workers); + // Wait for remaining tasks + await Promise.all(executing); } export async function regenerate( @@ -467,6 +469,8 @@ export async function regenerate( }); // Run tasks with a concurrency limit - await runTaskPool(tasks, 30); + // Default: 30 jobs, or use provided value + const poolLimit = flags.jobs ?? 30; + await runTaskPool(tasks, poolLimit); } } diff --git a/packages/http-client-python/eng/scripts/ci/regenerate.ts b/packages/http-client-python/eng/scripts/ci/regenerate.ts index 84bc53727bd..3bb5d37ef15 100644 --- a/packages/http-client-python/eng/scripts/ci/regenerate.ts +++ b/packages/http-client-python/eng/scripts/ci/regenerate.ts @@ -1,41 +1,91 @@ /* eslint-disable no-console */ -import chalk from "chalk"; -import { execFile } from "child_process"; +/** + * Regenerates Python SDK code from TypeSpec definitions. + * + * Uses in-process TypeSpec compilation to avoid subprocess spawning overhead. + * This is significantly faster than spawning `tsp compile` for each spec. + */ + +import { compile, NodeHost } from "@typespec/compiler"; import { promises, rmSync } from "fs"; -import { join, resolve } from "path"; +import { platform } from "os"; +import { dirname, join, relative, resolve } from "path"; +import pc from "picocolors"; import { fileURLToPath } from "url"; -import { parseArgs, promisify } from "util"; +import { parseArgs } from "util"; import { BASE_AZURE_EMITTER_OPTIONS, BASE_EMITTER_OPTIONS, - buildOptions, - regenerate, + getSubdirectories, + SpecialFlags, toPosix, - type RegenerateConfig, type RegenerateFlags, - type RegenerateFlagsInput, - type TspCommand, } from "./regenerate-common.js"; -// PARSE INPUT ARGUMENTS - +// Parse arguments const argv = parseArgs({ args: process.argv.slice(2), options: { - flavor: { type: "string" }, - name: { type: "string" }, - debug: { type: "boolean" }, + flavor: { type: "string", short: "f" }, + name: { type: "string", short: "n" }, + debug: { type: "boolean", short: "d" }, pluginDir: { type: "string" }, emitterName: { type: "string" }, generatedFolder: { type: "string" }, - pyodide: { type: "boolean" }, + jobs: { type: "string", short: "j" }, + help: { type: "boolean", short: "h" }, }, }); -// Get the directory of the current file +if (argv.values.help) { + console.log(` +${pc.bold("Usage:")} tsx regenerate.ts [options] + +${pc.bold("Description:")} + Regenerates Python SDK code from TypeSpec definitions using in-process compilation. + This avoids spawning a new Node.js process for each spec, making it significantly faster. + +${pc.bold("Options:")} + ${pc.cyan("-f, --flavor ")} + SDK flavor to regenerate. If not specified, regenerates both flavors. + + ${pc.cyan("-n, --name ")} + Filter packages by name pattern (case-insensitive substring match). + Examples: + --name xml Regenerate packages containing "xml" + --name authentication Regenerate authentication packages + --name type/array Regenerate the type/array package + + ${pc.cyan("-d, --debug")} + Enable debug output during regeneration. + + ${pc.cyan("-j, --jobs ")} + Number of parallel compilation tasks (default: 30 on Linux/Mac, 10 on Windows). + + ${pc.cyan("-h, --help")} + Show this help message. + +${pc.bold("Examples:")} + ${pc.dim("# Regenerate all packages for both flavors")} + tsx regenerate.ts + + ${pc.dim("# Regenerate only Azure packages")} + tsx regenerate.ts --flavor azure + + ${pc.dim("# Regenerate a specific package by name")} + tsx regenerate.ts --flavor azure --name authentication-api-key + + ${pc.dim("# Regenerate with more parallelism")} + tsx regenerate.ts --jobs 50 +`); + process.exit(0); +} + +// Get paths +const SCRIPT_DIR = dirname(fileURLToPath(import.meta.url)); const PLUGIN_DIR = argv.values.pluginDir ? resolve(argv.values.pluginDir) - : resolve(fileURLToPath(import.meta.url), "../../../../"); + : resolve(SCRIPT_DIR, "../../../"); const AZURE_HTTP_SPECS = resolve(PLUGIN_DIR, "node_modules/@azure-tools/azure-http-specs/specs"); const HTTP_SPECS = resolve(PLUGIN_DIR, "node_modules/@typespec/http-specs/specs"); const GENERATED_FOLDER = argv.values.generatedFolder @@ -43,6 +93,7 @@ const GENERATED_FOLDER = argv.values.generatedFolder : resolve(PLUGIN_DIR, "generator"); const EMITTER_NAME = argv.values.emitterName || "@typespec/http-client-python"; +// Emitter options const AZURE_EMITTER_OPTIONS: Record | Record[]> = { ...BASE_AZURE_EMITTER_OPTIONS, "client/structure/client-operation-group": { @@ -56,82 +107,268 @@ const EMITTER_OPTIONS: Record | Record { - const cmd = tspCommand.command as string[]; - const execFileAsync = promisify(execFile); +interface CompileTask { + spec: string; + outputDir: string; + options: Record; +} + +// Group of tasks for the same spec that must run sequentially +interface TaskGroup { + spec: string; + tasks: CompileTask[]; +} + +function defaultPackageName(spec: string): string { + const specDir = spec.includes("azure") ? AZURE_HTTP_SPECS : HTTP_SPECS; + return toPosix(relative(specDir, dirname(spec))) + .replace(/\//g, "-") + .toLowerCase(); +} + +function getEmitterOptions(spec: string, flavor: string): Record[] { + const specDir = spec.includes("azure") ? AZURE_HTTP_SPECS : HTTP_SPECS; + const relativeSpec = toPosix(relative(specDir, spec)); + const key = relativeSpec.includes("resiliency/srv-driven/old.tsp") + ? relativeSpec + : dirname(relativeSpec); + const emitterOpts = EMITTER_OPTIONS[key] || + (flavor === "azure" ? AZURE_EMITTER_OPTIONS[key] : [{}]) || [{}]; + return Array.isArray(emitterOpts) ? emitterOpts : [emitterOpts]; +} + +function buildTaskGroups(specs: string[], flags: RegenerateFlags): TaskGroup[] { + const groups: TaskGroup[] = []; + + for (const spec of specs) { + const tasks: CompileTask[] = []; + + for (const emitterConfig of getEmitterOptions(spec, flags.flavor)) { + const options: Record = { ...emitterConfig }; + + // Add flavor-specific options + options["flavor"] = flags.flavor; + for (const [k, v] of Object.entries(SpecialFlags[flags.flavor] ?? {})) { + options[k] = v; + } + + // Set output directory - use tests/generated// structure + const packageName = (options["package-name"] as string) || defaultPackageName(spec); + const outputDir = + (options["emitter-output-dir"] as string) || + toPosix(`${GENERATED_FOLDER}/../tests/generated/${flags.flavor}/${packageName}`); + options["emitter-output-dir"] = outputDir; + + // Debug mode + if (flags.debug) { + options["debug"] = true; + } + + // Examples directory + options["examples-dir"] = toPosix(join(dirname(spec), "examples")); + + tasks.push({ spec, outputDir, options }); + } + + groups.push({ spec, tasks }); + } + + return groups; +} + +async function compileSpec(task: CompileTask): Promise<{ success: boolean; error?: string }> { + const { spec, outputDir, options } = task; + try { - console.log(chalk.green(`start tsp ${cmd.join(" ")}`)); - await execFileAsync("tsp", cmd, { shell: true }); - console.log(chalk.green(`tsp ${cmd.join(" ")} succeeded`)); + // Build compiler options + const compilerOptions = { + emit: [PLUGIN_DIR], + options: { + [EMITTER_NAME]: options, + }, + }; + + // Compile using TypeSpec compiler directly (no subprocess) + const program = await compile(NodeHost, spec, compilerOptions); + + if (program.hasError()) { + const errors = program.diagnostics + .filter((d) => d.severity === "error") + .map((d) => d.message) + .join("\n"); + return { success: false, error: errors }; + } + + return { success: true }; } catch (err) { - rmSync(tspCommand.outputDir, { recursive: true, force: true }); - console.error(chalk.red(`exec error: ${err}`)); - throw err; + // Clean up on error + rmSync(outputDir, { recursive: true, force: true }); + return { success: false, error: String(err) }; + } +} + +async function runParallel(groups: TaskGroup[], maxJobs: number): Promise> { + const results = new Map(); + const executing: Set> = new Set(); + + // Count total tasks for progress + const totalTasks = groups.reduce((sum, g) => sum + g.tasks.length, 0); + let completed = 0; + + for (const group of groups) { + // Each group runs as a unit - tasks within a group run sequentially + // But different groups can run in parallel + const runGroup = async () => { + const specDir = group.spec.includes("azure") ? AZURE_HTTP_SPECS : HTTP_SPECS; + const shortName = toPosix(relative(specDir, dirname(group.spec))); + + // Run all tasks in this group sequentially to avoid state pollution + let groupSuccess = true; + for (const task of group.tasks) { + const packageName = (task.options["package-name"] as string) || shortName; + console.log(pc.blue(`[${completed + 1}/${totalTasks}] Compiling ${packageName}...`)); + + const result = await compileSpec(task); + completed++; + + if (result.success) { + console.log(pc.green(`[${completed}/${totalTasks}] ${packageName} succeeded`)); + } else { + console.log( + pc.red(`[${completed}/${totalTasks}] ${packageName} failed: ${result.error}`), + ); + groupSuccess = false; + } + } + + results.set(group.spec, groupSuccess); + }; + + const p = runGroup().finally(() => executing.delete(p)); + executing.add(p); + + if (executing.size >= maxJobs) { + await Promise.race(executing); + } } + + await Promise.all(executing); + return results; } -// create some files before regeneration. After regeneration, these files should be deleted and we will test it -// in test case -async function preprocess(flags: RegenerateFlagsInput): Promise { - if (flags.flavor === "azure") { - // create folder if not exists +// Preprocess: create files that should be deleted after regeneration (for testing) +async function preprocess(flavor: string): Promise { + if (flavor === "azure") { + // Use tests/generated// structure (same as output) + const testsGeneratedDir = resolve(GENERATED_FOLDER, "../tests/generated"); const folderParts = [ - "test", "azure", - "generated", "authentication-api-key", "authentication", "apikey", "_operations", ]; - await promises.mkdir(join(GENERATED_FOLDER, ...folderParts), { recursive: true }); + await promises.mkdir(join(testsGeneratedDir, ...folderParts), { recursive: true }); await promises.writeFile( - join(GENERATED_FOLDER, ...folderParts, "to_be_deleted.py"), + join(testsGeneratedDir, ...folderParts, "to_be_deleted.py"), "# This file is to be deleted after regeneration", ); } } -function _getCmdList(spec: string, flags: RegenerateFlags): TspCommand[] { - return buildOptions(spec, GENERATED_FOLDER, flags, config).map((po) => { - const optionArgs = Object.entries(po.options).flatMap(([k, v]) => [ - "--option", - `${EMITTER_NAME}.${k}="${v}"`, - ]); - return { - outputDir: po.outputDir, - command: ["compile", spec, "--emit", toPosix(PLUGIN_DIR), ...optionArgs], - }; - }); +async function regenerateFlavor( + flavor: string, + name: string | undefined, + debug: boolean, + jobs: number, +): Promise { + console.log(pc.cyan(`\n${"=".repeat(60)}`)); + console.log(pc.cyan(`Regenerating ${flavor} flavor`)); + console.log(pc.cyan(`${"=".repeat(60)}\n`)); + + const flags: RegenerateFlags = { flavor, debug, name }; + + // Preprocess + await preprocess(flavor); + + // Collect specs + const azureSpecs = flavor === "azure" ? await getSubdirectories(AZURE_HTTP_SPECS, flags) : []; + const standardSpecs = await getSubdirectories(HTTP_SPECS, flags); + const allSpecs = [...azureSpecs, ...standardSpecs]; + + // Build task groups (tasks for same spec run sequentially to avoid state pollution) + const groups = buildTaskGroups(allSpecs, flags); + const totalTasks = groups.reduce((sum, g) => sum + g.tasks.length, 0); + + console.log(pc.cyan(`Found ${allSpecs.length} specs (${totalTasks} total tasks) to compile`)); + console.log(pc.cyan(`Using ${jobs} parallel jobs\n`)); + + // Run compilation + const startTime = performance.now(); + const results = await runParallel(groups, jobs); + const duration = (performance.now() - startTime) / 1000; + + // Summary + const succeeded = Array.from(results.values()).filter((v) => v).length; + const failed = results.size - succeeded; + + console.log(pc.cyan(`\n${"=".repeat(60)}`)); + console.log(pc.cyan(`Results: ${succeeded} succeeded, ${failed} failed`)); + console.log(pc.cyan(`Time: ${duration.toFixed(1)}s`)); + console.log(pc.cyan(`${"=".repeat(60)}\n`)); + + return failed === 0; } -const config: RegenerateConfig = { - azureHttpSpecs: AZURE_HTTP_SPECS, - httpSpecs: HTTP_SPECS, - emitterOptions: EMITTER_OPTIONS, - azureEmitterOptions: AZURE_EMITTER_OPTIONS, - preprocess, - getCmdList: _getCmdList, - executeCommand, -}; +async function main() { + const isWindows = platform() === "win32"; + const flavor = argv.values.flavor; + const name = argv.values.name; + const debug = argv.values.debug ?? false; + // Windows has slower file system operations and process spawning, + // so use fewer parallel jobs to avoid I/O contention and memory pressure + const defaultJobs = isWindows ? 10 : 30; + const jobs = argv.values.jobs ? parseInt(argv.values.jobs, 10) : defaultJobs; -const start = performance.now(); -regenerate(argv.values, config) - .then(() => - console.log( - chalk.green( - `Regeneration successful, time taken: ${Math.round((performance.now() - start) / 1000)} s`, - ), - ), - ) - .catch((error) => console.error(chalk.red(`Regeneration failed: ${error.message}`))); + console.log(pc.cyan(`\nRegeneration config:`)); + console.log(pc.cyan(` Platform: ${isWindows ? "Windows" : "Unix"}`)); + console.log(pc.cyan(` Mode: in-process compilation`)); + console.log(pc.cyan(` Jobs: ${jobs}`)); + if (name) { + console.log(pc.cyan(` Filter: ${name}`)); + } + console.log(); + + const startTime = performance.now(); + let success: boolean; + + if (flavor) { + success = await regenerateFlavor(flavor, name, debug, jobs); + } else { + // Both flavors + const azureSuccess = await regenerateFlavor("azure", name, debug, jobs); + const unbrandedSuccess = await regenerateFlavor("unbranded", name, debug, jobs); + success = azureSuccess && unbrandedSuccess; + } + + const totalDuration = (performance.now() - startTime) / 1000; + console.log( + success + ? pc.green(`\nRegeneration completed successfully in ${totalDuration.toFixed(1)}s`) + : pc.red(`\nRegeneration failed after ${totalDuration.toFixed(1)}s`), + ); + + process.exit(success ? 0 : 1); +} + +main().catch((err) => { + console.error(pc.red(`Fatal error: ${err}`)); + process.exit(1); +}); diff --git a/packages/http-client-python/eng/scripts/ci/run-ci.ts b/packages/http-client-python/eng/scripts/ci/run-ci.ts deleted file mode 100644 index 11ae7456315..00000000000 --- a/packages/http-client-python/eng/scripts/ci/run-ci.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* eslint-disable no-console */ -import { execSync } from "child_process"; -import fs, { readFileSync } from "fs"; -import { platform } from "os"; -import { dirname, join } from "path"; -import { fileURLToPath } from "url"; -import { parseArgs } from "util"; - -const root = join(dirname(fileURLToPath(import.meta.url)), "../../../"); - -const argv = parseArgs({ - args: process.argv.slice(2), - options: { - validFolders: { type: "string", required: true, multiple: true }, - flavor: { type: "string" }, - command: { type: "string" }, - name: { type: "string" }, - testFolder: { type: "string" }, - }, -}); - -const foldersToProcess = argv.values.flavor - ? [argv.values.flavor] - : argv.values.validFolders || ["azure", "unbranded"]; - -const commandToRun = argv.values.command || "ci"; -const TEST_FOLDER = argv.values.testFolder || "generator/test"; - -function getCommand(command: string, flavor: string, name?: string): string { - let retval: string; - if (platform() === "win32") { - retval = `set FOLDER=${flavor} && ${venvPath} -m tox -c ./${TEST_FOLDER}/${flavor}/tox.ini -e ${command}`; - } else { - // Linux and macOS - retval = `FOLDER=${flavor} ${venvPath} -m tox -c ./${TEST_FOLDER}/${flavor}/tox.ini -e ${command}`; - } - if (name) { - return `${retval} -- -f ${name}`; - } - return retval; -} - -function sectionExistsInToxIni(command: string, flavor: string): boolean { - const toxIniPath = join(root, `${TEST_FOLDER}/${flavor}/tox.ini`); - const toxIniContent = readFileSync(toxIniPath, "utf-8"); - return command - .split(",") - .map((c) => `[testenv:${c}]`) - .every((section) => toxIniContent.includes(section)); -} - -function myExecSync(command: string, flavor: string, name?: string): void { - if (!sectionExistsInToxIni(command, flavor)) { - console.log(`No section for ${command} in tox.ini for flavor ${flavor}. Skipping...`); - return; - } - execSync(getCommand(command, flavor, name), { stdio: "inherit" }); - execSync(getCommand(command, "unittests", name), { stdio: "inherit" }); -} - -let venvPath = join(root, "venv"); -if (fs.existsSync(join(venvPath, "bin"))) { - venvPath = join(venvPath, "bin", "python"); -} else if (fs.existsSync(join(venvPath, "Scripts"))) { - venvPath = join(venvPath, "Scripts", "python.exe"); -} else { - throw new Error("Virtual environment doesn't exist."); -} - -foldersToProcess.forEach((flavor) => { - try { - if (getCommand(commandToRun, flavor, argv.values.name)) { - console.log(`Running ${commandToRun} for flavor ${flavor}...`); - myExecSync(commandToRun, flavor, argv.values.name); - } else { - console.error(`Error: Unknown command '${commandToRun}'.`); - process.exit(1); - } - } catch (error) { - const message = (error as Error).message; - if (message.includes("pyright") || message.includes("mypy") || message.includes("lint")) { - // fixing linting issues that come from upgrading python version in separate pr - process.exit(0); - } - console.error(message); - console.error(`Error executing command for flavor ${flavor}: ${message}`); - process.exit(1); - } -}); diff --git a/packages/http-client-python/eng/scripts/ci/run-tests.ts b/packages/http-client-python/eng/scripts/ci/run-tests.ts new file mode 100644 index 00000000000..2a1c9eeff24 --- /dev/null +++ b/packages/http-client-python/eng/scripts/ci/run-tests.ts @@ -0,0 +1,381 @@ +/* eslint-disable no-console */ +import { ChildProcess, spawn } from "child_process"; +import fs from "fs"; +import { cpus } from "os"; +import { dirname, join } from "path"; +import pc from "picocolors"; +import { fileURLToPath } from "url"; +import { parseArgs } from "util"; + +const root = join(dirname(fileURLToPath(import.meta.url)), "../../../"); +const monorepoRoot = join(root, "../../"); +const testsDir = join(root, "tests"); + +const argv = parseArgs({ + args: process.argv.slice(2), + options: { + emitter: { type: "boolean", short: "e" }, + generator: { type: "boolean", short: "g" }, + flavor: { type: "string", short: "f", default: "all" }, + env: { type: "string" }, + jobs: { type: "string", short: "j" }, + name: { type: "string", short: "n" }, + quiet: { type: "boolean", short: "q", default: false }, + help: { type: "boolean", short: "h", default: false }, + }, +}); + +if (argv.values.help) { + console.log(` +Usage: run-tests.ts [options] + +Options: + -e, --emitter Run TypeScript emitter tests (vitest) + -g, --generator Run Python generator tests (tox) + -f, --flavor SDK flavor to test (only applies to --generator) + If not specified, tests both flavors + --env Specific tox environments to run + Available: test, lint, mypy, pyright, docs, ci, unittest + -j, --jobs Number of parallel jobs (default: CPU cores - 2) + -n, --name Filter tests by name pattern + -q, --quiet Suppress test output (only show pass/fail summary) + -h, --help Show this help message + +Environments (for --generator): + test Run pytest tests for generated packages + lint Run pylint on generated packages + mypy Run mypy type checking on generated packages + pyright Run pyright type checking on generated packages + docs Run documentation validation (apiview, sphinx) + ci Run all checks (test + lint + mypy + pyright) + unittest Run unit tests for pygen internals + +Examples: + run-tests.ts # Run all tests (emitter + generator) + run-tests.ts --emitter # Run only emitter tests + run-tests.ts --generator # Run generator tests for all flavors + run-tests.ts --generator --flavor=azure # Run generator tests for azure only + run-tests.ts -g -f azure --env=test # Run pytest for azure only + run-tests.ts -g --env=mypy # Run mypy for all flavors + run-tests.ts -g -f unbranded --env=lint # Run pylint for unbranded only +`); + process.exit(0); +} + +// Get Python venv path +function getVenvPython(): string { + const venvPath = join(root, "venv"); + if (fs.existsSync(join(venvPath, "bin"))) { + return join(venvPath, "bin", "python"); + } else if (fs.existsSync(join(venvPath, "Scripts"))) { + return join(venvPath, "Scripts", "python.exe"); + } + throw new Error("Virtual environment not found. Run 'npm run install' first."); +} + +interface ToxResult { + env: string; + success: boolean; + duration: number; + error?: string; +} + +async function runToxEnv(env: string, pythonPath: string, name?: string): Promise { + const startTime = Date.now(); + const toxIniPath = join(testsDir, "tox.ini"); + + // Build command + const args = ["-m", "tox", "-c", toxIniPath, "-e", env]; + if (name) { + args.push("--", "-k", name); + } + + console.log(`${pc.blue("[START]")} ${env}`); + + return new Promise((resolve) => { + const proc: ChildProcess = spawn(pythonPath, args, { + cwd: testsDir, + stdio: !argv.values.quiet ? "inherit" : "pipe", + env: { ...process.env, FOLDER: env.split("-")[1] || "azure" }, + }); + + let stderr = ""; + if (argv.values.quiet && proc.stderr) { + proc.stderr.on("data", (data) => { + stderr += data.toString(); + }); + } + + proc.on("close", (code) => { + const duration = (Date.now() - startTime) / 1000; + const success = code === 0; + + if (success) { + console.log(`${pc.green("[PASS]")} ${env} (${duration.toFixed(1)}s)`); + } else { + console.log(`${pc.red("[FAIL]")} ${env} (${duration.toFixed(1)}s)`); + } + + resolve({ + env, + success, + duration, + error: success ? undefined : stderr || `Exit code: ${code}`, + }); + }); + + proc.on("error", (err) => { + const duration = (Date.now() - startTime) / 1000; + console.log(`${pc.red("[ERROR]")} ${env}: ${err.message}`); + resolve({ + env, + success: false, + duration, + error: err.message, + }); + }); + }); +} + +async function runParallel( + envs: string[], + pythonPath: string, + maxJobs: number, + name?: string, +): Promise { + const results: ToxResult[] = []; + const running: Map> = new Map(); + + for (const env of envs) { + // Wait if we're at max capacity + if (running.size >= maxJobs) { + const completed = await Promise.race(running.values()); + results.push(completed); + running.delete(completed.env); + } + + // Start new task + const task = runToxEnv(env, pythonPath, name); + running.set(env, task); + } + + // Wait for remaining tasks + const remaining = await Promise.all(running.values()); + results.push(...remaining); + + return results; +} + +async function _runSequential( + envs: string[], + pythonPath: string, + name?: string, +): Promise { + const results: ToxResult[] = []; + for (const env of envs) { + const result = await runToxEnv(env, pythonPath, name); + results.push(result); + } + return results; +} + +function printSummary(results: ToxResult[]): void { + console.log("\n" + pc.bold("═".repeat(60))); + console.log(pc.bold(" Test Results Summary")); + console.log(pc.bold("═".repeat(60)) + "\n"); + + const passed = results.filter((r) => r.success); + const failed = results.filter((r) => !r.success); + const totalDuration = results.reduce((sum, r) => sum + r.duration, 0); + + for (const result of results) { + const status = result.success ? pc.green("PASS") : pc.red("FAIL"); + console.log(` ${status} ${result.env} (${result.duration.toFixed(1)}s)`); + } + + console.log("\n" + "─".repeat(60)); + console.log( + ` ${pc.green(`Passed: ${passed.length}`)} ` + + `${pc.red(`Failed: ${failed.length}`)} ` + + `Total: ${results.length} ` + + `Duration: ${totalDuration.toFixed(1)}s`, + ); + console.log("─".repeat(60) + "\n"); + + if (failed.length > 0) { + console.log(pc.red("Failed environments:")); + for (const result of failed) { + console.log(` - ${result.env}`); + if (result.error && !argv.values.quiet) { + console.log(` ${result.error.split("\n").slice(0, 5).join("\n ")}`); + } + } + console.log(); + } +} + +async function runEmitterTests(): Promise { + const startTime = Date.now(); + console.log(`${pc.blue("[START]")} emitter (vitest)`); + + // Add node_modules/.bin directories to PATH so vitest can be found + const pathSep = process.platform === "win32" ? ";" : ":"; + const binPaths = [ + join(root, "node_modules", ".bin"), + join(monorepoRoot, "node_modules", ".bin"), + ].join(pathSep); + const env = { + ...process.env, + PATH: `${binPaths}${pathSep}${process.env.PATH}`, + }; + + return new Promise((resolve) => { + const proc: ChildProcess = spawn("vitest", ["run", "-c", "./emitter/vitest.config.ts"], { + cwd: root, + stdio: !argv.values.quiet ? "inherit" : "pipe", + shell: true, + env, + }); + + let stderr = ""; + if (argv.values.quiet && proc.stderr) { + proc.stderr.on("data", (data) => { + stderr += data.toString(); + }); + } + + proc.on("close", (code) => { + const duration = (Date.now() - startTime) / 1000; + const success = code === 0; + + if (success) { + console.log(`${pc.green("[PASS]")} emitter (vitest) (${duration.toFixed(1)}s)`); + } else { + console.log(`${pc.red("[FAIL]")} emitter (vitest) (${duration.toFixed(1)}s)`); + } + + resolve({ + env: "emitter (vitest)", + success, + duration, + error: success ? undefined : stderr || `Exit code: ${code}`, + }); + }); + + proc.on("error", (err) => { + const duration = (Date.now() - startTime) / 1000; + console.log(`${pc.red("[ERROR]")} emitter (vitest): ${err.message}`); + resolve({ + env: "emitter (vitest)", + success: false, + duration, + error: err.message, + }); + }); + }); +} + +async function main(): Promise { + const startTime = Date.now(); + + const runEmitter = argv.values.emitter; + const runGenerator = argv.values.generator; + const runBoth = !runEmitter && !runGenerator; + + const allResults: ToxResult[] = []; + + // Header + console.log(pc.cyan("\n╔══════════════════════════════════════════════════════════╗")); + console.log( + pc.cyan("║") + + pc.bold(" TypeSpec Python SDK Generator Tests ") + + pc.cyan("║"), + ); + console.log(pc.cyan("╚══════════════════════════════════════════════════════════╝") + "\n"); + + // Run emitter tests if requested + if (runEmitter || runBoth) { + console.log(`${pc.bold("=== Emitter Tests (TypeScript) ===")}\n`); + const emitterResult = await runEmitterTests(); + allResults.push(emitterResult); + } + + // Run generator tests if requested + if (runGenerator || runBoth) { + console.log(`\n${pc.bold("=== Generator Tests (Python) ===")}\n`); + + // Determine flavors + const flavors = argv.values.flavor === "all" ? ["azure", "unbranded"] : [argv.values.flavor!]; + + // Determine environments + let baseEnvs: string[]; + if (argv.values.env) { + baseEnvs = argv.values.env.split(",").map((e) => e.trim()); + } else { + // Default: run test environments + baseEnvs = ["test"]; + } + + // Build full environment list + const envs: string[] = []; + for (const env of baseEnvs) { + if (env === "unittest") { + envs.push("unittest"); + } else { + for (const flavor of flavors) { + envs.push(`${env}-${flavor}`); + } + } + } + + // Get Python path + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + process.exit(1); + } + + // Determine parallelism + // Test environments must run sequentially because they each start a mock server on port 3000 + const hasTestEnvs = envs.some((e) => e.startsWith("test-")); + const maxJobs = argv.values.jobs + ? parseInt(argv.values.jobs, 10) + : hasTestEnvs + ? 1 + : Math.max(2, cpus().length - 2); + + console.log(` Flavors: ${flavors.join(", ")}`); + console.log(` Environments: ${envs.join(", ")}`); + console.log( + ` Jobs: ${maxJobs}${hasTestEnvs && !argv.values.jobs ? " (sequential for test envs)" : ""}`, + ); + if (argv.values.name) { + console.log(` Filter: ${argv.values.name}`); + } + console.log(); + + // Run tests in parallel + const results = await runParallel(envs, pythonPath, maxJobs, argv.values.name); + + allResults.push(...results); + } + + // Print summary + printSummary(allResults); + + const totalDuration = (Date.now() - startTime) / 1000; + console.log(`Total execution time: ${totalDuration.toFixed(1)}s\n`); + + // Exit with appropriate code + const failed = allResults.filter((r) => !r.success); + if (failed.length > 0) { + process.exit(1); + } +} + +main().catch((error) => { + console.error(`${pc.red("Unexpected error:")}`, error); + process.exit(1); +}); diff --git a/packages/http-client-python/eng/scripts/ci/run_mypy.py b/packages/http-client-python/eng/scripts/ci/run_mypy.py index 72a4d477666..ce78ffb7db6 100644 --- a/packages/http-client-python/eng/scripts/ci/run_mypy.py +++ b/packages/http-client-python/eng/scripts/ci/run_mypy.py @@ -18,11 +18,12 @@ def get_config_file_location(): - mypy_ini_path = os.path.join(os.getcwd(), "../../eng/scripts/ci/mypy.ini") + # When running from tests/ directory via tox + mypy_ini_path = os.path.join(os.getcwd(), "../eng/scripts/ci/config/mypy.ini") if os.path.exists(mypy_ini_path): return mypy_ini_path - else: - return os.path.join(os.getcwd(), "../../../eng/scripts/ci/mypy.ini") + # Fallback for running from different directories + return os.path.join(os.path.dirname(__file__), "config/mypy.ini") def _single_dir_mypy(mod): diff --git a/packages/http-client-python/eng/scripts/ci/run_pylint.py b/packages/http-client-python/eng/scripts/ci/run_pylint.py index 370cf605129..bfe7296293f 100644 --- a/packages/http-client-python/eng/scripts/ci/run_pylint.py +++ b/packages/http-client-python/eng/scripts/ci/run_pylint.py @@ -18,11 +18,12 @@ def get_rfc_file_location(): - rfc_file_location = os.path.join(os.getcwd(), "../../../eng/scripts/ci/pylintrc") + # When running from tests/ directory via tox + rfc_file_location = os.path.join(os.getcwd(), "../eng/scripts/ci/config/pylintrc") if os.path.exists(rfc_file_location): return rfc_file_location - else: - return os.path.join(os.getcwd(), "../../../../eng/scripts/ci/pylintrc") + # Fallback for running from different directories + return os.path.join(os.path.dirname(__file__), "config/pylintrc") def _single_dir_pylint(mod): diff --git a/packages/http-client-python/eng/scripts/ci/run_pyright.py b/packages/http-client-python/eng/scripts/ci/run_pyright.py index c81e225b9cd..a86ccc2b3cd 100644 --- a/packages/http-client-python/eng/scripts/ci/run_pyright.py +++ b/packages/http-client-python/eng/scripts/ci/run_pyright.py @@ -19,11 +19,12 @@ def get_pyright_config_file_location(): - pyright_config = os.path.join(os.getcwd(), "../../eng/scripts/ci/pyrightconfig.json") + # When running from tests/ directory via tox + pyright_config = os.path.join(os.getcwd(), "../eng/scripts/ci/config/pyrightconfig.json") if os.path.exists(pyright_config): return pyright_config - else: - return os.path.join(os.getcwd(), "../../../eng/scripts/ci/pyrightconfig.json") + # Fallback for running from different directories + return os.path.join(os.path.dirname(__file__), "config/pyrightconfig.json") def _single_dir_pyright(mod): diff --git a/packages/http-client-python/eng/scripts/ci/typecheck.ts b/packages/http-client-python/eng/scripts/ci/typecheck.ts new file mode 100644 index 00000000000..ff794d418ec --- /dev/null +++ b/packages/http-client-python/eng/scripts/ci/typecheck.ts @@ -0,0 +1,225 @@ +/* eslint-disable no-console */ +import { spawn } from "child_process"; +import fs from "fs"; +import { dirname, join } from "path"; +import pc from "picocolors"; +import { fileURLToPath } from "url"; +import { parseArgs } from "util"; + +const root = join(dirname(fileURLToPath(import.meta.url)), "../../../"); +const testsDir = join(root, "tests"); + +// Get Python venv path +function getVenvPython(): string { + const venvPath = join(root, "venv"); + if (fs.existsSync(join(venvPath, "bin"))) { + return join(venvPath, "bin", "python"); + } else if (fs.existsSync(join(venvPath, "Scripts"))) { + return join(venvPath, "Scripts", "python.exe"); + } + throw new Error("Virtual environment not found. Run 'npm run install' first."); +} + +const argv = parseArgs({ + args: process.argv.slice(2), + options: { + generated: { type: "boolean" }, + flavor: { type: "string", short: "f" }, + mypy: { type: "boolean" }, + pyright: { type: "boolean" }, + help: { type: "boolean", short: "h" }, + }, +}); + +if (argv.values.help) { + console.log(` +${pc.bold("Usage:")} tsx typecheck.ts [options] + +${pc.bold("Description:")} + Run type checking (mypy + pyright) on Python code. + +${pc.bold("Options:")} + ${pc.cyan("--generated")} + Run type checking on generated SDK packages (via tox). + Use with --flavor to specify azure or unbranded. + + ${pc.cyan("-f, --flavor ")} + SDK flavor to check (only applies to --generated). + If not specified, checks both flavors. + + ${pc.cyan("--mypy")} + Run only mypy (skip pyright). + + ${pc.cyan("--pyright")} + Run only pyright (skip mypy). + + ${pc.cyan("-h, --help")} + Show this help message. + +${pc.bold("Examples:")} + ${pc.dim("# Type check pygen source (default - runs both mypy and pyright)")} + tsx typecheck.ts + + ${pc.dim("# Run only mypy on pygen source")} + tsx typecheck.ts --mypy + + ${pc.dim("# Run only pyright on pygen source")} + tsx typecheck.ts --pyright + + ${pc.dim("# Type check generated SDK packages")} + tsx typecheck.ts --generated + + ${pc.dim("# Type check generated SDK packages for azure only")} + tsx typecheck.ts --generated --flavor=azure +`); + process.exit(0); +} + +function runCommand(command: string, args: string[], cwd?: string): Promise { + return new Promise((resolve) => { + console.log(`${pc.cyan("[RUN]")} ${command} ${args.join(" ")}`); + const proc = spawn(command, args, { + cwd: cwd || root, + stdio: "inherit", + shell: true, + }); + + proc.on("close", (code) => { + if (code === 0) { + console.log(`${pc.green("[PASS]")} ${command} completed successfully`); + resolve(true); + } else { + console.log(`${pc.red("[FAIL]")} ${command} failed with code ${code}`); + resolve(false); + } + }); + + proc.on("error", (err) => { + console.log(`${pc.red("[ERROR]")} ${command}: ${err.message}`); + resolve(false); + }); + }); +} + +async function runMypyOnPygen(): Promise { + console.log(`\n${pc.bold("=== Running mypy on pygen ===")}\n`); + + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + return false; + } + + return runCommand(pythonPath, [ + "-m", + "mypy", + "generator/pygen", + "--config-file=eng/scripts/ci/config/mypy.ini", + "--ignore-missing", + ]); +} + +async function runPyrightOnPygen(): Promise { + console.log(`\n${pc.bold("=== Running pyright on pygen ===")}\n`); + + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + return false; + } + + return runCommand(pythonPath, [ + "-m", + "pyright", + "-p", + "eng/scripts/ci/config/pyrightconfig.json", + "generator/pygen", + ]); +} + +async function runTypecheckOnGenerated( + flavor?: string, + mypyOnly?: boolean, + pyrightOnly?: boolean, +): Promise { + const flavors = flavor ? [flavor] : ["azure", "unbranded"]; + console.log( + `\n${pc.bold(`=== Type Checking Generated SDK Packages (${flavors.join(", ")}) ===`)}\n`, + ); + + let pythonPath: string; + try { + pythonPath = getVenvPython(); + } catch (error) { + console.error(pc.red((error as Error).message)); + return false; + } + + let success = true; + + for (const f of flavors) { + if (!pyrightOnly) { + const mypyEnv = `mypy-${f}`; + const result = await runCommand( + pythonPath, + ["-m", "tox", "-c", "tox.ini", "-e", mypyEnv], + testsDir, + ); + if (!result) success = false; + } + + if (!mypyOnly) { + const pyrightEnv = `pyright-${f}`; + const result = await runCommand( + pythonPath, + ["-m", "tox", "-c", "tox.ini", "-e", pyrightEnv], + testsDir, + ); + if (!result) success = false; + } + } + + return success; +} + +async function main(): Promise { + const runGenerated = argv.values.generated; + const mypyOnly = argv.values.mypy && !argv.values.pyright; + const pyrightOnly = argv.values.pyright && !argv.values.mypy; + + // If --generated is specified, type check generated packages + if (runGenerated) { + const result = await runTypecheckOnGenerated(argv.values.flavor, mypyOnly, pyrightOnly); + if (!result) process.exit(1); + console.log(`\n${pc.green(pc.bold("Generated SDK type checking complete!"))}\n`); + return; + } + + // Default: type check pygen source + let success = true; + + if (!pyrightOnly) { + const mypyResult = await runMypyOnPygen(); + if (!mypyResult) success = false; + } + + if (!mypyOnly) { + const pyrightResult = await runPyrightOnPygen(); + if (!pyrightResult) success = false; + } + + if (!success) { + process.exit(1); + } + + console.log(`\n${pc.green(pc.bold("All type checks passed!"))}\n`); +} + +main().catch((error) => { + console.error(`${pc.red("Unexpected error:")}`, error); + process.exit(1); +}); diff --git a/packages/http-client-python/eng/scripts/ci/util.py b/packages/http-client-python/eng/scripts/ci/util.py index 6ebbe842d54..f15165f6937 100644 --- a/packages/http-client-python/eng/scripts/ci/util.py +++ b/packages/http-client-python/eng/scripts/ci/util.py @@ -12,7 +12,7 @@ logging.getLogger().setLevel(logging.INFO) -ROOT_FOLDER = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", "..", "..", "generator")) +ROOT_FOLDER = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", "..", "generator")) IGNORE_FOLDER = [] diff --git a/packages/http-client-python/eng/scripts/ci/utils.ts b/packages/http-client-python/eng/scripts/ci/utils.ts index 118b09c60da..32bbc4b0ca7 100644 --- a/packages/http-client-python/eng/scripts/ci/utils.ts +++ b/packages/http-client-python/eng/scripts/ci/utils.ts @@ -1,8 +1,8 @@ /* eslint-disable no-console */ -import chalk from "chalk"; import { execFile } from "child_process"; import { existsSync } from "fs"; import { dirname, join, resolve } from "path"; +import pc from "picocolors"; import process from "process"; import { fileURLToPath } from "url"; import { parseArgs, promisify } from "util"; @@ -21,11 +21,11 @@ export async function executeCommand(command: string, args: string[]) { const execFileAsync = promisify(execFile); try { await execFileAsync(command, args, { shell: true }); - console.log(chalk.green(`${command} passed`)); + console.log(pc.green(`${command} passed`)); } catch (err: any) { - console.error(chalk.red(`Error executing ${command}`)); - if (err.stdout) console.error(chalk.yellow("STDOUT:"), err.stdout); - if (err.stderr) console.error(chalk.yellow("STDERR:"), err.stderr); + console.error(pc.red(`Error executing ${command}`)); + if (err.stdout) console.error(pc.yellow("STDOUT:"), err.stdout); + if (err.stderr) console.error(pc.yellow("STDERR:"), err.stderr); process.exit(1); } } diff --git a/packages/http-client-python/eng/scripts/setup/build.ts b/packages/http-client-python/eng/scripts/setup/build.ts index c13770edeb8..71c258e68c6 100644 --- a/packages/http-client-python/eng/scripts/setup/build.ts +++ b/packages/http-client-python/eng/scripts/setup/build.ts @@ -4,7 +4,7 @@ import { runPython3 } from "./run-python3.js"; async function main() { await runPython3("./eng/scripts/setup/build_pygen_wheel.py"); // remove the venv_build_wheel directory - exec("rimraf ./venv_build_wheel", (error, stdout, stderr) => { + exec("rimraf ./venv_build_wheel", (error, stdout, _stderr) => { if (error) { console.error(`Error executing command: ${error.message}`); // eslint-disable-line no-console return; diff --git a/packages/http-client-python/eng/scripts/setup/build_pygen_wheel.py b/packages/http-client-python/eng/scripts/setup/build_pygen_wheel.py index ceb7ce4846d..74687b91167 100644 --- a/packages/http-client-python/eng/scripts/setup/build_pygen_wheel.py +++ b/packages/http-client-python/eng/scripts/setup/build_pygen_wheel.py @@ -25,6 +25,7 @@ from venvtools import python_run from package_manager import install_packages, create_venv_with_package_manager +# eng/scripts/setup/build_pygen_wheel.py -> need to go up 4 levels to get to package root _ROOT_DIR = Path(__file__).parent.parent.parent.parent diff --git a/packages/http-client-python/eng/scripts/setup/install.py b/packages/http-client-python/eng/scripts/setup/install.py index 4aa0a32f6c1..8a3532f1ab9 100644 --- a/packages/http-client-python/eng/scripts/setup/install.py +++ b/packages/http-client-python/eng/scripts/setup/install.py @@ -38,6 +38,7 @@ from pathlib import Path +# eng/scripts/setup/install.py -> need to go up 4 levels to get to package root _ROOT_DIR = Path(__file__).parent.parent.parent.parent diff --git a/packages/http-client-python/eng/scripts/setup/package_manager.py b/packages/http-client-python/eng/scripts/setup/package_manager.py index 87235ef690a..3b6698279d9 100644 --- a/packages/http-client-python/eng/scripts/setup/package_manager.py +++ b/packages/http-client-python/eng/scripts/setup/package_manager.py @@ -25,7 +25,7 @@ def _check_command_available(command: str) -> bool: try: subprocess.run([command, "--version"], capture_output=True, check=True) return True - except (subprocess.CalledProcessError, FileNotFoundError): + except (subprocess.CalledProcessError, FileNotFoundError, PermissionError): return False @@ -50,7 +50,7 @@ def detect_package_manager() -> str: try: subprocess.run([sys.executable, "-m", "pip", "--version"], capture_output=True, check=True) return "python -m pip" - except (subprocess.CalledProcessError, FileNotFoundError): + except (subprocess.CalledProcessError, FileNotFoundError, PermissionError): pass raise PackageManagerNotFoundError("No suitable package manager found. Please install either uv or pip.") diff --git a/packages/http-client-python/eng/scripts/setup/prepare.py b/packages/http-client-python/eng/scripts/setup/prepare.py index 358baa0d338..ff405d552df 100644 --- a/packages/http-client-python/eng/scripts/setup/prepare.py +++ b/packages/http-client-python/eng/scripts/setup/prepare.py @@ -15,6 +15,7 @@ from pathlib import Path from package_manager import create_venv_with_package_manager, install_packages +# eng/scripts/setup/prepare.py -> need to go up 4 levels to get to package root _ROOT_DIR = Path(__file__).parent.parent.parent.parent diff --git a/packages/http-client-python/eng/scripts/setup/prepare.ts b/packages/http-client-python/eng/scripts/setup/prepare.ts index 32d9157a243..d3cea514a62 100644 --- a/packages/http-client-python/eng/scripts/setup/prepare.ts +++ b/packages/http-client-python/eng/scripts/setup/prepare.ts @@ -3,7 +3,7 @@ import { runPython3 } from "./run-python3.js"; async function main() { try { await runPython3("./eng/scripts/setup/prepare.py"); - } catch (error) { + } catch { console.log("No Python found on your local environment. We will use Pyodide instead."); // eslint-disable-line no-console } } diff --git a/packages/http-client-python/eng/scripts/setup/run_tsp.py b/packages/http-client-python/eng/scripts/setup/run_tsp.py index 61f5a4e79b3..6d5d3247042 100644 --- a/packages/http-client-python/eng/scripts/setup/run_tsp.py +++ b/packages/http-client-python/eng/scripts/setup/run_tsp.py @@ -4,12 +4,12 @@ # license information. # -------------------------------------------------------------------------- import sys -import venv import logging from pathlib import Path from pygen import preprocess, codegen from pygen.utils import parse_args +# eng/scripts/setup/run_tsp.py -> need to go up 4 levels to get to package root _ROOT_DIR = Path(__file__).parent.parent.parent.parent _LOGGER = logging.getLogger(__name__) @@ -20,8 +20,8 @@ assert venv_preexists # Otherwise install was not done - env_builder = venv.EnvBuilder(with_pip=True) - venv_context = env_builder.ensure_directories(venv_path) + # Don't use EnvBuilder.ensure_directories() - it causes race conditions + # when multiple processes run in parallel. The venv already exists. if "--debug" in sys.argv or "--debug=true" in sys.argv: try: diff --git a/packages/http-client-python/eng/scripts/setup/system-requirements.ts b/packages/http-client-python/eng/scripts/setup/system-requirements.ts index 58e5c6b5f93..f47685db629 100644 --- a/packages/http-client-python/eng/scripts/setup/system-requirements.ts +++ b/packages/http-client-python/eng/scripts/setup/system-requirements.ts @@ -15,8 +15,12 @@ const execute = ( options.onCreate(cp); } - options.onStdOutData && cp.stdout.on("data", options.onStdOutData); - options.onStdErrData && cp.stderr.on("data", options.onStdErrData); + if (options.onStdOutData) { + cp.stdout.on("data", options.onStdOutData); + } + if (options.onStdErrData) { + cp.stderr.on("data", options.onStdErrData); + } let err = ""; let out = ""; @@ -33,7 +37,7 @@ const execute = ( cp.on("error", (err) => { reject(err); }); - cp.on("close", (code, signal) => + cp.on("close", (code, _signal) => resolve({ stdout: out, stderr: err, @@ -118,7 +122,7 @@ const tryPython = async ( `"${PRINT_PYTHON_VERSION_SCRIPT}"`, ]); return validateVersionRequirement(resolution, result.stdout.trim(), requirement); - } catch (e) { + } catch { return { error: true, ...resolution, diff --git a/packages/http-client-python/eng/scripts/setup/venvtools.py b/packages/http-client-python/eng/scripts/setup/venvtools.py index 74206ddc40b..c4afe0bcf84 100644 --- a/packages/http-client-python/eng/scripts/setup/venvtools.py +++ b/packages/http-client-python/eng/scripts/setup/venvtools.py @@ -9,6 +9,7 @@ from pathlib import Path +# eng/scripts/setup/venvtools.py -> need to go up 4 levels to get to package root _ROOT_DIR = Path(__file__).parent.parent.parent.parent diff --git a/packages/http-client-python/generator/pygen/codegen/models/operation.py b/packages/http-client-python/generator/pygen/codegen/models/operation.py index 902f34fe978..c5f15593893 100644 --- a/packages/http-client-python/generator/pygen/codegen/models/operation.py +++ b/packages/http-client-python/generator/pygen/codegen/models/operation.py @@ -449,21 +449,22 @@ def imports( # pylint: disable=too-many-branches, disable=too-many-statements file_import.add_import("json", ImportType.STDLIB) if self.enable_import_deserialize_xml: file_import.add_submodule_import(relative_path, "_deserialize_xml", ImportType.LOCAL) - elif self.need_deserialize: + if any( + r.type + and not isinstance(r.type, BinaryIteratorType) + and not xml_serializable(str(r.default_content_type)) + for r in self.responses + ): file_import.add_submodule_import(relative_path, "_deserialize", ImportType.LOCAL) if self.default_error_deserialization(serialize_namespace) or self.non_default_errors: - xml_non_default_errors = any( - xml_serializable(str(e.default_content_type)) for e in self.non_default_errors - ) try: default_error = next(e for e in self.exceptions if "default" in e.status_codes and e.type) except StopIteration: default_error = None - if xml_non_default_errors or ( - default_error and xml_serializable(str(default_error.default_content_type)) - ): + all_errors = list(self.non_default_errors) + ([default_error] if default_error else []) + if any(xml_serializable(str(e.default_content_type)) for e in all_errors): file_import.add_submodule_import(relative_path, "_failsafe_deserialize_xml", ImportType.LOCAL) - else: + if any(not xml_serializable(str(e.default_content_type)) for e in all_errors): file_import.add_submodule_import(relative_path, "_failsafe_deserialize", ImportType.LOCAL) return file_import diff --git a/packages/http-client-python/generator/pygen/codegen/models/parameter.py b/packages/http-client-python/generator/pygen/codegen/models/parameter.py index d637e016446..bcca96fa75c 100644 --- a/packages/http-client-python/generator/pygen/codegen/models/parameter.py +++ b/packages/http-client-python/generator/pygen/codegen/models/parameter.py @@ -109,10 +109,16 @@ def description(self) -> str: if type_description: base_description = add_to_description(base_description, type_description) if self.optional and isinstance(self.type, ConstantType): - base_description = add_to_description( - base_description, - f"Known values are {self.get_declaration()} and None.", - ) + if self.is_api_version: + base_description = add_to_description( + base_description, + f"Known values are {self.get_declaration()}.", + ) + else: + base_description = add_to_description( + base_description, + f"Known values are {self.get_declaration()} and None.", + ) if not (self.optional or self.client_default_value): base_description = add_to_description(base_description, "Required.") if self.client_default_value is not None: diff --git a/packages/http-client-python/generator/pygen/codegen/templates/model_base.py.jinja2 b/packages/http-client-python/generator/pygen/codegen/templates/model_base.py.jinja2 index 253b0c1c1d8..111a1585faf 100644 --- a/packages/http-client-python/generator/pygen/codegen/templates/model_base.py.jinja2 +++ b/packages/http-client-python/generator/pygen/codegen/templates/model_base.py.jinja2 @@ -622,57 +622,9 @@ class Model(_MyMutableMapping): for rest_field in self._attr_to_rest_field.values() if rest_field._default is not _UNSET } - if args: # pylint: disable=too-many-nested-blocks + if args: if isinstance(args[0], ET.Element): - existed_attr_keys = [] - model_meta = getattr(self, "_xml", {}) - - for rf in self._attr_to_rest_field.values(): - prop_meta = getattr(rf, "_xml", {}) - xml_name = prop_meta.get("name", rf._rest_name) - xml_ns = prop_meta.get("ns", model_meta.get("ns", None)) - if xml_ns: - xml_name = "{" + xml_ns + "}" + xml_name - - # attribute - if prop_meta.get("attribute", False) and args[0].get(xml_name) is not None: - existed_attr_keys.append(xml_name) - dict_to_pass[rf._rest_name] = _deserialize(rf._type, args[0].get(xml_name)) - continue - - # unwrapped element is array - if prop_meta.get("unwrapped", False): - # unwrapped array could either use prop items meta/prop meta - if prop_meta.get("itemsName"): - xml_name = prop_meta.get("itemsName") - xml_ns = prop_meta.get("itemNs") - if xml_ns: - xml_name = "{" + xml_ns + "}" + xml_name - items = args[0].findall(xml_name) # pyright: ignore - if len(items) > 0: - existed_attr_keys.append(xml_name) - dict_to_pass[rf._rest_name] = _deserialize(rf._type, items) - elif not rf._is_optional: - existed_attr_keys.append(xml_name) - dict_to_pass[rf._rest_name] = [] - continue - - # text element is primitive type - if prop_meta.get("text", False): - if args[0].text is not None: - dict_to_pass[rf._rest_name] = _deserialize(rf._type, args[0].text) - continue - - # wrapped element could be normal property or array, it should only have one element - item = args[0].find(xml_name) - if item is not None: - existed_attr_keys.append(xml_name) - dict_to_pass[rf._rest_name] = _deserialize(rf._type, item) - - # rest thing is additional properties - for e in args[0]: - if e.tag not in existed_attr_keys: - dict_to_pass[e.tag] = _convert_element(e) + dict_to_pass.update(self._init_from_xml(args[0])) else: dict_to_pass.update( {k: _create_value(_get_rest_field(self._attr_to_rest_field, k), v) for k, v in args[0].items()} @@ -691,6 +643,69 @@ class Model(_MyMutableMapping): ) super().__init__(dict_to_pass) + def _init_from_xml(self, element: ET.Element) -> dict[str, typing.Any]: + """Deserialize an XML element into a dict mapping rest field names to values. + + :param ET.Element element: The XML element to deserialize from. + :returns: A dictionary of rest_name to deserialized value pairs. + :rtype: dict + """ + result: dict[str, typing.Any] = {} + model_meta = getattr(self, "_xml", {}) + existed_attr_keys: list[str] = [] + + for rf in self._attr_to_rest_field.values(): + prop_meta = getattr(rf, "_xml", {}) + xml_name = prop_meta.get("name", rf._rest_name) + xml_ns = _resolve_xml_ns(prop_meta, model_meta) + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + + # attribute + if prop_meta.get("attribute", False) and element.get(xml_name) is not None: + existed_attr_keys.append(xml_name) + result[rf._rest_name] = _deserialize(rf._type, element.get(xml_name)) + continue + + # unwrapped element is array + if prop_meta.get("unwrapped", False): + # unwrapped array could either use prop items meta/prop meta + _items_name = prop_meta.get("itemsName") + if _items_name: + xml_name = _items_name + _items_ns = prop_meta.get("itemsNs") + if _items_ns is not None: + xml_ns = _items_ns + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + items = element.findall(xml_name) # pyright: ignore + if len(items) > 0: + existed_attr_keys.append(xml_name) + result[rf._rest_name] = _deserialize(rf._type, items) + elif not rf._is_optional: + existed_attr_keys.append(xml_name) + result[rf._rest_name] = [] + continue + + # text element is primitive type + if prop_meta.get("text", False): + if element.text is not None: + result[rf._rest_name] = _deserialize(rf._type, element.text) + continue + + # wrapped element could be normal property or array, it should only have one element + item = element.find(xml_name) + if item is not None: + existed_attr_keys.append(xml_name) + result[rf._rest_name] = _deserialize(rf._type, item) + + # rest thing is additional properties + for e in element: + if e.tag not in existed_attr_keys: + result[e.tag] = _convert_element(e) + + return result + def copy(self) -> "Model": return Model(self.__dict__) @@ -761,7 +776,7 @@ class Model(_MyMutableMapping): model_meta = getattr(cls, "_xml", {}) prop_meta = getattr(discriminator, "_xml", {}) xml_name = prop_meta.get("name", discriminator._rest_name) - xml_ns = prop_meta.get("ns", model_meta.get("ns", None)) + xml_ns = _resolve_xml_ns(prop_meta, model_meta) if xml_ns: xml_name = "{" + xml_ns + "}" + xml_name @@ -1243,6 +1258,58 @@ def serialize_xml(model: Model, exclude_readonly: bool = False) -> str: return ET.tostring(_get_element(model, exclude_readonly), encoding="unicode") # type: ignore +def _get_xml_ns(meta: dict[str, typing.Any]) -> typing.Optional[str]: + """Return the XML namespace from a metadata dict, checking both 'ns' (old-style) and 'namespace' (DPG) keys. + + :param dict meta: The metadata dictionary to extract namespace from. + :returns: The namespace string if 'ns' or 'namespace' key is present, None otherwise. + :rtype: str or None + """ + ns = meta.get("ns") + if ns is None: + ns = meta.get("namespace") + return ns + + +def _resolve_xml_ns( + prop_meta: dict[str, typing.Any], model_meta: typing.Optional[dict[str, typing.Any]] = None +) -> typing.Optional[str]: + """Resolve XML namespace for a property, falling back to model namespace when appropriate. + + Checks the property metadata first; if no namespace is found and the model does not declare + an explicit prefix, falls back to the model-level namespace. + + :param dict prop_meta: The property metadata dictionary. + :param dict model_meta: The model metadata dictionary, used as fallback. + :returns: The resolved namespace string, or None. + :rtype: str or None + """ + ns = _get_xml_ns(prop_meta) + if ns is None and model_meta is not None and not model_meta.get("prefix"): + ns = _get_xml_ns(model_meta) + return ns + + +def _set_xml_attribute( + element: ET.Element, name: str, value: typing.Any, prop_meta: dict[str, typing.Any] +) -> None: + """Set an XML attribute on an element, handling namespace prefix registration. + + :param ET.Element element: The element to set the attribute on. + :param str name: The default attribute name (wire name). + :param any value: The attribute value. + :param dict prop_meta: The property metadata dictionary. + """ + xml_name = prop_meta.get("name", name) + _attr_ns = _get_xml_ns(prop_meta) + if _attr_ns: + _attr_prefix = prop_meta.get("prefix") + if _attr_prefix: + _safe_register_namespace(_attr_prefix, _attr_ns) + xml_name = "{" + _attr_ns + "}" + xml_name + element.set(xml_name, _get_primitive_type_value(value)) + + def _get_element( o: typing.Any, exclude_readonly: bool = False, @@ -1254,10 +1321,16 @@ def _get_element( # if prop is a model, then use the prop element directly, else generate a wrapper of model if wrapped_element is None: + # When serializing as an array item (parent_meta is set), check if the parent has an + # explicit itemsName. This ensures correct element names for unwrapped arrays (where + # the element tag is the property/items name, not the model type name). + _items_name = parent_meta.get("itemsName") if parent_meta is not None else None + element_name = _items_name if _items_name else (model_meta.get("name") or o.__class__.__name__) + _model_ns = _get_xml_ns(model_meta) wrapped_element = _create_xml_element( - model_meta.get("name", o.__class__.__name__), + element_name, model_meta.get("prefix"), - model_meta.get("ns"), + _model_ns, ) readonly_props = [] @@ -1279,7 +1352,9 @@ def _get_element( # additional properties will not have rest field, use the wire name as xml name prop_meta = {"name": k} - # if no ns for prop, use model's + # Propagate model namespace to properties only for old-style "ns"-keyed models. + # DPG-generated models use the "namespace" key and explicitly declare namespace on + # each property that needs it, so propagation is intentionally skipped for them. if prop_meta.get("ns") is None and model_meta.get("ns"): prop_meta["ns"] = model_meta.get("ns") prop_meta["prefix"] = model_meta.get("prefix") @@ -1291,12 +1366,7 @@ def _get_element( # text could only set on primitive type wrapped_element.text = _get_primitive_type_value(v) elif prop_meta.get("attribute", False): - xml_name = prop_meta.get("name", k) - if prop_meta.get("ns"): - ET.register_namespace(prop_meta.get("prefix"), prop_meta.get("ns")) # pyright: ignore - xml_name = "{" + prop_meta.get("ns") + "}" + xml_name # pyright: ignore - # attribute should be primitive type - wrapped_element.set(xml_name, _get_primitive_type_value(v)) + _set_xml_attribute(wrapped_element, k, v, prop_meta) else: # other wrapped prop element wrapped_element.append(_get_wrapped_element(v, exclude_readonly, prop_meta)) @@ -1305,6 +1375,7 @@ def _get_element( return [_get_element(x, exclude_readonly, parent_meta) for x in o] # type: ignore if isinstance(o, dict): result = [] + _dict_ns = _get_xml_ns(parent_meta) if parent_meta else None for k, v in o.items(): result.append( _get_wrapped_element( @@ -1312,7 +1383,7 @@ def _get_element( exclude_readonly, { "name": k, - "ns": parent_meta.get("ns") if parent_meta else None, + "ns": _dict_ns, "prefix": parent_meta.get("prefix") if parent_meta else None, }, ) @@ -1321,13 +1392,16 @@ def _get_element( # primitive case need to create element based on parent_meta if parent_meta: + _items_ns = parent_meta.get("itemsNs") + if _items_ns is None: + _items_ns = _get_xml_ns(parent_meta) return _get_wrapped_element( o, exclude_readonly, { "name": parent_meta.get("itemsName", parent_meta.get("name")), "prefix": parent_meta.get("itemsPrefix", parent_meta.get("prefix")), - "ns": parent_meta.get("itemsNs", parent_meta.get("ns")), + "ns": _items_ns, }, ) @@ -1339,8 +1413,9 @@ def _get_wrapped_element( exclude_readonly: bool, meta: typing.Optional[dict[str, typing.Any]], ) -> ET.Element: + _meta_ns = _get_xml_ns(meta) if meta else None wrapped_element = _create_xml_element( - meta.get("name") if meta else None, meta.get("prefix") if meta else None, meta.get("ns") if meta else None + meta.get("name") if meta else None, meta.get("prefix") if meta else None, _meta_ns ) if isinstance(v, (dict, list)): wrapped_element.extend(_get_element(v, exclude_readonly, meta)) @@ -1361,11 +1436,29 @@ def _get_primitive_type_value(v) -> str: return str(v) +def _safe_register_namespace(prefix: str, ns: str) -> None: + """Register an XML namespace prefix, handling reserved prefix patterns. + + Some prefixes (e.g. 'ns2') match Python's reserved 'ns\\d+' pattern used for + auto-generated prefixes, causing register_namespace to raise ValueError. + Falls back to directly registering in the internal namespace map. + + :param str prefix: The namespace prefix to register. + :param str ns: The namespace URI. + """ + try: + ET.register_namespace(prefix, ns) + except ValueError: + _ns_map = getattr(ET, "_namespace_map", None) + if _ns_map is not None: + _ns_map[ns] = prefix + + def _create_xml_element( tag: typing.Any, prefix: typing.Optional[str] = None, ns: typing.Optional[str] = None ) -> ET.Element: if prefix and ns: - ET.register_namespace(prefix, ns) + _safe_register_namespace(prefix, ns) if ns: return ET.Element("{" + ns + "}" + tag) return ET.Element(tag) diff --git a/packages/http-client-python/generator/pygen/preprocess/__init__.py b/packages/http-client-python/generator/pygen/preprocess/__init__.py index e2f8cf842b3..843418bc529 100644 --- a/packages/http-client-python/generator/pygen/preprocess/__init__.py +++ b/packages/http-client-python/generator/pygen/preprocess/__init__.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- """The preprocessing autorest plugin.""" + import copy from typing import Callable, Any, Optional @@ -266,8 +267,9 @@ def update_types(self, yaml_data: list[dict[str, Any]]) -> None: add_redefined_builtin_info(property["clientName"], property) if type.get("name"): pad_type = PadType.MODEL if type["type"] == "model" else PadType.ENUM_CLASS - name = self.pad_reserved_words(type["name"], pad_type, type) - type["name"] = name[0].upper() + name[1:] + if type["type"] != "enumvalue": + name = self.pad_reserved_words(type["name"], pad_type, type) + type["name"] = name[0].upper() + name[1:] type["description"] = update_description(type.get("description", ""), type["name"]) type["snakeCaseName"] = to_snake_case(type["name"]) if type.get("values"): diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_older_versions_async.py b/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_older_versions_async.py deleted file mode 100644 index d9f36f938f3..00000000000 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_older_versions_async.py +++ /dev/null @@ -1,111 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -------------------------------------------------------------------------- -import pytest -from azure.resourcemanager.multiserviceolderversions.combined.aio import CombinedClient -from azure.resourcemanager.multiserviceolderversions.combined.models import ( - VirtualMachine, - Disk, - VirtualMachineProperties, - DiskProperties, -) - - -@pytest.fixture -async def client(credential, authentication_policy): - """Create a Combined async client for testing.""" - return CombinedClient( - credential=credential, - subscription_id="00000000-0000-0000-0000-000000000000", - base_url="http://localhost:3000", - authentication_policy=authentication_policy, - polling_interval=0.1, - ) - - -@pytest.mark.asyncio -async def test_virtual_machines_get(client): - """Test getting a virtual machine.""" - resource_group_name = "test-rg" - vm_name = "vm-old1" - - result = await client.virtual_machines.get(resource_group_name=resource_group_name, vm_name=vm_name) - - assert result is not None - assert isinstance(result, VirtualMachine) - assert result.name == vm_name - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.size == "Standard_D2s_v3" - - -@pytest.mark.asyncio -async def test_virtual_machines_create_or_update(client): - """Test creating or updating a virtual machine.""" - resource_group_name = "test-rg" - vm_name = "vm-old1" - - vm_resource = VirtualMachine( - location="eastus", - properties=VirtualMachineProperties(size="Standard_D2s_v3"), - ) - - poller = await client.virtual_machines.begin_create_or_update( - resource_group_name=resource_group_name, - vm_name=vm_name, - resource=vm_resource, - ) - - result = await poller.result() - assert result is not None - assert isinstance(result, VirtualMachine) - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.size == "Standard_D2s_v3" - - -@pytest.mark.asyncio -async def test_disks_get(client): - """Test getting a disk.""" - resource_group_name = "test-rg" - disk_name = "disk-old1" - - result = await client.disks.get(resource_group_name=resource_group_name, disk_name=disk_name) - - assert result is not None - assert isinstance(result, Disk) - assert result.name == disk_name - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.disk_size_gb == 128 - - -@pytest.mark.asyncio -async def test_disks_create_or_update(client): - """Test creating or updating a disk.""" - resource_group_name = "test-rg" - disk_name = "disk-old1" - - disk_resource = Disk( - location="eastus", - properties=DiskProperties(disk_size_gb=128), - ) - - poller = await client.disks.begin_create_or_update( - resource_group_name=resource_group_name, - disk_name=disk_name, - resource=disk_resource, - ) - - result = await poller.result() - assert result is not None - assert isinstance(result, Disk) - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.disk_size_gb == 128 diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service_older_versions.py b/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service_older_versions.py deleted file mode 100644 index e98b0e07796..00000000000 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service_older_versions.py +++ /dev/null @@ -1,107 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -------------------------------------------------------------------------- -import pytest -from azure.resourcemanager.multiserviceolderversions.combined import CombinedClient -from azure.resourcemanager.multiserviceolderversions.combined.models import ( - VirtualMachine, - Disk, - VirtualMachineProperties, - DiskProperties, -) - - -@pytest.fixture -def client(credential, authentication_policy): - """Create a Combined client for testing.""" - return CombinedClient( - credential=credential, - subscription_id="00000000-0000-0000-0000-000000000000", - base_url="http://localhost:3000", - authentication_policy=authentication_policy, - polling_interval=0.1, - ) - - -def test_virtual_machines_get(client): - """Test getting a virtual machine.""" - resource_group_name = "test-rg" - vm_name = "vm-old1" - - result = client.virtual_machines.get(resource_group_name=resource_group_name, vm_name=vm_name) - - assert result is not None - assert isinstance(result, VirtualMachine) - assert result.name == vm_name - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.size == "Standard_D2s_v3" - - -def test_virtual_machines_create_or_update(client): - """Test creating or updating a virtual machine.""" - resource_group_name = "test-rg" - vm_name = "vm-old1" - - vm_resource = VirtualMachine( - location="eastus", - properties=VirtualMachineProperties(size="Standard_D2s_v3"), - ) - - poller = client.virtual_machines.begin_create_or_update( - resource_group_name=resource_group_name, - vm_name=vm_name, - resource=vm_resource, - ) - - result = poller.result() - assert result is not None - assert isinstance(result, VirtualMachine) - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.size == "Standard_D2s_v3" - - -def test_disks_get(client): - """Test getting a disk.""" - resource_group_name = "test-rg" - disk_name = "disk-old1" - - result = client.disks.get(resource_group_name=resource_group_name, disk_name=disk_name) - - assert result is not None - assert isinstance(result, Disk) - assert result.name == disk_name - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.disk_size_gb == 128 - - -def test_disks_create_or_update(client): - """Test creating or updating a disk.""" - resource_group_name = "test-rg" - disk_name = "disk-old1" - - disk_resource = Disk( - location="eastus", - properties=DiskProperties(disk_size_gb=128), - ) - - poller = client.disks.begin_create_or_update( - resource_group_name=resource_group_name, - disk_name=disk_name, - resource=disk_resource, - ) - - result = poller.result() - assert result is not None - assert isinstance(result, Disk) - assert result.location == "eastus" - assert result.properties is not None - assert result.properties.provisioning_state == "Succeeded" - assert result.properties.disk_size_gb == 128 diff --git a/packages/http-client-python/generator/test/azure/requirements.txt b/packages/http-client-python/generator/test/azure/requirements.txt deleted file mode 100644 index 996b8b767cb..00000000000 --- a/packages/http-client-python/generator/test/azure/requirements.txt +++ /dev/null @@ -1,126 +0,0 @@ --r ../dev_requirements.txt --e ../../ -azure-mgmt-core==1.6.0 - -# === common azure dependencies across repos === -# only for azure --e ./generated/azure-client-generator-core-access --e ./generated/azure-client-generator-core-api-version-header --e ./generated/azure-client-generator-core-api-version-path --e ./generated/azure-client-generator-core-api-version-query --e ./generated/azure-client-generator-core-client-initialization-default --e ./generated/azure-client-generator-core-client-initialization-individually --e ./generated/azure-client-generator-core-client-initialization-individuallyparent --e ./generated/azure-client-generator-core-deserialize-empty-string-as-null --e ./generated/azure-client-generator-core-flatten-property --e ./generated/azure-client-generator-core-hierarchy-building --e ./generated/azure-client-generator-core-usage --e ./generated/azure-client-generator-core-override --e ./generated/azure-client-generator-core-client-location-move-method-parameter-to-client --e ./generated/azure-client-generator-core-client-location-move-to-existing-sub-client --e ./generated/azure-client-generator-core-client-location-move-to-new-sub-client --e ./generated/azure-client-generator-core-client-location-move-to-root-client --e ./generated/azure-client-generator-core-client-default-value --e ./generated/azure-client-generator-core-alternate-type --e ./generated/azure-client-generator-core-next-link-verb --e ./generated/azure-core-basic --e ./generated/azure-core-scalar --e ./generated/azure-core-lro-rpc --e ./generated/azure-core-lro-standard --e ./generated/azure-core-model --e ./generated/azure-core-traits --e ./generated/azure-core-page --e ./generated/azure-encode-duration --e ./generated/azure-special-headers-client-request-id/ --e ./generated/azure-example-basic --e ./generated/azure-resource-manager-common-properties --e ./generated/azure-resource-manager-large-header --e ./generated/azure-resource-manager-non-resource --e ./generated/azure-resource-manager-operation-templates --e ./generated/azure-resource-manager-resources --e ./generated/azure-resource-manager-method-subscription-id --e ./generated/azure-resource-manager-multi-service --e ./generated/azure-resource-manager-multi-service-older-versions --e ./generated/azure-resource-manager-multi-service-shared-models --e ./generated/azure-versioning-previewversion --e ./generated/client-namespace --e ./generated/azure-payload-pageable --e ./generated/client-naming --e ./generated/client-naming-enum-conflict --e ./generated/client-overload --e ./generated/client-structure-default --e ./generated/client-structure-clientoperationgroup --e ./generated/client-structure-multiclient --e ./generated/client-structure-renamedoperation --e ./generated/client-structure-twooperationgroup --e ./generated/resiliency-srv-driven1 --e ./generated/resiliency-srv-driven2 --e ./generated/service-multi-service -# === end common azure dependencies across repos === - -# === common test dependencies across repos === --e ./generated/authentication-api-key --e ./generated/authentication-http-custom --e ./generated/authentication-noauth-union --e ./generated/authentication-oauth2 --e ./generated/authentication-union --e ./generated/setuppy-authentication-union --e ./generated/specs-documentation --e ./generated/encode-duration --e ./generated/encode-numeric --e ./generated/encode-array --e ./generated/parameters-basic --e ./generated/parameters-collection-format --e ./generated/parameters-path --e ./generated/parameters-query --e ./generated/parameters-spread --e ./generated/serialization-encoded-name-json --e ./generated/server-endpoint-not-defined --e ./generated/server-path-multiple --e ./generated/server-path-single --e ./generated/server-versions-versioned --e ./generated/server-versions-not-versioned --e ./generated/special-words --e ./generated/streaming-jsonl --e ./generated/typetest-array --e ./generated/typetest-dictionary --e ./generated/typetest-enum-extensible --e ./generated/typetest-enum-fixed -# -e ./generated/typetest-file --e ./generated/typetest-model-enumdiscriminator --e ./generated/typetest-model-nesteddiscriminator --e ./generated/typetest-model-notdiscriminated --e ./generated/typetest-model-singlediscriminator --e ./generated/typetest-model-recursive --e ./generated/typetest-model-usage --e ./generated/typetest-model-visibility --e ./generated/typetest-property-nullable --e ./generated/typetest-property-optional --e ./generated/typetest-property-valuetypes --e ./generated/typetest-property-additionalproperties --e ./generated/typetest-scalar --e ./generated/typetest-union --e ./generated/typetest-discriminatedunion --e ./generated/typetest-model-empty --e ./generated/headasbooleantrue --e ./generated/headasbooleanfalse --e ./generated/parameters-body-optionality --e ./generated/special-headers-repeatability --e ./generated/special-headers-conditional-request --e ./generated/encode-datetime --e ./generated/encode-bytes --e ./generated/payload-content-negotiation --e ./generated/payload-json-merge-patch --e ./generated/payload-pageable --e ./generated/payload-multipart --e ./generated/payload-media-type --e ./generated/payload-xml --e ./generated/routes --e ./generated/response-status-code-range --e ./generated/versioning-added --e ./generated/versioning-madeoptional --e ./generated/versioning-removed --e ./generated/versioning-renamedfrom --e ./generated/versioning-returntypechangedfrom --e ./generated/versioning-typechangedfrom -# === end common test dependencies across repos === diff --git a/packages/http-client-python/generator/test/azure/tox.ini b/packages/http-client-python/generator/test/azure/tox.ini deleted file mode 100644 index b0fa92a1098..00000000000 --- a/packages/http-client-python/generator/test/azure/tox.ini +++ /dev/null @@ -1,64 +0,0 @@ -[tox] -envlist=base, lint, mypy, pyright, apiview, sphinx -skipsdist=True - -[testenv:ci] -deps= - -r requirements.txt -commands = - # pytest - {[testenv:test]commands} - - # pylint - {[testenv:lint]commands} - - # mypy - {[testenv:mypy]commands} - - # pyright - {[testenv:pyright]commands} - - # apiview - {[testenv:apiview]commands} - - # sphinx docstring validation - {[testenv:sphinx]commands} - -[testenv:test] -deps= - -r requirements.txt -commands = - pytest mock_api_tests ../generic_mock_api_tests - -[testenv:lint] -deps= - -r requirements.txt -commands = - pip install azure-pylint-guidelines-checker==0.5.2 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" - python ../../../eng/scripts/ci/run_pylint.py -t azure -s "generated" {posargs} - -[testenv:mypy] -deps= - -r requirements.txt -commands = - python ../../../eng/scripts/ci/run_mypy.py -t azure -s "generated" {posargs} - -[testenv:pyright] -deps= - -r requirements.txt -commands = - python ../../../eng/scripts/ci/run_pyright.py -t azure -s "generated" {posargs} - -[testenv:apiview] -deps= - -r requirements.txt -commands = - pip install apiview-stub-generator==0.3.19 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" - python ../../../eng/scripts/ci/run_apiview.py -t azure -s "generated" {posargs} - -[testenv:sphinx] -basepython = python3.10 -deps= - -r requirements.txt -commands = - python ../../../eng/scripts/ci/run_sphinx_build.py -t azure -s "generated" {posargs} diff --git a/packages/http-client-python/generator/test/dev_requirements.txt b/packages/http-client-python/generator/test/dev_requirements.txt deleted file mode 100644 index 36025bb5b70..00000000000 --- a/packages/http-client-python/generator/test/dev_requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ --r ../../eng/scripts/ci/dev_requirements.txt -aiohttp -pytest-asyncio==0.14.0 -requests==2.32.2 -sphinx==8.2.0 -sphinx_rtd_theme==3.0.2 -myst_parser==4.0.1 -sphinxcontrib-jquery==4.1 diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/data/image.png b/packages/http-client-python/generator/test/unbranded/mock_api_tests/data/image.png deleted file mode 100644 index 42fe8dc1456..00000000000 Binary files a/packages/http-client-python/generator/test/unbranded/mock_api_tests/data/image.png and /dev/null differ diff --git a/packages/http-client-python/generator/test/unbranded/requirements.txt b/packages/http-client-python/generator/test/unbranded/requirements.txt deleted file mode 100644 index 9fd6dd58cbc..00000000000 --- a/packages/http-client-python/generator/test/unbranded/requirements.txt +++ /dev/null @@ -1,69 +0,0 @@ --r ../dev_requirements.txt --e ../../ - -# === common test dependencies across repos === --e ./generated/authentication-api-key --e ./generated/authentication-http-custom --e ./generated/authentication-noauth-union --e ./generated/authentication-oauth2 --e ./generated/authentication-union --e ./generated/setuppy-authentication-union --e ./generated/specs-documentation --e ./generated/encode-duration --e ./generated/encode-numeric --e ./generated/encode-array --e ./generated/parameters-basic --e ./generated/parameters-collection-format --e ./generated/parameters-path --e ./generated/parameters-query --e ./generated/parameters-spread --e ./generated/serialization-encoded-name-json --e ./generated/server-endpoint-not-defined --e ./generated/server-path-multiple --e ./generated/server-path-single --e ./generated/server-versions-versioned --e ./generated/server-versions-not-versioned --e ./generated/special-words --e ./generated/streaming-jsonl --e ./generated/typetest-array --e ./generated/typetest-dictionary --e ./generated/typetest-enum-extensible --e ./generated/typetest-enum-fixed -# -e ./generated/typetest-file --e ./generated/typetest-model-enumdiscriminator --e ./generated/typetest-model-nesteddiscriminator --e ./generated/typetest-model-notdiscriminated --e ./generated/typetest-model-singlediscriminator --e ./generated/typetest-model-recursive --e ./generated/typetest-model-usage --e ./generated/typetest-model-visibility --e ./generated/typetest-property-nullable --e ./generated/typetest-property-optional --e ./generated/typetest-property-valuetypes --e ./generated/typetest-property-additionalproperties --e ./generated/typetest-scalar --e ./generated/typetest-union --e ./generated/typetest-discriminatedunion --e ./generated/typetest-model-empty --e ./generated/headasbooleantrue --e ./generated/headasbooleanfalse --e ./generated/parameters-body-optionality --e ./generated/special-headers-repeatability --e ./generated/special-headers-conditional-request --e ./generated/encode-datetime --e ./generated/encode-bytes --e ./generated/payload-content-negotiation --e ./generated/payload-json-merge-patch --e ./generated/payload-pageable --e ./generated/payload-multipart --e ./generated/payload-media-type --e ./generated/payload-xml --e ./generated/routes --e ./generated/response-status-code-range --e ./generated/versioning-added --e ./generated/versioning-madeoptional --e ./generated/versioning-removed --e ./generated/versioning-renamedfrom --e ./generated/versioning-returntypechangedfrom --e ./generated/versioning-typechangedfrom -# === end common test dependencies across repos === diff --git a/packages/http-client-python/generator/test/unbranded/tox.ini b/packages/http-client-python/generator/test/unbranded/tox.ini deleted file mode 100644 index ae2c163746c..00000000000 --- a/packages/http-client-python/generator/test/unbranded/tox.ini +++ /dev/null @@ -1,64 +0,0 @@ -[tox] -envlist=base, lint, mypy, pyright, apiview, sphinx -skipsdist=True - -[testenv:ci] -deps= - -r requirements.txt -commands = - # pytest - {[testenv:test]commands} - - # pylint - {[testenv:lint]commands} - - # mypy - {[testenv:mypy]commands} - - # pyright - {[testenv:pyright]commands} - - # apiview - {[testenv:apiview]commands} - - # sphinx docstring validation - {[testenv:sphinx]commands} - -[testenv:test] -deps= - -r requirements.txt -commands = - pytest mock_api_tests ../generic_mock_api_tests - -[testenv:lint] -deps= - -r requirements.txt -commands = - pip install azure-pylint-guidelines-checker==0.5.2 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" - python ../../../eng/scripts/ci/run_pylint.py -t unbranded -s "generated" {posargs} - -[testenv:mypy] -deps= - -r requirements.txt -commands = - python ../../../eng/scripts/ci/run_mypy.py -t unbranded -s "generated" {posargs} - -[testenv:pyright] -deps= - -r requirements.txt -commands = - python ../../../eng/scripts/ci/run_pyright.py -t unbranded -s "generated" {posargs} - -[testenv:apiview] -deps= - -r requirements.txt -commands = - pip install apiview-stub-generator==0.3.19 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" - python ../../../eng/scripts/ci/run_apiview.py -t unbranded -s "generated" {posargs} - -[testenv:sphinx] -basepython = python3.10 -deps= - -r requirements.txt -commands = - python ../../../eng/scripts/ci/run_sphinx_build.py -t unbranded -s "generated" {posargs} diff --git a/packages/http-client-python/generator/test/unittests/test_enums.py b/packages/http-client-python/generator/test/unittests/test_enums.py deleted file mode 100644 index 02134609523..00000000000 --- a/packages/http-client-python/generator/test/unittests/test_enums.py +++ /dev/null @@ -1,52 +0,0 @@ -# ------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for -# license information. -# -------------------------------------------------------------------------- -from enum import Enum, EnumMeta - - -class _CaseInsensitiveEnumMeta(EnumMeta): - def __getitem__(self, name): - return super().__getitem__(name.upper()) - - def __getattr__(cls, name): - """Return the enum member matching `name` - We use __getattr__ instead of descriptors or inserting into the enum - class' __dict__ in order to support `name` and `value` being both - properties for enum members (which live in the class' __dict__) and - enum members themselves. - """ - try: - return cls._member_map_[name.upper()] - except KeyError: - raise AttributeError(name) - - -class EnumsWithCallableNames(str, Enum, metaclass=_CaseInsensitiveEnumMeta): - """Gets the unit of measurement.""" - - COUNT = "count" - ENCODE = "encode" - FIND = "find" - JOIN = "join" - - -def test_count(): - assert EnumsWithCallableNames.COUNT == "count" - assert callable(EnumsWithCallableNames.count) - - -def test_encode(): - assert EnumsWithCallableNames.ENCODE == "encode" - assert callable(EnumsWithCallableNames.encode) - - -def test_find(): - assert EnumsWithCallableNames.FIND == "find" - assert callable(EnumsWithCallableNames.find) - - -def test_join(): - assert EnumsWithCallableNames.JOIN == "join" - assert callable(EnumsWithCallableNames.join) diff --git a/packages/http-client-python/package-lock.json b/packages/http-client-python/package-lock.json index f4a84d1c7c6..7fe11b9bcc7 100644 --- a/packages/http-client-python/package-lock.json +++ b/packages/http-client-python/package-lock.json @@ -1,12 +1,12 @@ { "name": "@typespec/http-client-python", - "version": "0.27.2", + "version": "0.28.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@typespec/http-client-python", - "version": "0.27.2", + "version": "0.28.2", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -17,29 +17,29 @@ "tsx": "^4.21.0" }, "devDependencies": { - "@azure-tools/azure-http-specs": "0.1.0-alpha.38-dev.6", - "@azure-tools/typespec-autorest": "~0.65.0", - "@azure-tools/typespec-azure-core": "~0.65.0", - "@azure-tools/typespec-azure-resource-manager": "~0.65.0", - "@azure-tools/typespec-azure-rulesets": "~0.65.0", - "@azure-tools/typespec-client-generator-core": "~0.65.3", + "@azure-tools/azure-http-specs": "0.1.0-alpha.39-dev.4", + "@azure-tools/typespec-autorest": "~0.66.1", + "@azure-tools/typespec-azure-core": "~0.66.1", + "@azure-tools/typespec-azure-resource-manager": "~0.66.0", + "@azure-tools/typespec-azure-rulesets": "~0.66.0", + "@azure-tools/typespec-client-generator-core": "~0.66.4", "@types/js-yaml": "~4.0.5", "@types/node": "~25.0.2", "@types/semver": "7.5.8", - "@typespec/compiler": "^1.9.0", - "@typespec/events": "~0.79.0", - "@typespec/http": "^1.9.0", - "@typespec/http-specs": "0.1.0-alpha.33-dev.2", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "~0.79.0", - "@typespec/spec-api": "0.1.0-alpha.12", - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/sse": "~0.79.0", - "@typespec/streams": "~0.79.0", - "@typespec/versioning": "~0.79.0", - "@typespec/xml": "~0.79.0", + "@typespec/compiler": "^1.10.0", + "@typespec/events": "~0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/http-specs": "0.1.0-alpha.35", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "~0.80.0", + "@typespec/spec-api": "0.1.0-alpha.14-dev.1", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/sse": "~0.80.0", + "@typespec/streams": "~0.80.0", + "@typespec/versioning": "~0.80.0", + "@typespec/xml": "~0.80.0", "c8": "^10.1.3", - "chalk": "5.3.0", + "picocolors": "~1.1.1", "rimraf": "~6.1.2", "typescript": "~5.9.2", "typescript-eslint": "^8.49.0", @@ -49,63 +49,63 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-autorest": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-core": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-resource-manager": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-rulesets": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.65.3 <1.0.0", - "@typespec/compiler": "^1.9.0", - "@typespec/events": ">=0.79.0 <1.0.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": ">=0.79.0 <1.0.0", - "@typespec/sse": ">=0.79.0 <1.0.0", - "@typespec/streams": ">=0.79.0 <1.0.0", - "@typespec/versioning": ">=0.79.0 <1.0.0", - "@typespec/xml": ">=0.79.0 <1.0.0" + "@azure-tools/typespec-autorest": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-azure-core": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-azure-resource-manager": ">=0.66.0 <1.0.0", + "@azure-tools/typespec-azure-rulesets": ">=0.66.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.66.4 <1.0.0", + "@typespec/compiler": "^1.10.0", + "@typespec/events": ">=0.80.0 <1.0.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": ">=0.80.0 <1.0.0", + "@typespec/sse": ">=0.80.0 <1.0.0", + "@typespec/streams": ">=0.80.0 <1.0.0", + "@typespec/versioning": ">=0.80.0 <1.0.0", + "@typespec/xml": ">=0.80.0 <1.0.0" } }, "node_modules/@azure-tools/azure-http-specs": { - "version": "0.1.0-alpha.38-dev.6", - "resolved": "https://registry.npmjs.org/@azure-tools/azure-http-specs/-/azure-http-specs-0.1.0-alpha.38-dev.6.tgz", - "integrity": "sha512-MXjnMSArEM1+ADCmSrYDsOlTzL9bQWaVMtrTtOK8+2eAL87dZdfxiFuiPr9jWHYC8m8nIwLZ+h4dE7TSQR0KwQ==", + "version": "0.1.0-alpha.39-dev.4", + "resolved": "https://registry.npmjs.org/@azure-tools/azure-http-specs/-/azure-http-specs-0.1.0-alpha.39-dev.4.tgz", + "integrity": "sha512-tWKw3X1Nbu4/itGRtdSv2/J7JIVjiwFZ+BmEu8/6ff0n09vBwtPtVYYnNb4IxSdUvl3V7yEiDrBrhSYK/kpuTg==", "dev": true, "license": "MIT", "dependencies": { - "@typespec/spec-api": "^0.1.0-alpha.12 || >=0.1.0-alpha.13-dev <0.1.0-alpha.13", - "@typespec/spector": "^0.1.0-alpha.23 || >=0.1.0-alpha.24-dev <0.1.0-alpha.24" + "@typespec/spec-api": "^0.1.0-alpha.13 || >=0.1.0-alpha.14-dev <0.1.0-alpha.14", + "@typespec/spector": "^0.1.0-alpha.24 || >=0.1.0-alpha.25-dev <0.1.0-alpha.25" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0 || >=0.66.0-dev <0.66.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.1", - "@typespec/rest": "^0.79.0 || >=0.80.0-dev <0.80.0", - "@typespec/versioning": "^0.79.0 || >=0.80.0-dev <0.80.0", - "@typespec/xml": "^0.79.0 || >=0.80.0-dev <0.80.0" + "@azure-tools/typespec-azure-core": "^0.66.0 || >=0.67.0-dev <0.67.0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0 || >=0.81.0-dev <0.81.0", + "@typespec/versioning": "^0.80.0 || >=0.81.0-dev <0.81.0", + "@typespec/xml": "^0.80.0 || >=0.81.0-dev <0.81.0" } }, "node_modules/@azure-tools/typespec-autorest": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.65.0.tgz", - "integrity": "sha512-R8pZt7rYdA2Hr3nck93OGapkQZe3MSzoYq4PgRtsGDHcvA5Qp7RBQMF/tP5DEcFWDDm+unoQeDpbD02POb/LTA==", + "version": "0.66.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.66.1.tgz", + "integrity": "sha512-9R2S9hr1nie5lvJQnubvywPajOhdUApTED5MIef5KlF1zZL+DKMFDDOKwnSvFvW7ROmL+Ph8FQagw/6+PStlOg==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@azure-tools/typespec-azure-resource-manager": "^0.65.0", - "@azure-tools/typespec-client-generator-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/versioning": "^0.79.0", - "@typespec/xml": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.1", + "@azure-tools/typespec-azure-resource-manager": "^0.66.0", + "@azure-tools/typespec-client-generator-core": "^0.66.4", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" }, "peerDependenciesMeta": { "@typespec/xml": { @@ -114,24 +114,24 @@ } }, "node_modules/@azure-tools/typespec-azure-core": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.65.0.tgz", - "integrity": "sha512-dYgHtt0CY0Q9AimdIsMV41jHKLmAT4r++TLwyxAHRbxdiRG+Sll1UKJzOIIoq45Bq64wCfEltu5OOnyPA01/sQ==", + "version": "0.66.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.66.1.tgz", + "integrity": "sha512-i8lMegL4s0I6xQT61zIIhmN1aA6iYFoH+7owSl/msOD0yVWx3Khf3ETULX53yHFd7OoUDAjmFx7+8j9atWXzHQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0" } }, "node_modules/@azure-tools/typespec-azure-resource-manager": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.65.0.tgz", - "integrity": "sha512-3rvyGDIYSqraZ7jHfq5Bfet8u3ZeERWJWhwWMNvbShnrS/vVR3iuu/1z2M0p5mTRFuwUaSMlL/dbtBp1YqgGAg==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.66.0.tgz", + "integrity": "sha512-UbgYUaYTt7prsv+RYxd2kiOWjeEeoH56QOqgXnSOFhYzq/h9fyDaQAm6+CY7cklziED+MYy3uMQd1BG9mNwlfQ==", "dev": true, "license": "MIT", "dependencies": { @@ -142,34 +142,34 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/versioning": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0" } }, "node_modules/@azure-tools/typespec-azure-rulesets": { - "version": "0.65.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.65.0.tgz", - "integrity": "sha512-oGuCw61uU9fUASog/1iD1rGeGhcKgnAuyBWA63wRcMMrcW1ZqUK2xvjV1XJuoYRlMxU8HpQShFcvsj715pNVLQ==", + "version": "0.66.0", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.66.0.tgz", + "integrity": "sha512-Wf0SpphmKDDzHgaqpxl68DpP65VUWjpD3mrnZ3Lw4Pdtt8BcZf7+LKgFF06gPRnh15hR0VbjAERCzxI/qGY4ag==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@azure-tools/typespec-azure-resource-manager": "^0.65.0", - "@azure-tools/typespec-client-generator-core": "^0.65.0", - "@typespec/compiler": "^1.9.0" + "@azure-tools/typespec-azure-core": "^0.66.0", + "@azure-tools/typespec-azure-resource-manager": "^0.66.0", + "@azure-tools/typespec-client-generator-core": "^0.66.1", + "@typespec/compiler": "^1.10.0" } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.65.3", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.65.3.tgz", - "integrity": "sha512-sJ9J7cIhJE9aISIeJW7uuEdLXkulF6GY64VyHdkgziQADUVRKDwgyoA7uGCfAz84dKU5JtWTJuCsIvfiQDzfSA==", + "version": "0.66.4", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.66.4.tgz", + "integrity": "sha512-KRMWLvojku2qFnPpUiZNTa/nm49IjSsGVhPmFhQ5a01KwI2T7zT+Ga39/xLTLHHT4aIgBaMWxD4ioZa2ZhbEKw==", "dev": true, "license": "MIT", "dependencies": { @@ -181,16 +181,16 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@azure-tools/typespec-azure-core": "^0.65.0", - "@typespec/compiler": "^1.9.0", - "@typespec/events": "^0.79.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/sse": "^0.79.0", - "@typespec/streams": "^0.79.0", - "@typespec/versioning": "^0.79.0", - "@typespec/xml": "^0.79.0" + "@azure-tools/typespec-azure-core": "^0.66.1", + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/sse": "^0.80.0", + "@typespec/streams": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" } }, "node_modules/@azure/abort-controller": { @@ -287,9 +287,9 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", - "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", + "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -298,7 +298,7 @@ "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.0", + "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" }, "engines": { @@ -385,22 +385,22 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.28.2.tgz", - "integrity": "sha512-6vYUMvs6kJxJgxaCmHn/F8VxjLHNh7i9wzfwPGf8kyBJ8Gg2yvBXx175Uev8LdrD1F5C4o7qHa2CC4IrhGE1XQ==", + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.29.0.tgz", + "integrity": "sha512-/f3eHkSNUTl6DLQHm+bKecjBKcRQxbd/XLx8lvSYp8Nl/HRyPuIPOijt9Dt0sH50/SxOwQ62RnFCmFlGK+bR/w==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.14.2" + "@azure/msal-common": "15.15.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.14.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.14.2.tgz", - "integrity": "sha512-n8RBJEUmd5QotoqbZfd+eGBkzuFI1KX6jw2b3WcpSyGjwmzoeI/Jb99opIBPHpb8y312NB+B6+FGi2ZVSR8yfA==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.15.0.tgz", + "integrity": "sha512-/n+bN0AKlVa+AOcETkJSKj38+bvFs78BaP4rNtv3MJCmPH0YrHiskMRe74OhyZ5DZjGISlFyxqvf9/4QVEi2tw==", "dev": true, "license": "MIT", "engines": { @@ -408,13 +408,13 @@ } }, "node_modules/@azure/msal-node": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.7.tgz", - "integrity": "sha512-a+Xnrae+uwLnlw68bplS1X4kuJ9F/7K6afuMFyRkNIskhjgDezl5Fhrx+1pmAlDmC0VaaAxjRQMp1OmcqVwkIg==", + "version": "3.8.8", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.8.tgz", + "integrity": "sha512-+f1VrJH1iI517t4zgmuhqORja0bL6LDQXfBqkjuMmfTYXTQQnh1EvwwxO3UbKLT05N0obF72SRHFrC1RBDv5Gg==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.14.2", + "@azure/msal-common": "15.15.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -423,9 +423,9 @@ } }, "node_modules/@azure/storage-blob": { - "version": "12.30.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.30.0.tgz", - "integrity": "sha512-peDCR8blSqhsAKDbpSP/o55S4sheNwSrblvCaHUZ5xUI73XA7ieUGGwrONgD/Fng0EoDe1VOa3fAQ7+WGB3Ocg==", + "version": "12.31.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.31.0.tgz", + "integrity": "sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg==", "dev": true, "license": "MIT", "dependencies": { @@ -440,7 +440,7 @@ "@azure/core-util": "^1.11.0", "@azure/core-xml": "^1.4.5", "@azure/logger": "^1.1.4", - "@azure/storage-common": "^12.2.0", + "@azure/storage-common": "^12.3.0", "events": "^3.0.0", "tslib": "^2.8.1" }, @@ -470,9 +470,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", - "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { @@ -2329,17 +2329,17 @@ } }, "node_modules/@typespec/compiler": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.9.0.tgz", - "integrity": "sha512-Rz9fFWQSTJSnhBfZvtA/bDIuO82fknYdtyMsL9lZNJE82rquC6JByHPFsnbGH1VXA0HhMj9L7Oqyp3f0m/BTOA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.10.0.tgz", + "integrity": "sha512-R6BATDkughntPpaxeESJF+wxma5PEjgmnnKvH0/ByqUH8VyhIckQWE9kkP0Uc/EJ0o0VYhe8qCwWQvV70k5lTw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.28.6", + "@babel/code-frame": "~7.29.0", "@inquirer/prompts": "^8.0.1", - "ajv": "~8.17.1", + "ajv": "~8.18.0", "change-case": "~5.4.4", - "env-paths": "^3.0.0", + "env-paths": "^4.0.0", "globby": "~16.1.0", "is-unicode-supported": "^2.1.0", "mustache": "~4.2.0", @@ -2460,30 +2460,30 @@ } }, "node_modules/@typespec/events": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.79.0.tgz", - "integrity": "sha512-41R2jA7k21uMArjyUdvnqYzVnPPaSEcGi40dLMiRVP79m6XgnD3INuTdlMblaS1i+5jJ1BtS1o4QhBBuS/5/qg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.80.0.tgz", + "integrity": "sha512-FrWEUwxhDNbE2YN4fyqV5Qrz9qFJbvPoiKrJM7dexkb7eyhepq3dbc5zZgAm/qFBQ+XxGQQVJ4swXxKT+338fw==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/http": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.9.1.tgz", - "integrity": "sha512-agcwmbB/hK/o9KmM38UB8OGZwLgB17lJ7b4EjqYGpyshqcRMTESMRxnJIH7rRzUq4HJDTqal0tsb8z0K0zXuDg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.10.0.tgz", + "integrity": "sha512-/fj55fmUj4m/FmNdfH0V52menVrmS2r5Xj9d1H+pnjQbxvvaxS906RSRcoF8kbg3PvlibP/Py5u82TAk53AyqA==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/streams": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/streams": "^0.80.0" }, "peerDependenciesMeta": { "@typespec/streams": { @@ -2492,59 +2492,59 @@ } }, "node_modules/@typespec/http-specs": { - "version": "0.1.0-alpha.33-dev.2", - "resolved": "https://registry.npmjs.org/@typespec/http-specs/-/http-specs-0.1.0-alpha.33-dev.2.tgz", - "integrity": "sha512-Ex7PVBJgJAmNLKMbp9jA6+fXalcau3Rf+J7N8XMwCICvz6yFcRJKF07/NsM3Doc87e43VovnrJb2I2tb7LSuDw==", + "version": "0.1.0-alpha.35", + "resolved": "https://registry.npmjs.org/@typespec/http-specs/-/http-specs-0.1.0-alpha.35.tgz", + "integrity": "sha512-xLQUmldKvO0TTOf/wpYLbj2dIuXiQfw3gGKN0ZblD3Q3VGHOXEYEALdQ7lQWn3l2lV33cKgEfC3fX/q/p9N/ug==", "dev": true, "license": "MIT", "dependencies": { - "@typespec/spec-api": "^0.1.0-alpha.12 || >=0.1.0-alpha.13-dev <0.1.0-alpha.13", - "@typespec/spector": "^0.1.0-alpha.23 || >=0.1.0-alpha.24-dev <0.1.0-alpha.24", - "deep-equal": "^2.2.0" + "@typespec/spec-api": "^0.1.0-alpha.13", + "@typespec/spector": "^0.1.0-alpha.24", + "deep-equal": "^2.2.3" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0 || >=0.80.0-dev <0.80.0", - "@typespec/versioning": "^0.79.0 || >=0.80.0-dev <0.80.0", - "@typespec/xml": "^0.79.0 || >=0.80.0-dev <0.80.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/versioning": "^0.80.0", + "@typespec/xml": "^0.80.0" } }, "node_modules/@typespec/openapi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.9.0.tgz", - "integrity": "sha512-5ieXCWRLcyFLv3IFk26ena/RW/NxvT5KiHaoNVFRd79J0XZjFcE0Od6Lxxqj4dWmCo3C8oKtOwFoQuie18G3lQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.10.0.tgz", + "integrity": "sha512-tukmyp+c9CFlA2FdF61XfT9eTe5WXWz6J8pOrJ9+IYg0BcBwhJkvDj6BYpDD6SjxbRr1wO5ZL2Whe6MequsyVw==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" } }, "node_modules/@typespec/rest": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.79.0.tgz", - "integrity": "sha512-6QIX7oaUGy/z4rseUrC86LjHxZn8rAAY4fXvGnlPRce6GhEdTb9S9OQPmlPeWngXwCx/07P2+FCR915APqmZxg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.80.0.tgz", + "integrity": "sha512-xczXLoB2akSIDner41gQYTS9CG6TdCN0QHYvXBT6ZrYEnBh+pMvdymW//5CSOTamZLOGo9AOJVJaFfwbFA4vQQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0" + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0" } }, "node_modules/@typespec/spec-api": { - "version": "0.1.0-alpha.12", - "resolved": "https://registry.npmjs.org/@typespec/spec-api/-/spec-api-0.1.0-alpha.12.tgz", - "integrity": "sha512-cAJ1vj6qk2Vw5g1uesohBItA6fl8KqrTRIwj0DdpPaBtQeaUS7yRJZgGQQz/JLeqDj2B+8z2pooLuvEBtnS+jA==", + "version": "0.1.0-alpha.14-dev.1", + "resolved": "https://registry.npmjs.org/@typespec/spec-api/-/spec-api-0.1.0-alpha.14-dev.1.tgz", + "integrity": "sha512-rRgTovGml78TbfHdpphzQDiZOyhgfCZE7U3GXF4PjFl3MXG5WWVGhL6s8gSGvfuwaOVO+lbMp5YKuNtJhy3zHw==", "dev": true, "license": "MIT", "dependencies": { @@ -2557,35 +2557,67 @@ } }, "node_modules/@typespec/spec-coverage-sdk": { - "version": "0.1.0-alpha.15", - "resolved": "https://registry.npmjs.org/@typespec/spec-coverage-sdk/-/spec-coverage-sdk-0.1.0-alpha.15.tgz", - "integrity": "sha512-Y7SxNBEouGBlMIw5nD+skCYX8FkM2v1CxW79VjqX+iigJQsh2ML0F/G1Zh551l2Dr7zuMv+0qiPrmOC5v3yEgQ==", + "version": "0.1.0-alpha.16", + "resolved": "https://registry.npmjs.org/@typespec/spec-coverage-sdk/-/spec-coverage-sdk-0.1.0-alpha.16.tgz", + "integrity": "sha512-qwSnuE+CXjv4mn2uhioTVlaO4GjypR4ZtbkSoLmWA677ggYmoAjIDpyNgT1tjsc1lDKVtSiPvGhM9XFKExVmbQ==", "dev": true, "license": "MIT", "dependencies": { "@azure/identity": "~4.13.0", - "@azure/storage-blob": "~12.30.0", - "@types/node": "~25.0.2" + "@azure/storage-blob": "~12.31.0", + "@types/node": "~25.3.0", + "@types/semver": "^7.5.8", + "semver": "^7.7.1" }, "engines": { "node": ">=16.0.0" } }, + "node_modules/@typespec/spec-coverage-sdk/node_modules/@types/node": { + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@typespec/spec-coverage-sdk/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typespec/spec-coverage-sdk/node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, "node_modules/@typespec/spector": { - "version": "0.1.0-alpha.23", - "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.23.tgz", - "integrity": "sha512-z5ORR/HnaLKYcTL2a73sUfC4LmuOqlCRmSPF8h5NtUNDpER3s4aLlFu4DgcaVYTgHruiBLMkLyHpfNPxKDzY7g==", + "version": "0.1.0-alpha.24", + "resolved": "https://registry.npmjs.org/@typespec/spector/-/spector-0.1.0-alpha.24.tgz", + "integrity": "sha512-POUSFunRZ4UbPEs+YLz0vE9tDoc6chQ/61moyiWO/k4hD2R1KTH0qlRHhuKW8/Y2wa8Jbuex39Ft/O3reHZSTQ==", "dev": true, "license": "MIT", "dependencies": { "@azure/identity": "~4.13.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/rest": "^0.79.0", - "@typespec/spec-api": "^0.1.0-alpha.12", - "@typespec/spec-coverage-sdk": "^0.1.0-alpha.15", - "@typespec/versioning": "^0.79.0", - "ajv": "~8.17.1", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/rest": "^0.80.0", + "@typespec/spec-api": "^0.1.0-alpha.13", + "@typespec/spec-coverage-sdk": "^0.1.0-alpha.16", + "@typespec/versioning": "^0.80.0", + "ajv": "~8.18.0", "body-parser": "^2.2.0", "deep-equal": "^2.2.0", "express": "^5.2.1", @@ -2675,38 +2707,38 @@ } }, "node_modules/@typespec/sse": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.79.0.tgz", - "integrity": "sha512-YQYlDWCNBza75S360jc51emwntWXMZfkvqXKng+etKP4iCuogJfTX1J8h1yd8tZwkuUNBcklEPCuz3O/+psopg==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.80.0.tgz", + "integrity": "sha512-/lxYgMaxgEcjBVhep9tf/VnFD2wnkZlkmjUHLeZL8Cuf+qip61Ren6Ml91YtNnnIFYsuuymDzRclrA073ZBR6Q==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0", - "@typespec/events": "^0.79.0", - "@typespec/http": "^1.9.0", - "@typespec/streams": "^0.79.0" + "@typespec/compiler": "^1.10.0", + "@typespec/events": "^0.80.0", + "@typespec/http": "^1.10.0", + "@typespec/streams": "^0.80.0" } }, "node_modules/@typespec/streams": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.79.0.tgz", - "integrity": "sha512-nOXpLcEYNdWvLY/6WJ16rD6hGs7bKSmkH+WwgyVwdRON5KJ559quw56pns2DSANw+NaV0lJxJq/8ek5xKCGD6g==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.80.0.tgz", + "integrity": "sha512-lNvzrvX/ZRIxRpxIBZu90XNsT+uWsMbLtxHd9edspHAiID3c9WKZbl2fnLcPqdR/60odqKve4yGzB9gF58GUDQ==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.3.tgz", - "integrity": "sha512-91fp6CAAJSRtH5ja95T1FHSKa8aPW9/Zw6cta81jlZTUw/+Vq8jM/AfF/14h2b71wwR84JUTW/3Y8QPhDAawFA==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.4.tgz", + "integrity": "sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2719,29 +2751,29 @@ } }, "node_modules/@typespec/versioning": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.79.0.tgz", - "integrity": "sha512-mk65zpKNm+ARyHASnre/lp3o3FKzb0P8Nj96ji182JUy7ShrVCCF0u+bC+ZXQ8ZTRza1d0xBjRC/Xr4iM+Uwag==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.80.0.tgz", + "integrity": "sha512-WQCT0jN2lSRfwOy+Cd1KUYzenpKR5TdoX0uW6zQdvxQ9nQZIXoaSaReh9/ldhmSV4xv3p2dqF9oq1cdbVGfJTg==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@typespec/xml": { - "version": "0.79.0", - "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.79.0.tgz", - "integrity": "sha512-BqbbtkL9xuiAhehHKKUCMtRg0a1vjSvoiAOanvTIuoFq3N8PbKVV3dKTcyI/oS3iCCkJErdu11HQcAoD/VsIsA==", + "version": "0.80.0", + "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.80.0.tgz", + "integrity": "sha512-Qfy5eyCcOF3xYOU/dejhpmmeY75U1Q9C8XBE+GvSZ3lakRfKBIpT+X6Q07qmKSAbGYJZKYLWCIAy/dgCuu/OAA==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@typespec/compiler": "^1.9.0" + "@typespec/compiler": "^1.10.0" } }, "node_modules/@vitest/expect": { @@ -2903,10 +2935,11 @@ } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -3247,18 +3280,6 @@ "node": ">=18" } }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/change-case": { "version": "5.4.4", "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", @@ -3653,12 +3674,16 @@ } }, "node_modules/env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-4.0.0.tgz", + "integrity": "sha512-pxP8eL2SwwaTRi/KHYwLYXinDs7gL3jxFcBYmEdYfZmZXbaVDvdppd0XBU8qVz03rDfKZMXg1omHCbsJjZrMsw==", "dev": true, + "license": "MIT", + "dependencies": { + "is-safe-filename": "^0.1.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4125,9 +4150,9 @@ "peer": true }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -4138,12 +4163,29 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } }, "node_modules/fast-xml-parser": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.5.tgz", - "integrity": "sha512-JeaA2Vm9ffQKp9VjvfzObuMCjUYAp5WDYhRYL5LrBPY/jUDlUtOvDfot0vKSkB9tuX885BDHjtw4fZadD95wnA==", + "version": "5.5.7", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.7.tgz", + "integrity": "sha512-LteOsISQ2GEiDHZch6L9hB0+MLoYVLToR7xotrzU0opCICBkxOPgHAy1HxAvtxfJNXDJpgAsQN30mkrfpO2Prg==", "dev": true, "funding": [ { @@ -4153,7 +4195,9 @@ ], "license": "MIT", "dependencies": { - "strnum": "^2.1.2" + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.1.3", + "strnum": "^2.2.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -4246,10 +4290,11 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, + "license": "ISC", "peer": true }, "node_modules/for-each": { @@ -4999,6 +5044,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-safe-filename": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-safe-filename/-/is-safe-filename-0.1.1.tgz", + "integrity": "sha512-4SrR7AdnY11LHfDKTZY1u6Ga3RuxZdl3YKWWShO5iyuG5h8QS4GD2tOb04peBJ5I7pXbR+CGBNEhTcwK+FzN3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -5106,9 +5164,9 @@ } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -5226,7 +5284,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -5517,16 +5576,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -5549,19 +5598,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/morgan": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", @@ -5617,22 +5653,23 @@ "license": "MIT" }, "node_modules/multer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", - "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", "dev": true, "license": "MIT", "dependencies": { "append-field": "^1.0.0", "busboy": "^1.6.0", "concat-stream": "^2.0.0", - "mkdirp": "^0.5.6", - "object-assign": "^4.1.1", - "type-is": "^1.6.18", - "xtend": "^4.0.2" + "type-is": "^1.6.18" }, "engines": { "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/multer/node_modules/media-typer": { @@ -5736,16 +5773,6 @@ "node": ">= 0.6" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -5956,6 +5983,22 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.1.3.tgz", + "integrity": "sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -6007,10 +6050,11 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -6128,9 +6172,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -6239,6 +6283,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6436,9 +6481,9 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", - "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.5.0.tgz", + "integrity": "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -6869,9 +6914,9 @@ } }, "node_modules/strnum": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", - "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", + "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", "dev": true, "funding": [ { @@ -6894,9 +6939,9 @@ } }, "node_modules/tar": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", - "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -7058,9 +7103,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7389,9 +7434,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7480,9 +7525,9 @@ } }, "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -7590,9 +7635,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -7819,16 +7864,6 @@ "node": ">=4.0" } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/packages/http-client-python/package.json b/packages/http-client-python/package.json index 2752851f089..811e976e1ac 100644 --- a/packages/http-client-python/package.json +++ b/packages/http-client-python/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/http-client-python", - "version": "0.27.2", + "version": "0.28.2", "author": "Microsoft Corporation", "description": "TypeSpec emitter for Python SDKs", "homepage": "https://typespec.io", @@ -29,19 +29,25 @@ "node": ">=20.0.0" }, "scripts": { - "clean": "rimraf ./dist ./temp ./emitter/temp ./generator/test/azure/generated ./generator/test/unbranded/generated ./venv", + "clean": "rimraf ./dist ./temp ./venv ./tests/generated", "build": "tsc -p ./emitter/tsconfig.build.json && tsx ./eng/scripts/setup/build.ts", "watch": "tsc -p ./emitter/tsconfig.build.json --watch", - "lint": "eslint emitter/ --max-warnings=0", - "lint:py": "tsx ./eng/scripts/ci/lint.ts --folderName generator/pygen", - "format": "pnpm -w format:dir packages/http-client-python && tsx ./eng/scripts/ci/format.ts", "install": "tsx ./eng/scripts/setup/install.ts", "prepare": "tsx ./eng/scripts/setup/prepare.ts", + "setup": "npm run build && npm run install", + "test": "tsx ./eng/scripts/ci/run-tests.ts", + "test:emitter": "tsx ./eng/scripts/ci/run-tests.ts --emitter", + "test:generator": "tsx ./eng/scripts/ci/run-tests.ts --generator", + "lint": "tsx ./eng/scripts/ci/lint.ts", + "lint:generated": "tsx ./eng/scripts/ci/lint.ts --generated", + "format": "tsx ./eng/scripts/ci/format.ts", + "format:check": "tsx ./eng/scripts/ci/format.ts --check", + "format:generated": "tsx ./eng/scripts/ci/format.ts --generated", + "typecheck": "tsx ./eng/scripts/ci/typecheck.ts", + "typecheck:generated": "tsx ./eng/scripts/ci/typecheck.ts --generated", "regenerate": "tsx ./eng/scripts/ci/regenerate.ts", - "ci": "npm run test:emitter && npm run ci:generator --", - "ci:generator": "tsx ./eng/scripts/ci/run-ci.ts", - "test:generator": "tsx ./eng/scripts/ci/run-ci.ts --command=test", - "test:emitter": "vitest run -c ./emitter/vitest.config.ts", + "ci": "npm run test && npm run lint && npm run typecheck", + "ci:generated": "tsx ./eng/scripts/ci/run-tests.ts --generator --env=ci", "change:version": "pnpm chronus version --ignore-policies --only @typespec/http-client-python", "change:add": "pnpm chronus add", "regen-docs": "node ../../packages/tspd/cmd/tspd.js doc . --enable-experimental --output-dir ../../website/src/content/docs/docs/emitters/clients/http-client-python/reference --skip-js" @@ -54,20 +60,20 @@ "emitter" ], "peerDependencies": { - "@azure-tools/typespec-autorest": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-core": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-resource-manager": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-azure-rulesets": ">=0.65.0 <1.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.65.3 <1.0.0", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": ">=0.79.0 <1.0.0", - "@typespec/versioning": ">=0.79.0 <1.0.0", - "@typespec/events": ">=0.79.0 <1.0.0", - "@typespec/sse": ">=0.79.0 <1.0.0", - "@typespec/streams": ">=0.79.0 <1.0.0", - "@typespec/xml": ">=0.79.0 <1.0.0" + "@azure-tools/typespec-autorest": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-azure-core": ">=0.66.1 <1.0.0", + "@azure-tools/typespec-azure-resource-manager": ">=0.66.0 <1.0.0", + "@azure-tools/typespec-azure-rulesets": ">=0.66.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.66.4 <1.0.0", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": ">=0.80.0 <1.0.0", + "@typespec/versioning": ">=0.80.0 <1.0.0", + "@typespec/events": ">=0.80.0 <1.0.0", + "@typespec/sse": ">=0.80.0 <1.0.0", + "@typespec/streams": ">=0.80.0 <1.0.0", + "@typespec/xml": ">=0.80.0 <1.0.0" }, "dependencies": { "js-yaml": "~4.1.0", @@ -77,29 +83,29 @@ "tsx": "^4.21.0" }, "devDependencies": { - "@azure-tools/typespec-autorest": "~0.65.0", - "@azure-tools/typespec-azure-core": "~0.65.0", - "@azure-tools/typespec-azure-resource-manager": "~0.65.0", - "@azure-tools/typespec-azure-rulesets": "~0.65.0", - "@azure-tools/typespec-client-generator-core": "~0.65.3", - "@azure-tools/azure-http-specs": "0.1.0-alpha.38-dev.6", - "@typespec/compiler": "^1.9.0", - "@typespec/http": "^1.9.0", - "@typespec/openapi": "^1.9.0", - "@typespec/rest": "~0.79.0", - "@typespec/versioning": "~0.79.0", - "@typespec/events": "~0.79.0", - "@typespec/spector": "0.1.0-alpha.23", - "@typespec/spec-api": "0.1.0-alpha.12", - "@typespec/sse": "~0.79.0", - "@typespec/streams": "~0.79.0", - "@typespec/xml": "~0.79.0", - "@typespec/http-specs": "0.1.0-alpha.33-dev.2", + "@azure-tools/typespec-autorest": "~0.66.1", + "@azure-tools/typespec-azure-core": "~0.66.1", + "@azure-tools/typespec-azure-resource-manager": "~0.66.0", + "@azure-tools/typespec-azure-rulesets": "~0.66.0", + "@azure-tools/typespec-client-generator-core": "~0.66.4", + "@azure-tools/azure-http-specs": "0.1.0-alpha.39-dev.4", + "@typespec/compiler": "^1.10.0", + "@typespec/http": "^1.10.0", + "@typespec/openapi": "^1.10.0", + "@typespec/rest": "~0.80.0", + "@typespec/versioning": "~0.80.0", + "@typespec/events": "~0.80.0", + "@typespec/spector": "0.1.0-alpha.24", + "@typespec/spec-api": "0.1.0-alpha.14-dev.1", + "@typespec/sse": "~0.80.0", + "@typespec/streams": "~0.80.0", + "@typespec/xml": "~0.80.0", + "@typespec/http-specs": "0.1.0-alpha.35", "@types/js-yaml": "~4.0.5", "@types/node": "~25.0.2", "@types/semver": "7.5.8", "c8": "^10.1.3", - "chalk": "5.3.0", + "picocolors": "~1.1.1", "rimraf": "~6.1.2", "typescript": "~5.9.2", "typescript-eslint": "^8.49.0", diff --git a/packages/http-client-python/tests/conftest.py b/packages/http-client-python/tests/conftest.py new file mode 100644 index 00000000000..1ff58143412 --- /dev/null +++ b/packages/http-client-python/tests/conftest.py @@ -0,0 +1,172 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +import os +import subprocess +import signal +import time +import urllib.request +import urllib.error +import pytest +import importlib +from pathlib import Path + +# Root of the http-client-python package +ROOT = Path(__file__).parent.parent +DATA_FOLDER = Path(__file__).parent / "mock_api" / "shared" + +# Server configuration +SERVER_HOST = "localhost" +SERVER_PORT = 3000 +SERVER_URL = f"http://{SERVER_HOST}:{SERVER_PORT}" + +# Global server process reference (used by hooks) +_server_process = None + + +def wait_for_server(url: str, timeout: int = 60, interval: float = 0.5) -> bool: + """Wait for the server to be ready by polling the URL.""" + start_time = time.time() + while time.time() - start_time < timeout: + try: + urllib.request.urlopen(url, timeout=1) + return True + except urllib.error.HTTPError: + # Server is up but returned an error (e.g., 404) - that's fine + return True + except (urllib.error.URLError, OSError): + # Server not reachable yet + time.sleep(interval) + return False + + +def start_server_process(): + """Start the tsp-spector mock API server.""" + azure_http_path = ROOT / "node_modules/@azure-tools/azure-http-specs" + http_path = ROOT / "node_modules/@typespec/http-specs" + + # Determine flavor from environment or current directory + flavor = os.environ.get("FLAVOR", "azure") + + # Use absolute paths with forward slashes (works on all platforms including Windows) + if flavor == "unbranded": + cwd = http_path.resolve() + specs_path = str(cwd / "specs").replace("\\", "/") + cmd = f"npx tsp-spector serve {specs_path}" + else: + cwd = azure_http_path.resolve() + azure_specs = str(cwd / "specs").replace("\\", "/") + http_specs = str((http_path / "specs").resolve()).replace("\\", "/") + cmd = f"npx tsp-spector serve {azure_specs} {http_specs}" + + if os.name == "nt": + return subprocess.Popen(cmd, shell=True, cwd=str(cwd)) + return subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid, cwd=str(cwd)) + + +def terminate_server_process(process): + """Terminate the mock API server process.""" + if process is None: + return + if os.name == "nt": + process.kill() + else: + try: + os.killpg(os.getpgid(process.pid), signal.SIGTERM) + except ProcessLookupError: + pass # Process already terminated + + +def pytest_configure(config): + """Start the mock server before any tests run. + + This hook runs in the controller process before workers are spawned, + ensuring the server is ready for all workers. + """ + global _server_process + + # Only start server in the controller process (not in workers) + if hasattr(config, "workerinput"): + return + + # Check if server is already running (e.g., from a previous run) + if wait_for_server(SERVER_URL, timeout=1, interval=0.1): + print(f"Mock API server already running at {SERVER_URL}") + return + + # Start the server + print(f"Starting mock API server...") + _server_process = start_server_process() + + # Check if process started successfully + if _server_process.poll() is not None: + pytest.exit(f"Mock API server process exited immediately with code {_server_process.returncode}") + + # Wait for server to be ready + if not wait_for_server(SERVER_URL, timeout=60): + # Check if process is still running + if _server_process.poll() is not None: + pytest.exit(f"Mock API server process died with code {_server_process.returncode}") + terminate_server_process(_server_process) + _server_process = None + pytest.exit(f"Mock API server failed to start within 60 seconds at {SERVER_URL}") + + print(f"Mock API server ready at {SERVER_URL}") + + +def pytest_unconfigure(config): + """Stop the mock server after all tests complete.""" + global _server_process + + # Only stop server in the controller process + if hasattr(config, "workerinput"): + return + + terminate_server_process(_server_process) + _server_process = None + + +@pytest.fixture(scope="session", autouse=True) +def testserver(request): + """Ensure the mock server is ready before tests run. + + The server is started in pytest_configure (controller process). + This fixture just verifies the server is accessible from workers. + """ + if not wait_for_server(SERVER_URL, timeout=30): + pytest.fail(f"Mock API server not available at {SERVER_URL}") + yield + + +@pytest.fixture +def core_library(): + """Import the appropriate core library (azure.core or corehttp).""" + try: + return importlib.import_module("azure.core") + except ModuleNotFoundError: + return importlib.import_module("corehttp") + + +@pytest.fixture +def key_credential(core_library): + """Get the appropriate credential class.""" + try: + return core_library.credentials.AzureKeyCredential + except AttributeError: + return core_library.credentials.ServiceKeyCredential + + +@pytest.fixture +def png_data() -> bytes: + """Load PNG test data.""" + with open(str(DATA_FOLDER / "data/image.png"), "rb") as file_in: + return file_in.read() + + +@pytest.fixture +def jpg_data() -> bytes: + """Load JPG test data.""" + with open(str(DATA_FOLDER / "data/image.jpg"), "rb") as file_in: + return file_in.read() diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/data/image.jpg b/packages/http-client-python/tests/data/image.jpg similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/data/image.jpg rename to packages/http-client-python/tests/data/image.jpg diff --git a/packages/http-client-python/tests/install_packages.py b/packages/http-client-python/tests/install_packages.py new file mode 100644 index 00000000000..f706ae93732 --- /dev/null +++ b/packages/http-client-python/tests/install_packages.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +"""Install generated packages for testing. + +This script handles cross-platform path issues that can occur with inline +tox commands on Windows. +""" + +import glob +import os +import subprocess +import sys + + +def install_packages(flavor: str, tests_dir: str) -> None: + """Install generated packages for the given flavor.""" + generated_dir = os.path.join(tests_dir, "generated", flavor) + + if not os.path.exists(generated_dir): + print(f"Warning: Generated directory does not exist: {generated_dir}") + return + + # Find all package directories + packages = glob.glob(os.path.join(generated_dir, "*")) + packages = [p for p in packages if os.path.isdir(p)] + + if not packages: + print(f"Warning: No packages found in {generated_dir}") + return + + print(f"Installing {len(packages)} packages from {generated_dir}") + + # Install packages using uv pip + # Use --no-deps to avoid dependency resolution overhead + cmd = ["uv", "pip", "install", "--no-deps"] + packages + + try: + subprocess.run(cmd, check=True) + print(f"Successfully installed {len(packages)} packages") + except subprocess.CalledProcessError as e: + print(f"Error installing packages: {e}") + sys.exit(1) + except FileNotFoundError: + # uv not found, try pip + print("uv not found, falling back to pip") + cmd = [sys.executable, "-m", "pip", "install", "--no-deps"] + packages + subprocess.run(cmd, check=True) + + +def main(): + if len(sys.argv) < 2: + print("Usage: install_packages.py [tests_dir]") + print(" flavor: azure or unbranded") + print(" tests_dir: optional, defaults to script directory") + sys.exit(1) + + flavor = sys.argv[1] + tests_dir = sys.argv[2] if len(sys.argv) > 2 else os.path.dirname(os.path.abspath(__file__)) + + if flavor not in ("azure", "unbranded"): + print(f"Error: Invalid flavor '{flavor}'. Must be 'azure' or 'unbranded'") + sys.exit(1) + + install_packages(flavor, tests_dir) + + +if __name__ == "__main__": + main() diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_commonproperties_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_commonproperties_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_commonproperties_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_commonproperties_async.py index f5a62b6a868..15b8038fefd 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_commonproperties_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_commonproperties_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.resourcemanager.commonproperties.aio import CommonPropertiesClient from azure.resourcemanager.commonproperties import models from azure.core import exceptions @@ -12,7 +13,7 @@ RESOURCE_GROUP_NAME = "test-rg" -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): async with CommonPropertiesClient( credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_largeheader_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_largeheader_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_largeheader_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_largeheader_async.py index deac2360dbc..e696553a2f9 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_largeheader_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_largeheader_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.resourcemanager.largeheader.aio import LargeHeaderClient from azure.resourcemanager.largeheader import models @@ -11,7 +12,7 @@ RESOURCE_GROUP_NAME = "test-rg" -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): async with LargeHeaderClient( credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_nonresource_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_nonresource_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_nonresource_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_nonresource_async.py index 7cbbc763f33..926dcb129a3 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_nonresource_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_nonresource_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.resourcemanager.nonresource.aio import NonResourceClient from azure.resourcemanager.nonresource import models @@ -11,7 +12,7 @@ RESOURCE_GROUP_NAME = "test-rg" -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): async with NonResourceClient( credential, SUBSCRIPTION_ID, "http://localhost:3000", authentication_policy=authentication_policy diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_operationtemplates_async.py similarity index 99% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_operationtemplates_async.py index 2c1bc0fc4b6..d28064a1bcc 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_operationtemplates_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.resourcemanager.operationtemplates.aio import OperationTemplatesClient from azure.resourcemanager.operationtemplates import models @@ -11,7 +12,7 @@ RESOURCE_GROUP_NAME = "test-rg" -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): async with OperationTemplatesClient( credential, diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_resource_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_resource_async.py similarity index 99% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_resource_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_resource_async.py index 8da75bfe249..eb20ed43ee8 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_resource_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_arm_resource_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.resourcemanager.resources.aio import ResourcesClient from azure.resourcemanager.resources import models @@ -11,7 +12,7 @@ RESOURCE_GROUP_NAME = "test-rg" -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): async with ResourcesClient( credential, diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_access_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_access_async.py index d1b6728a30e..2091b743371 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_access_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_access_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.access.aio import AccessClient from specs.azure.clientgenerator.core.access import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with AccessClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_header_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_header_async.py similarity index 93% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_header_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_header_async.py index 7fd89f76d61..7baa44a7471 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_header_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_header_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from client.alternateapiversion.service.header.aio import HeaderClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with HeaderClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_path_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_path_async.py similarity index 93% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_path_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_path_async.py index 3b6c99c116f..885f6f6007e 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_path_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_path_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from client.alternateapiversion.service.path.aio import PathClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with PathClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_query_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_query_async.py similarity index 93% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_query_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_query_async.py index 3163f9a7c31..62f2f9847c4 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_api_version_query_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_api_version_query_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from client.alternateapiversion.service.query.aio import QueryClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with QueryClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_default_value_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_default_value_async.py similarity index 97% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_default_value_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_default_value_async.py index 1d7795bbfc5..f4bbaaae048 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_default_value_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_default_value_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.clientdefaultvalue.aio import ClientDefaultValueClient from specs.azure.clientgenerator.core.clientdefaultvalue.models import ModelWithDefaultValues -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ClientDefaultValueClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_initialization_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_initialization_async.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_initialization_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_initialization_async.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_location_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_location_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_location_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_location_async.py index a039f18932e..d320f31ffbe 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_client_location_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_client_location_async.py @@ -4,31 +4,32 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.clientlocation.parameter.aio import MoveMethodParameterToClient from specs.azure.clientgenerator.core.clientlocation.subclient.aio import MoveToExistingSubClient from specs.azure.clientgenerator.core.clientlocation.newsubclient.aio import MoveToNewSubClient from specs.azure.clientgenerator.core.clientlocation.rootclient.aio import MoveToRootClient -@pytest.fixture +@pytest_asyncio.fixture async def move_method_parameter_to_client(): async with MoveMethodParameterToClient(storage_account="testaccount") as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def move_to_existing_sub_client(): async with MoveToExistingSubClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def move_to_new_sub_client(): async with MoveToNewSubClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def move_to_root_client(): async with MoveToRootClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py similarity index 94% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py index fbb4349f5a2..e926baf8da1 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_deserialize_empty_string_as_null_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.emptystring.aio import DeserializeEmptyStringAsNullClient from specs.azure.clientgenerator.core.emptystring import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with DeserializeEmptyStringAsNullClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_flatten_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_flatten_async.py index cb044b430fe..6ebe71ad861 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_flatten_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_flatten_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.flattenproperty.aio import FlattenPropertyClient from specs.azure.clientgenerator.core.flattenproperty.models import ( ChildFlattenModel, @@ -16,7 +17,7 @@ ) -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with FlattenPropertyClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py similarity index 97% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py index b940b639fe1..9cf9749e50d 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.hierarchybuilding.aio import HierarchyBuildingClient from specs.azure.clientgenerator.core.hierarchybuilding.models import ( Pet, @@ -11,7 +12,7 @@ ) -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with HierarchyBuildingClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_next_link_verb_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_next_link_verb_async.py similarity index 95% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_next_link_verb_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_next_link_verb_async.py index 7ce1de3c50d..c9061a3f8a3 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_next_link_verb_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_next_link_verb_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.nextlinkverb.aio import NextLinkVerbClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NextLinkVerbClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_override_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_override_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_override_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_override_async.py index 8fa5849b469..aeae909856a 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_override_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_override_async.py @@ -5,10 +5,11 @@ # -------------------------------------------------------------------------- import inspect import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.override.aio import OverrideClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with OverrideClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_usage_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_usage_async.py index 66c7946d888..816279eeb94 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_usage_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_client_generator_core_usage_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.clientgenerator.core.usage.aio import UsageClient from specs.azure.clientgenerator.core.usage import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with UsageClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_basic_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_basic_async.py index 87946f37ca2..3ce2c52262a 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_basic_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_basic_async.py @@ -4,12 +4,13 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.core.basic import models, aio VALID_USER = models.User(id=1, name="Madge", etag="11bdc430-65e8-45ad-81d9-8ffa60d55b59") -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with aio.BasicClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_lro_rpc_async.py similarity index 94% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_lro_rpc_async.py index bc572bf298b..57c19c423b3 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_rpc_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_lro_rpc_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.core.lro.rpc.aio import RpcClient from specs.azure.core.lro.rpc import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with RpcClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_lro_standard_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_lro_standard_async.py index b9b00668cae..05c4c09a2a9 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_lro_standard_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_lro_standard_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.core.lro.standard.aio import StandardClient from specs.azure.core.lro.standard.models import User, ExportedUser -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with StandardClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_model_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_model_async.py index b2f8eed8952..333cfb5dcb5 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_model_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_model_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.core.model.aio import ModelClient from specs.azure.core.model.models import AzureEmbeddingModel -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ModelClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_page_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_page_async.py index 557c044e9e7..01a862620f2 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_page_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_page_async.py @@ -4,13 +4,14 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typing import AsyncIterable from specs.azure.core.page import models, aio VALID_USER = models.User(id=1, name="Madge", etag="11bdc430-65e8-45ad-81d9-8ffa60d55b59") -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with aio.PageClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_scalar_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_scalar_async.py index 4616cc2b5e4..321ebf9fc11 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_scalar_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_scalar_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.core.scalar.aio import ScalarClient from specs.azure.core.scalar import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ScalarClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_traits_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_traits_async.py index dca81854423..02060f56c2b 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_core_traits_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_core_traits_async.py @@ -7,13 +7,14 @@ from datetime import datetime import pytest +import pytest_asyncio from azure.core.exceptions import HttpResponseError from azure.core import MatchConditions from specs.azure.core.traits.aio import TraitsClient from specs.azure.core.traits.models import UserActionParam -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with TraitsClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_encode_duration_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_encode_duration_async.py similarity index 93% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_encode_duration_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_encode_duration_async.py index 8a23b94955e..d1c4867b89e 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_encode_duration_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_encode_duration_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.encode.duration.aio import DurationClient from specs.azure.encode.duration import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with DurationClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_example_basic_async.py similarity index 95% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_example_basic_async.py index 46a66e519d0..00ce65cfb48 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_example_basic_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_example_basic_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.example.basic.aio import AzureExampleClient from specs.azure.example.basic.models import ActionRequest, Model -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with AzureExampleClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_payload_pageable_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_payload_pageable_async.py similarity index 93% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_payload_pageable_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_payload_pageable_async.py index 440a4a51170..1da9e665895 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_payload_pageable_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_payload_pageable_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.payload.pageable.aio import PageableClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with PageableClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_method_subscription_id_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_method_subscription_id_async.py similarity index 99% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_method_subscription_id_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_method_subscription_id_async.py index 7b96c3c297b..4cd896a3477 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_method_subscription_id_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_method_subscription_id_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.resourcemanager.methodsubscriptionid.aio import MethodSubscriptionIdClient from azure.resourcemanager.methodsubscriptionid import models @@ -11,7 +12,7 @@ RESOURCE_GROUP_NAME = "test-rg" -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): async with MethodSubscriptionIdClient( credential, diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_multi_service_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_multi_service_async.py index 86af8d31a93..b80c58a2274 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_multi_service_async.py @@ -4,12 +4,13 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.core.exceptions import HttpResponseError from azure.resourcemanager.multiservice.combined.aio import CombinedClient from azure.resourcemanager.multiservice.combined.models import VirtualMachine, Disk -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): """Create a Combined async client for testing.""" return CombinedClient( diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_shared_models_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_multi_service_shared_models_async.py similarity index 99% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_shared_models_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_multi_service_shared_models_async.py index ee1c21bfbe1..57bc4929d90 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_resource_manager_multi_service_shared_models_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_resource_manager_multi_service_shared_models_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from azure.resourcemanager.multiservicesharedmodels.combined.aio import CombinedClient from azure.resourcemanager.multiservicesharedmodels.combined.models import ( VirtualMachine, @@ -14,7 +15,7 @@ ) -@pytest.fixture +@pytest_asyncio.fixture async def client(credential, authentication_policy): """Create a Combined async client for testing.""" return CombinedClient( diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_special_headers_client_request_id_async.py similarity index 95% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_special_headers_client_request_id_async.py index b89ee4b732c..eb066f84278 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_special_headers_client_request_id_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_special_headers_client_request_id_async.py @@ -6,11 +6,12 @@ import functools import pytest +import pytest_asyncio from azure.specialheaders.xmsclientrequestid.aio import XmsClientRequestIdClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with XmsClientRequestIdClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_versioning_previewversion_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_versioning_previewversion_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_versioning_previewversion_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_versioning_previewversion_async.py index 512e69c817e..a7d6d3d54c3 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_azure_versioning_previewversion_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_azure_versioning_previewversion_async.py @@ -4,17 +4,18 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.azure.versioning.previewversion.aio import PreviewVersionClient from specs.azure.versioning.previewversion.models import UpdateWidgetColorRequest -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with PreviewVersionClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def stable_client(): async with PreviewVersionClient(api_version="2024-06-01") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_namespace_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_namespace_async.py similarity index 94% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_namespace_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_client_namespace_async.py index adc98e3d569..06812847e24 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_namespace_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_namespace_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from client.clientnamespace.aio import ClientNamespaceFirstClient from client.clientnamespace.first.models import FirstClientResult @@ -12,13 +13,13 @@ from client.clientnamespace.second.sub.models import SecondClientEnumType -@pytest.fixture +@pytest_asyncio.fixture async def first_client(): async with ClientNamespaceFirstClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def second_client(): async with ClientNamespaceSecondClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_naming_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_naming_async.py similarity index 78% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_naming_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_client_naming_async.py index 39a26924925..9a3f249740e 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_naming_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_naming_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from client.naming.main.aio import NamingClient from client.naming.main import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NamingClient() as client: yield client @@ -16,17 +17,17 @@ async def client(): @pytest.mark.asyncio async def test_client(client: NamingClient): - await client.client(models.ClientNameModel(client_name=True)) + await client.property.client(models.ClientNameModel(client_name=True)) @pytest.mark.asyncio async def test_language(client: NamingClient): - await client.language(models.LanguageClientNameModel(python_name=True)) + await client.property.language(models.LanguageClientNameModel(python_name=True)) @pytest.mark.asyncio async def test_compatible_with_encoded_name(client: NamingClient): - await client.compatible_with_encoded_name(models.ClientNameAndJsonEncodedNameModel(client_name=True)) + await client.property.compatible_with_encoded_name(models.ClientNameAndJsonEncodedNameModel(client_name=True)) @pytest.mark.asyncio @@ -41,12 +42,12 @@ async def test_parameter(client: NamingClient): @pytest.mark.asyncio async def test_header_request(client: NamingClient): - await client.request(client_name="true") + await client.header.request(client_name="true") @pytest.mark.asyncio async def test_header_response(client: NamingClient): - assert (await client.response(cls=lambda x, y, z: z))["default-name"] == "true" + assert (await client.header.response(cls=lambda x, y, z: z))["default-name"] == "true" @pytest.mark.asyncio diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_naming_enum_conflict_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_naming_enum_conflict_async.py similarity index 97% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_naming_enum_conflict_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_client_naming_enum_conflict_async.py index 27b7731d985..edcf008684b 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_naming_enum_conflict_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_naming_enum_conflict_async.py @@ -4,12 +4,13 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from client.naming.enumconflict.aio import EnumConflictClient from client.naming.enumconflict.firstnamespace import models as first_models from client.naming.enumconflict.secondnamespace import models as second_models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with EnumConflictClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_overload_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_overload_async.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_overload_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_client_overload_async.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_structure_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_structure_async.py similarity index 78% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_structure_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_client_structure_async.py index be39934d896..fa58bd0f758 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_structure_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_structure_async.py @@ -38,6 +38,7 @@ async def test_structure_multiclient(): await client_b.renamed_six() +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") @pytest.mark.asyncio async def test_structure_renamed_operation(): client = RenamedOperationClient(endpoint="http://localhost:3000", client=ClientType.RENAMED_OPERATION) @@ -45,18 +46,19 @@ async def test_structure_renamed_operation(): await client.renamed_three() await client.renamed_five() - await client.group.renamed_two() - await client.group.renamed_four() - await client.group.renamed_six() + await client.renamed_two() + await client.renamed_four() + await client.renamed_six() +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") @pytest.mark.asyncio async def test_structure_two_operation_group(): - client = TwoOperationGroupClient(endpoint="http://localhost:3000", client=ClientType.RENAMED_OPERATION) - await client.group1.one() - await client.group1.three() - await client.group1.four() - - await client.group2.two() - await client.group2.five() - await client.group2.six() + client = TwoOperationGroupClient(endpoint="http://localhost:3000", client=ClientType.TWO_OPERATION_GROUP) + await client.one() + await client.three() + await client.four() + + await client.two() + await client.five() + await client.six() diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_structure_clientoperationgroup_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_structure_clientoperationgroup_async.py similarity index 71% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_structure_clientoperationgroup_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_client_structure_clientoperationgroup_async.py index 96f1157418b..0b3ba88d302 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_client_structure_clientoperationgroup_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_client_structure_clientoperationgroup_async.py @@ -8,22 +8,24 @@ from client.structure.clientoperationgroup.aio import FirstClient, SecondClient +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") @pytest.mark.asyncio async def test_first_client_operations(): client = FirstClient(endpoint="http://localhost:3000", client=ClientType.CLIENT_OPERATION_GROUP) await client.one() - await client.group3.two() - await client.group3.three() + await client.two() + await client.three() - await client.group4.four() + await client.four() +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") @pytest.mark.asyncio async def test_second_client_operations(): client = SecondClient(endpoint="http://localhost:3000", client=ClientType.CLIENT_OPERATION_GROUP) await client.five() - await client.group5.six() + await client.six() diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_encode_duration_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_encode_duration_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_encode_duration_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_encode_duration_async.py index 0fca0371948..b79a501903b 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_encode_duration_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_encode_duration_async.py @@ -6,6 +6,7 @@ import datetime import pytest +import pytest_asyncio from encode.duration.aio import DurationClient from encode.duration.models import ( Int32SecondsDurationProperty, @@ -16,7 +17,7 @@ ) -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with DurationClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_encode_numeric_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_encode_numeric_async.py similarity index 96% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_encode_numeric_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_encode_numeric_async.py index 7bd8b5e1f50..a3a8a4d1fea 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_encode_numeric_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_encode_numeric_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from encode.numeric.aio import NumericClient from encode.numeric import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NumericClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_parameters_basic_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_parameters_basic_async.py similarity index 94% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_parameters_basic_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_parameters_basic_async.py index 969e73a6c8c..2b53806b4ce 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_parameters_basic_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_parameters_basic_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.basic.aio import BasicClient from parameters.basic.models import User -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with BasicClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_parameters_spread_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_parameters_spread_async.py similarity index 98% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_parameters_spread_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_parameters_spread_async.py index 74032d8e511..9fa08028630 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_parameters_spread_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_parameters_spread_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.spread.aio import SpreadClient from parameters.spread.models import BodyParameter -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with SpreadClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_payload_content_negotiation_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_payload_content_negotiation_async.py similarity index 97% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_payload_content_negotiation_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_payload_content_negotiation_async.py index 4c2a11f61ac..84ec7ba708c 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_payload_content_negotiation_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_payload_content_negotiation_async.py @@ -5,11 +5,12 @@ # -------------------------------------------------------------------------- import base64 import pytest +import pytest_asyncio from payload.contentnegotiation.aio import ContentNegotiationClient from payload.contentnegotiation.models import PngImageAsJson -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ContentNegotiationClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_payload_multipart_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_payload_multipart_async.py similarity index 99% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_payload_multipart_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_payload_multipart_async.py index 5cd750c8c0b..03668f5ddbc 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_payload_multipart_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_payload_multipart_async.py @@ -5,6 +5,7 @@ # -------------------------------------------------------------------------- from pathlib import Path import pytest +import pytest_asyncio from payload.multipart import models from payload.multipart.aio import MultiPartClient @@ -12,7 +13,7 @@ PNG = Path(__file__).parent.parent / "data/image.png" -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with MultiPartClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_resiliency_srv_driven_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_resiliency_srv_driven_async.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_resiliency_srv_driven_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_resiliency_srv_driven_async.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_serialization_encoded_name_json_async.py similarity index 94% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_serialization_encoded_name_json_async.py index 70bfcc77ad0..76594bbce59 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_serialization_encoded_name_json_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from serialization.encodedname.json.aio import JsonClient from serialization.encodedname.json import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with JsonClient() as client: yield client diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_service_multi_service_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_service_multi_service_async.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_service_multi_service_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_service_multi_service_async.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_special_words_async.py b/packages/http-client-python/tests/mock_api/azure/asynctests/test_special_words_async.py similarity index 88% rename from packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_special_words_async.py rename to packages/http-client-python/tests/mock_api/azure/asynctests/test_special_words_async.py index 9f22c8c5d15..8c59ea05070 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/asynctests/test_special_words_async.py +++ b/packages/http-client-python/tests/mock_api/azure/asynctests/test_special_words_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specialwords.aio import SpecialWordsClient from specialwords import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with SpecialWordsClient() as client: yield client @@ -63,3 +64,9 @@ async def test_model_properties_dict_methods(client: SpecialWordsClient): @pytest.mark.asyncio async def test_model_properties_with_list(client: SpecialWordsClient): await client.model_properties.with_list(models.ModelWithList(list="ok")) + + +@pytest.mark.asyncio +async def test_extensible_strings(client: SpecialWordsClient): + for enum_value in models.ExtensibleString: + assert enum_value == await client.extensible_strings.put_extensible_string_value(body=enum_value) diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/conftest.py b/packages/http-client-python/tests/mock_api/azure/conftest.py similarity index 93% rename from packages/http-client-python/generator/test/azure/mock_api_tests/conftest.py rename to packages/http-client-python/tests/mock_api/azure/conftest.py index 85fe619a6c3..29824951ef4 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/conftest.py +++ b/packages/http-client-python/tests/mock_api/azure/conftest.py @@ -15,8 +15,8 @@ def start_server_process(): - azure_http_path = Path(os.path.dirname(__file__)) / Path("../../../../node_modules/@azure-tools/azure-http-specs") - http_path = Path(os.path.dirname(__file__)) / Path("../../../../node_modules/@typespec/http-specs") + azure_http_path = Path(os.path.dirname(__file__)) / Path("../../../node_modules/@azure-tools/azure-http-specs") + http_path = Path(os.path.dirname(__file__)) / Path("../../../node_modules/@typespec/http-specs") os.chdir(azure_http_path.resolve()) cmd = f"npx tsp-spector serve ./specs {(http_path / 'specs').resolve()}" if os.name == "nt": @@ -25,10 +25,14 @@ def start_server_process(): def terminate_server_process(process): - if os.name == "nt": - process.kill() - else: - os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send the signal to all the process groups + try: + if os.name == "nt": + process.kill() + else: + os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send the signal to all the process groups + except ProcessLookupError: + # Process already terminated, which is fine + pass @pytest.fixture(scope="session", autouse=True) diff --git a/packages/http-client-python/generator/test/data/image.jpg b/packages/http-client-python/tests/mock_api/azure/data/image.jpg similarity index 100% rename from packages/http-client-python/generator/test/data/image.jpg rename to packages/http-client-python/tests/mock_api/azure/data/image.jpg diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/data/image.png b/packages/http-client-python/tests/mock_api/azure/data/image.png similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/data/image.png rename to packages/http-client-python/tests/mock_api/azure/data/image.png diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_commonproperties.py b/packages/http-client-python/tests/mock_api/azure/test_azure_arm_commonproperties.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_commonproperties.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_arm_commonproperties.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_largeheader.py b/packages/http-client-python/tests/mock_api/azure/test_azure_arm_largeheader.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_largeheader.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_arm_largeheader.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_nonresource.py b/packages/http-client-python/tests/mock_api/azure/test_azure_arm_nonresource.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_nonresource.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_arm_nonresource.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py b/packages/http-client-python/tests/mock_api/azure/test_azure_arm_operationtemplates.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_arm_operationtemplates.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_resource.py b/packages/http-client-python/tests/mock_api/azure/test_azure_arm_resource.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_arm_resource.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_arm_resource.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_access.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_access.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_access.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_access.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_header.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_api_version_header.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_header.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_api_version_header.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_path.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_api_version_path.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_path.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_api_version_path.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_query.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_api_version_query.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_api_version_query.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_api_version_query.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_default_value.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_client_default_value.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_default_value.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_client_default_value.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_initialization.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_client_initialization.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_initialization.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_client_initialization.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_location.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_client_location.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_client_location.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_client_location.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_deserialize_empty_string_as_null.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_deserialize_empty_string_as_null.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_deserialize_empty_string_as_null.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_deserialize_empty_string_as_null.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_flatten.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_flatten.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_flatten.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_hierrarchy_building.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_hierrarchy_building.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_hierrarchy_building.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_hierrarchy_building.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_next_link_verb.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_next_link_verb.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_next_link_verb.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_next_link_verb.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_override.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_override.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_override.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_override.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py b/packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_usage.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_client_generator_core_usage.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_client_generator_core_usage.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_basic.py b/packages/http-client-python/tests/mock_api/azure/test_azure_core_basic.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_basic.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_core_basic.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py b/packages/http-client-python/tests/mock_api/azure/test_azure_core_lro_rpc.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_lro_rpc.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_core_lro_rpc.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_lro_standard.py b/packages/http-client-python/tests/mock_api/azure/test_azure_core_lro_standard.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_lro_standard.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_core_lro_standard.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_model.py b/packages/http-client-python/tests/mock_api/azure/test_azure_core_model.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_model.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_core_model.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_page.py b/packages/http-client-python/tests/mock_api/azure/test_azure_core_page.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_page.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_core_page.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_scalar.py b/packages/http-client-python/tests/mock_api/azure/test_azure_core_scalar.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_scalar.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_core_scalar.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_traits.py b/packages/http-client-python/tests/mock_api/azure/test_azure_core_traits.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_core_traits.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_core_traits.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_encode_duration.py b/packages/http-client-python/tests/mock_api/azure/test_azure_encode_duration.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_encode_duration.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_encode_duration.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_example_basic.py b/packages/http-client-python/tests/mock_api/azure/test_azure_example_basic.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_example_basic.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_example_basic.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_payload_pageable.py b/packages/http-client-python/tests/mock_api/azure/test_azure_payload_pageable.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_payload_pageable.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_payload_pageable.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_method_subscription_id.py b/packages/http-client-python/tests/mock_api/azure/test_azure_resource_manager_method_subscription_id.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_method_subscription_id.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_resource_manager_method_subscription_id.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service.py b/packages/http-client-python/tests/mock_api/azure/test_azure_resource_manager_multi_service.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_resource_manager_multi_service.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service_shared_models.py b/packages/http-client-python/tests/mock_api/azure/test_azure_resource_manager_multi_service_shared_models.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_resource_manager_multi_service_shared_models.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_resource_manager_multi_service_shared_models.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_special_headers_client_request_id.py b/packages/http-client-python/tests/mock_api/azure/test_azure_special_headers_client_request_id.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_special_headers_client_request_id.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_special_headers_client_request_id.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_versioning_previewversion.py b/packages/http-client-python/tests/mock_api/azure/test_azure_versioning_previewversion.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_azure_versioning_previewversion.py rename to packages/http-client-python/tests/mock_api/azure/test_azure_versioning_previewversion.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_clear_output_folder.py b/packages/http-client-python/tests/mock_api/azure/test_clear_output_folder.py similarity index 93% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_clear_output_folder.py rename to packages/http-client-python/tests/mock_api/azure/test_clear_output_folder.py index c49c8bf1d94..00125fde0d3 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/test_clear_output_folder.py +++ b/packages/http-client-python/tests/mock_api/azure/test_clear_output_folder.py @@ -5,7 +5,7 @@ # -------------------------------------------------------------------------- from pathlib import Path -GENERATED_PATH = Path(__file__).parent.parent.resolve() / "generated" +GENERATED_PATH = Path(__file__).parent.parent.parent.resolve() / "generated" / "azure" def test_clear_output_folder(): diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_namespace.py b/packages/http-client-python/tests/mock_api/azure/test_client_namespace.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_client_namespace.py rename to packages/http-client-python/tests/mock_api/azure/test_client_namespace.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_naming.py b/packages/http-client-python/tests/mock_api/azure/test_client_naming.py similarity index 78% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_client_naming.py rename to packages/http-client-python/tests/mock_api/azure/test_client_naming.py index b0d12844958..94ef8c2d3bb 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_naming.py +++ b/packages/http-client-python/tests/mock_api/azure/test_client_naming.py @@ -14,15 +14,15 @@ def client(): def test_client(client: NamingClient): - client.client(models.ClientNameModel(client_name=True)) + client.property.client(models.ClientNameModel(client_name=True)) def test_language(client: NamingClient): - client.language(models.LanguageClientNameModel(python_name=True)) + client.property.language(models.LanguageClientNameModel(python_name=True)) def test_compatible_with_encoded_name(client: NamingClient): - client.compatible_with_encoded_name(models.ClientNameAndJsonEncodedNameModel(client_name=True)) + client.property.compatible_with_encoded_name(models.ClientNameAndJsonEncodedNameModel(client_name=True)) def test_operation(client: NamingClient): @@ -34,11 +34,11 @@ def test_parameter(client: NamingClient): def test_header_request(client: NamingClient): - client.request(client_name="true") + client.header.request(client_name="true") def test_header_response(client: NamingClient): - assert client.response(cls=lambda x, y, z: z)["default-name"] == "true" + assert client.header.response(cls=lambda x, y, z: z)["default-name"] == "true" def test_model_client(client: NamingClient): diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_naming_enum_conflict.py b/packages/http-client-python/tests/mock_api/azure/test_client_naming_enum_conflict.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_client_naming_enum_conflict.py rename to packages/http-client-python/tests/mock_api/azure/test_client_naming_enum_conflict.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_overload.py b/packages/http-client-python/tests/mock_api/azure/test_client_overload.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_client_overload.py rename to packages/http-client-python/tests/mock_api/azure/test_client_overload.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_structure.py b/packages/http-client-python/tests/mock_api/azure/test_client_structure.py similarity index 79% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_client_structure.py rename to packages/http-client-python/tests/mock_api/azure/test_client_structure.py index d28827376c0..e83d1ce6d6b 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_structure.py +++ b/packages/http-client-python/tests/mock_api/azure/test_client_structure.py @@ -3,6 +3,7 @@ # Licensed under the MIT License. See License.txt in the project root for # license information. # -------------------------------------------------------------------------- +import pytest from client.structure.service.models import ClientType from client.structure.service import ServiceClient from client.structure.multiclient import ClientAClient, ClientBClient @@ -35,23 +36,25 @@ def test_structure_multiclient(): client_b.renamed_six() +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") def test_structure_renamed_operation(): client = RenamedOperationClient(endpoint="http://localhost:3000", client=ClientType.RENAMED_OPERATION) client.renamed_one() client.renamed_three() client.renamed_five() - client.group.renamed_two() - client.group.renamed_four() - client.group.renamed_six() + client.renamed_two() + client.renamed_four() + client.renamed_six() +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") def test_structure_two_operation_group(): client = TwoOperationGroupClient(endpoint="http://localhost:3000", client=ClientType.TWO_OPERATION_GROUP) - client.group1.one() - client.group1.three() - client.group1.four() + client.one() + client.three() + client.four() - client.group2.two() - client.group2.five() - client.group2.six() + client.two() + client.five() + client.six() diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_structure_clientoperationgroup.py b/packages/http-client-python/tests/mock_api/azure/test_client_structure_clientoperationgroup.py similarity index 70% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_client_structure_clientoperationgroup.py rename to packages/http-client-python/tests/mock_api/azure/test_client_structure_clientoperationgroup.py index 3990830ebdb..aa6d3c8a90d 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/test_client_structure_clientoperationgroup.py +++ b/packages/http-client-python/tests/mock_api/azure/test_client_structure_clientoperationgroup.py @@ -3,24 +3,27 @@ # Licensed under the MIT License. See License.txt in the project root for # license information. # -------------------------------------------------------------------------- +import pytest from client.structure.clientoperationgroup.models import ClientType from client.structure.clientoperationgroup import FirstClient, SecondClient +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") def test_first_client_operations(): client = FirstClient(endpoint="http://localhost:3000", client=ClientType.CLIENT_OPERATION_GROUP) client.one() - client.group3.two() - client.group3.three() + client.two() + client.three() - client.group4.four() + client.four() +@pytest.mark.skip(reason="will reopen the cases after upgrade `@azure-tools/typespec-client-generator-core` to 0.67.0") def test_second_client_operations(): client = SecondClient(endpoint="http://localhost:3000", client=ClientType.CLIENT_OPERATION_GROUP) client.five() - client.group5.six() + client.six() diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_encode_duration.py b/packages/http-client-python/tests/mock_api/azure/test_encode_duration.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_encode_duration.py rename to packages/http-client-python/tests/mock_api/azure/test_encode_duration.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_encode_numeric.py b/packages/http-client-python/tests/mock_api/azure/test_encode_numeric.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_encode_numeric.py rename to packages/http-client-python/tests/mock_api/azure/test_encode_numeric.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_model_base_flatten_compatibility.py b/packages/http-client-python/tests/mock_api/azure/test_model_base_flatten_compatibility.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_model_base_flatten_compatibility.py rename to packages/http-client-python/tests/mock_api/azure/test_model_base_flatten_compatibility.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_parameters_basic.py b/packages/http-client-python/tests/mock_api/azure/test_parameters_basic.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_parameters_basic.py rename to packages/http-client-python/tests/mock_api/azure/test_parameters_basic.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_parameters_spread.py b/packages/http-client-python/tests/mock_api/azure/test_parameters_spread.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_parameters_spread.py rename to packages/http-client-python/tests/mock_api/azure/test_parameters_spread.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_payload_content_negotiation.py b/packages/http-client-python/tests/mock_api/azure/test_payload_content_negotiation.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_payload_content_negotiation.py rename to packages/http-client-python/tests/mock_api/azure/test_payload_content_negotiation.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_payload_multipart.py b/packages/http-client-python/tests/mock_api/azure/test_payload_multipart.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_payload_multipart.py rename to packages/http-client-python/tests/mock_api/azure/test_payload_multipart.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_resiliency_srv_driven.py b/packages/http-client-python/tests/mock_api/azure/test_resiliency_srv_driven.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_resiliency_srv_driven.py rename to packages/http-client-python/tests/mock_api/azure/test_resiliency_srv_driven.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_serialization_encoded_name_json.py b/packages/http-client-python/tests/mock_api/azure/test_serialization_encoded_name_json.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_serialization_encoded_name_json.py rename to packages/http-client-python/tests/mock_api/azure/test_serialization_encoded_name_json.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_service_multi_service.py b/packages/http-client-python/tests/mock_api/azure/test_service_multi_service.py similarity index 100% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_service_multi_service.py rename to packages/http-client-python/tests/mock_api/azure/test_service_multi_service.py diff --git a/packages/http-client-python/generator/test/azure/mock_api_tests/test_special_words.py b/packages/http-client-python/tests/mock_api/azure/test_special_words.py similarity index 90% rename from packages/http-client-python/generator/test/azure/mock_api_tests/test_special_words.py rename to packages/http-client-python/tests/mock_api/azure/test_special_words.py index cc083c94c0e..ab23b59409f 100644 --- a/packages/http-client-python/generator/test/azure/mock_api_tests/test_special_words.py +++ b/packages/http-client-python/tests/mock_api/azure/test_special_words.py @@ -56,3 +56,8 @@ def test_model_properties_dict_methods(client: SpecialWordsClient): def test_model_properties_with_list(client: SpecialWordsClient): client.model_properties.with_list(models.ModelWithList(list="ok")) + + +def test_extensible_strings(client: SpecialWordsClient): + for enum_value in models.ExtensibleString: + assert enum_value == client.extensible_strings.put_extensible_string_value(body=enum_value) diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_authentication_async.py similarity index 97% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_authentication_async.py index 2276efaf9ca..4be9d3a7310 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_authentication_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_authentication_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from authentication.apikey.aio import ApiKeyClient from authentication.http.custom.aio import CustomClient from authentication.oauth2.aio import OAuth2Client @@ -14,7 +15,7 @@ # Utilities functions -@pytest.fixture +@pytest_asyncio.fixture async def api_key_client(key_credential): client = None @@ -41,7 +42,7 @@ async def get_token_info(*scopes, **kwargs): return FakeCredential() -@pytest.fixture +@pytest_asyncio.fixture async def oauth2_client(token_credential): client = None @@ -54,7 +55,7 @@ def _build_client(client_type): await client.close() -@pytest.fixture +@pytest_asyncio.fixture async def http_custom_client(key_credential): client = None diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_array_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_array_async.py similarity index 99% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_array_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_array_async.py index 925780cd4aa..3ec7a56529c 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_array_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_array_async.py @@ -5,11 +5,12 @@ # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from encode.array.aio import ArrayClient from encode.array import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ArrayClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_bytes_async.py similarity index 98% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_bytes_async.py index 584b277edd9..5c57cb4281c 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_bytes_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_bytes_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from pathlib import Path from encode.bytes.aio import BytesClient from encode.bytes.models import ( @@ -16,7 +17,7 @@ FILE_FOLDER = Path(__file__).parent.parent -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with BytesClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_datetime_async.py similarity index 99% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_datetime_async.py index 1249b8e8f30..bd5b590a098 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_encode_datetime_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_encode_datetime_async.py @@ -6,6 +6,7 @@ import datetime import pytest +import pytest_asyncio from encode.datetime.aio import DatetimeClient from encode.datetime.models import ( DefaultDatetimeProperty, @@ -16,7 +17,7 @@ ) -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with DatetimeClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_headasboolean_async.py similarity index 94% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_headasboolean_async.py index c0f69198712..d2c2f10da02 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_headasboolean_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_headasboolean_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from headasbooleantrue.aio import VisibilityClient as HeadAsBooleanTrueClient from headasbooleantrue import models as models_true @@ -11,13 +12,13 @@ from headasbooleanfalse import models as models_false -@pytest.fixture +@pytest_asyncio.fixture async def client_true(): async with HeadAsBooleanTrueClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def client_false(): async with HeadAsBooleanFalseClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_body_optionality_async.py similarity index 95% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_body_optionality_async.py index 7c6bbe82c8d..47bc79fd47c 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_body_optionality_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_body_optionality_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.bodyoptionality.aio import BodyOptionalityClient from parameters.bodyoptionality.models import BodyModel -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with BodyOptionalityClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_collection_format_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_collection_format_async.py index c3ae9698079..6ed93c4651e 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_collection_format_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_collection_format_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.collectionformat.aio import CollectionFormatClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with CollectionFormatClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_path_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_path_async.py similarity index 93% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_path_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_path_async.py index eeef36a301a..aee4b150059 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_path_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_path_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.path.aio import PathClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with PathClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_query_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_query_async.py similarity index 92% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_query_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_query_async.py index d5879ebdc2a..70fb18603d2 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_parameters_query_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_parameters_query_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.query.aio import QueryClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with QueryClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_json_merge_patch_async.py similarity index 98% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_json_merge_patch_async.py index e276944be33..54709bed058 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_json_merge_patch_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_json_merge_patch_async.py @@ -4,6 +4,7 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from payload.jsonmergepatch.aio import JsonMergePatchClient from payload.jsonmergepatch.models import InnerModel, Resource, ResourcePatch @@ -13,7 +14,7 @@ from corehttp.serialization import NULL -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with JsonMergePatchClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_media_type_async.py similarity index 95% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_media_type_async.py index d783e6ac61c..551d71bc425 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_media_type_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_media_type_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from payload.mediatype.aio import MediaTypeClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with MediaTypeClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_pageable_async.py similarity index 90% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_pageable_async.py index c14800bb7d6..900caa49edf 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_pageable_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_pageable_async.py @@ -4,10 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from payload.pageable.aio import PageableClient +from payload.pageable.serverdrivenpagination.alternateinitialverb.models import Filter -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with PageableClient(endpoint="http://localhost:3000") as client: yield client @@ -125,3 +127,9 @@ async def test_xml_pagination_list_with_continuation(client: PageableClient): async def test_xml_pagination_list_with_next_link(client: PageableClient): result = [p async for p in client.xml_pagination.list_with_next_link()] assert_result(result) + + +@pytest.mark.asyncio +async def test_alternate_initial_verb_post(client: PageableClient): + result = [p async for p in client.server_driven_pagination.alternate_initial_verb.post(Filter(filter="foo eq bar"))] + assert_result(result) diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_xml_async.py similarity index 55% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_xml_async.py index 7d88ecbbb5c..8ae1cc69adf 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_payload_xml_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_payload_xml_async.py @@ -5,14 +5,24 @@ # -------------------------------------------------------------------------- import datetime import pytest +import pytest_asyncio from payload.xml.aio import XmlClient from payload.xml.models import ( + Author, + Book, SimpleModel, ModelWithSimpleArrays, ModelWithArrayOfModel, ModelWithAttributes, ModelWithUnwrappedArray, + ModelWithUnwrappedModelArray, ModelWithRenamedArrays, + ModelWithRenamedProperty, + ModelWithRenamedAttribute, + ModelWithRenamedNestedModel, + ModelWithRenamedWrappedModelArray, + ModelWithRenamedUnwrappedModelArray, + ModelWithRenamedWrappedAndItemModelArray, ModelWithOptionalField, ModelWithRenamedFields, ModelWithEmptyArray, @@ -21,10 +31,14 @@ ModelWithEncodedNames, ModelWithEnum, ModelWithDatetime, + ModelWithNamespace, + ModelWithNamespaceOnProperties, + ModelWithNestedModel, + ModelWithWrappedPrimitiveCustomItemNames, ) -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with XmlClient(endpoint="http://localhost:3000") as client: yield client @@ -37,6 +51,13 @@ async def test_simple_model(client: XmlClient): await client.simple_model_value.put(model) +@pytest.mark.asyncio +async def test_model_with_renamed_property(client: XmlClient): + model = ModelWithRenamedProperty(title="foo", author="bar") + assert await client.model_with_renamed_property_value.get() == model + await client.model_with_renamed_property_value.put(model) + + @pytest.mark.asyncio async def test_model_with_simple_arrays(client: XmlClient): model = ModelWithSimpleArrays(colors=["red", "green", "blue"], counts=[1, 2]) @@ -44,6 +65,13 @@ async def test_model_with_simple_arrays(client: XmlClient): await client.model_with_simple_arrays_value.put(model) +@pytest.mark.asyncio +async def test_model_with_wrapped_primitive_custom_item_names(client: XmlClient): + model = ModelWithWrappedPrimitiveCustomItemNames(tags=["fiction", "classic"]) + assert await client.model_with_wrapped_primitive_custom_item_names_value.get() == model + await client.model_with_wrapped_primitive_custom_item_names_value.put(model) + + @pytest.mark.asyncio async def test_model_with_array_of_model(client: XmlClient): model = ModelWithArrayOfModel( @@ -56,6 +84,54 @@ async def test_model_with_array_of_model(client: XmlClient): await client.model_with_array_of_model_value.put(model) +@pytest.mark.asyncio +async def test_model_with_unwrapped_model_array(client: XmlClient): + model = ModelWithUnwrappedModelArray( + items_property=[ + SimpleModel(name="foo", age=123), + SimpleModel(name="bar", age=456), + ] + ) + assert await client.model_with_unwrapped_model_array_value.get() == model + await client.model_with_unwrapped_model_array_value.put(model) + + +@pytest.mark.asyncio +async def test_model_with_renamed_wrapped_model_array(client: XmlClient): + model = ModelWithRenamedWrappedModelArray( + items_property=[ + SimpleModel(name="foo", age=123), + SimpleModel(name="bar", age=456), + ] + ) + assert await client.model_with_renamed_wrapped_model_array_value.get() == model + await client.model_with_renamed_wrapped_model_array_value.put(model) + + +@pytest.mark.asyncio +async def test_model_with_renamed_unwrapped_model_array(client: XmlClient): + model = ModelWithRenamedUnwrappedModelArray( + items_property=[ + SimpleModel(name="foo", age=123), + SimpleModel(name="bar", age=456), + ] + ) + assert await client.model_with_renamed_unwrapped_model_array_value.get() == model + await client.model_with_renamed_unwrapped_model_array_value.put(model) + + +@pytest.mark.asyncio +async def test_model_with_renamed_wrapped_and_item_model_array(client: XmlClient): + model = ModelWithRenamedWrappedAndItemModelArray( + books=[ + Book(title="The Great Gatsby"), + Book(title="Les Miserables"), + ] + ) + assert await client.model_with_renamed_wrapped_and_item_model_array_value.get() == model + await client.model_with_renamed_wrapped_and_item_model_array_value.put(model) + + @pytest.mark.asyncio async def test_model_with_attributes(client: XmlClient): model = ModelWithAttributes(id1=123, id2="foo", enabled=True) @@ -63,6 +139,13 @@ async def test_model_with_attributes(client: XmlClient): await client.model_with_attributes_value.put(model) +@pytest.mark.asyncio +async def test_model_with_renamed_attribute(client: XmlClient): + model = ModelWithRenamedAttribute(id=123, title="The Great Gatsby", author="F. Scott Fitzgerald") + assert await client.model_with_renamed_attribute_value.get() == model + await client.model_with_renamed_attribute_value.put(model) + + @pytest.mark.asyncio async def test_model_with_unwrapped_array(client: XmlClient): model = ModelWithUnwrappedArray(colors=["red", "green", "blue"], counts=[1, 2]) @@ -84,6 +167,20 @@ async def test_model_with_optional_field(client: XmlClient): await client.model_with_optional_field_value.put(model) +@pytest.mark.asyncio +async def test_model_with_nested_model(client: XmlClient): + model = ModelWithNestedModel(nested=SimpleModel(name="foo", age=123)) + assert await client.model_with_nested_model_value.get() == model + await client.model_with_nested_model_value.put(model) + + +@pytest.mark.asyncio +async def test_model_with_renamed_nested_model(client: XmlClient): + model = ModelWithRenamedNestedModel(author=Author(name="foo")) + assert await client.model_with_renamed_nested_model_value.get() == model + await client.model_with_renamed_nested_model_value.put(model) + + @pytest.mark.asyncio async def test_model_with_renamed_fields(client: XmlClient): model = ModelWithRenamedFields( @@ -138,6 +235,21 @@ async def test_model_with_datetime(client: XmlClient): result = await client.model_with_datetime_value.get() assert result.rfc3339 == model.rfc3339 assert result.rfc7231 == model.rfc7231 + await client.model_with_datetime_value.put(model) + + +@pytest.mark.asyncio +async def test_model_with_namespace(client: XmlClient): + model = ModelWithNamespace(id=123, title="The Great Gatsby") + assert await client.model_with_namespace_value.get() == model + await client.model_with_namespace_value.put(model) + + +@pytest.mark.asyncio +async def test_model_with_namespace_on_properties(client: XmlClient): + model = ModelWithNamespaceOnProperties(id=123, title="The Great Gatsby", author="F. Scott Fitzgerald") + assert await client.model_with_namespace_on_properties_value.get() == model + await client.model_with_namespace_on_properties_value.put(model) @pytest.mark.asyncio diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_response_status_code_range_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_response_status_code_range_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_response_status_code_range_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_response_status_code_range_async.py index 3d6faa0c1f1..0dd34b667cf 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_response_status_code_range_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_response_status_code_range_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from response.statuscoderange.aio import StatusCodeRangeClient from response.statuscoderange.models import ErrorInRange, NotFoundError -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with StatusCodeRangeClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_routes_async.py similarity index 99% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_routes_async.py index 277e57be3a6..d3e34bc1f93 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_routes_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_routes_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from routes.aio import RoutesClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with RoutesClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_endpoint_not_defined_async.py similarity index 93% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_server_endpoint_not_defined_async.py index 148e61dd5ca..a14997b71c5 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_endpoint_not_defined_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_endpoint_not_defined_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from server.endpoint.notdefined.aio import NotDefinedClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NotDefinedClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_path_multiple_async.py similarity index 94% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_server_path_multiple_async.py index bcdc53dd4f4..50bc53b5e3b 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_path_multiple_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_path_multiple_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from server.path.multiple.aio import MultipleClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with MultipleClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_path_single_async.py similarity index 92% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_server_path_single_async.py index d6ebe479f8b..efcb703028a 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_path_single_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_path_single_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from server.path.single.aio import SingleClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with SingleClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_versions_not_versioned_async.py similarity index 95% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_server_versions_not_versioned_async.py index 738364b6e4f..14f7e4239db 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_versions_not_versioned_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_versions_not_versioned_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from server.versions.notversioned.aio import NotVersionedClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NotVersionedClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_versions_versioned_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_server_versions_versioned_async.py index 53e7d194f42..8f96a2f5508 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_server_versions_versioned_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_server_versions_versioned_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from server.versions.versioned.aio import VersionedClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with VersionedClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_special_headers_conditional_request_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_special_headers_conditional_request_async.py index e65b9d4e330..dc86ac0635e 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_special_headers_conditional_request_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_special_headers_conditional_request_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio import datetime from specialheaders.conditionalrequest.aio import ConditionalRequestClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ConditionalRequestClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_special_headers_repeatability_async.py similarity index 93% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_special_headers_repeatability_async.py index dbf74414e12..941890ea230 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_special_headers_repeatability_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_special_headers_repeatability_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specialheaders.repeatability.aio import RepeatabilityClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with RepeatabilityClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_specs_documentation_async.py similarity index 97% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_specs_documentation_async.py index 12e4cb2e5a2..dff527765ce 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_specs_documentation_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_specs_documentation_async.py @@ -5,11 +5,12 @@ # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specs.documentation.aio import DocumentationClient from specs.documentation import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with DocumentationClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_streaming_jsonl_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_streaming_jsonl_async.py similarity index 94% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_streaming_jsonl_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_streaming_jsonl_async.py index 803215abd99..74e05cebd14 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_streaming_jsonl_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_streaming_jsonl_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from streaming.jsonl.aio import JsonlClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with JsonlClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_array_async.py similarity index 98% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_array_async.py index 180887ea765..66c3b24c1f4 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_array_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_array_async.py @@ -5,12 +5,13 @@ # -------------------------------------------------------------------------- import pytest +import pytest_asyncio import isodate from typetest.array.aio import ArrayClient from typetest.array import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ArrayClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_dictionary_async.py similarity index 98% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_dictionary_async.py index 364868b2357..76a57a1ba95 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_dictionary_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_dictionary_async.py @@ -4,12 +4,13 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.dictionary import models from typetest.dictionary.aio import DictionaryClient import isodate -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with DictionaryClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_enum_extensible_async.py similarity index 94% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_enum_extensible_async.py index 75fca822ddb..aedc6e6a92c 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_extensible_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_enum_extensible_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.enum.extensible import models, aio -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with aio.ExtensibleClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_enum_fixed_async.py similarity index 95% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_enum_fixed_async.py index de17f194b6d..5b6822fcfd2 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_enum_fixed_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_enum_fixed_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.enum.fixed import aio, models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with aio.FixedClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_file_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_file_async.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_file_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_file_async.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_empty_async.py similarity index 95% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_empty_async.py index b5518c5e901..030d3bd84fc 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_empty_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_empty_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.empty.aio import EmptyClient from typetest.model.empty.models import EmptyInput, EmptyOutput, EmptyInputOutput -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with EmptyClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py similarity index 98% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py index 0a72d5465e3..dc176b3fd9b 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_enum_discriminator_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.enumdiscriminator.aio import EnumDiscriminatorClient from typetest.model.enumdiscriminator import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with EnumDiscriminatorClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py index c641f25eb88..f6e57f5affa 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_nested_discriminator_async.py @@ -4,17 +4,18 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.nesteddiscriminator.aio import NestedDiscriminatorClient from typetest.model.nesteddiscriminator.models import GoblinShark, Salmon, Fish -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NestedDiscriminatorClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def valid_body(): return GoblinShark(age=1) @@ -30,7 +31,7 @@ async def test_put_model(client, valid_body): await client.put_model(valid_body) -@pytest.fixture +@pytest_asyncio.fixture async def valid_recursive_body(): return Salmon( { diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_not_discriminated_async.py similarity index 93% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_not_discriminated_async.py index 7e7ce096956..5ed075e3d50 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_not_discriminated_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_not_discriminated_async.py @@ -4,17 +4,18 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.notdiscriminated.aio import NotDiscriminatedClient from typetest.model.notdiscriminated.models import Siamese -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NotDiscriminatedClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def valid_body(): return Siamese(name="abc", age=32, smart=True) diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_recursive_async.py similarity index 93% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_recursive_async.py index aea6f1bb9e3..3056c2c40a5 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_recursive_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_recursive_async.py @@ -4,17 +4,18 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.recursive.aio import RecursiveClient from typetest.model.recursive.models import Extension -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with RecursiveClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def expected(): return Extension( { diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_single_discriminator_async.py similarity index 95% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_single_discriminator_async.py index dc98cd81c9b..e6ddd9c44fc 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_inheritance_single_discriminator_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_inheritance_single_discriminator_async.py @@ -4,17 +4,18 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.singlediscriminator.aio import SingleDiscriminatorClient from typetest.model.singlediscriminator.models import Sparrow, Eagle, Bird, Dinosaur -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with SingleDiscriminatorClient() as client: yield client -@pytest.fixture +@pytest_asyncio.fixture async def valid_body(): return Sparrow(wingspan=1) @@ -29,7 +30,7 @@ async def test_put_model(client, valid_body): await client.put_model(valid_body) -@pytest.fixture +@pytest_asyncio.fixture async def recursive_body(): return Eagle( { diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_usage_async.py similarity index 95% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_usage_async.py index bcebeaec205..a7e00354034 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_usage_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_usage_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.usage import models from typetest.model.usage.aio import UsageClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with UsageClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_visibility_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_visibility_async.py index 27fb23df8aa..62827695819 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_model_visibility_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_model_visibility_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.model.visibility.aio import VisibilityClient from typetest.model.visibility import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with VisibilityClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_additionalproperties_async.py similarity index 99% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_additionalproperties_async.py index 2109ea31791..3784156bfeb 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_additionalproperties_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_additionalproperties_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.property.additionalproperties import models from typetest.property.additionalproperties.aio import AdditionalPropertiesClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with AdditionalPropertiesClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_nullable_async.py similarity index 99% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_nullable_async.py index a5dc1322110..f54cafb464a 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_nullable_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_nullable_async.py @@ -6,6 +6,7 @@ # -------------------------------------------------------------------------- import json import pytest +import pytest_asyncio from typetest.property.nullable import models from typetest.property.nullable.aio import NullableClient from typetest.property.nullable._utils.model_base import ( # pylint: disable=protected-access @@ -18,7 +19,7 @@ from azure.core.serialization import NULL -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NullableClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_optional_async.py similarity index 99% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_optional_async.py index e7ec09d0059..51d8bd362e9 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_optional_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_optional_async.py @@ -6,11 +6,12 @@ # -------------------------------------------------------------------------- from typing import Any import pytest +import pytest_asyncio from typetest.property.optional import models from typetest.property.optional.aio import OptionalClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with OptionalClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_valuetypes_async.py similarity index 99% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_valuetypes_async.py index 1b7566c5739..15a3e794e1e 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_property_valuetypes_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_property_valuetypes_async.py @@ -7,12 +7,13 @@ import decimal import pytest +import pytest_asyncio import datetime from typetest.property.valuetypes import models from typetest.property.valuetypes.aio import ValueTypesClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ValueTypesClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_scalar_async.py similarity index 97% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_scalar_async.py index 3e2b308f8ba..674ee0e0d4d 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_scalar_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_scalar_async.py @@ -7,10 +7,11 @@ from functools import reduce import pytest +import pytest_asyncio from typetest.scalar.aio import ScalarClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ScalarClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_union_async.py similarity index 98% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_union_async.py index 9e738701f4f..18b5e1aba91 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_typetest_union_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_typetest_union_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from typetest.union.aio import UnionClient from typetest.union import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with UnionClient() as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_added_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_added_async.py index 27e78a8892d..8906113b96f 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_added_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_added_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from versioning.added.aio import AddedClient from versioning.added.models import ModelV1, ModelV2, EnumV1, EnumV2 -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with AddedClient(endpoint="http://localhost:3000", version="v2") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_made_optional_async.py similarity index 94% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_made_optional_async.py index 27ec811cae2..c126d401167 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_made_optional_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_made_optional_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from versioning.madeoptional.aio import MadeOptionalClient from versioning.madeoptional.models import TestModel -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with MadeOptionalClient(endpoint="http://localhost:3000", version="v2") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_removed_async.py similarity index 97% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_removed_async.py index 5442c56e6c9..22dab517fdf 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_removed_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_removed_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from versioning.removed.aio import RemovedClient from versioning.removed.models import ModelV2, EnumV2, ModelV3, EnumV3 -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with RemovedClient(endpoint="http://localhost:3000", version="v2") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_renamed_from_async.py similarity index 96% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_renamed_from_async.py index 46ef588f65d..1e738c21326 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_renamed_from_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_renamed_from_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from versioning.renamedfrom.aio import RenamedFromClient from versioning.renamedfrom.models import NewModel, NewEnum -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with RenamedFromClient(endpoint="http://localhost:3000", version="v2") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_return_type_changed_from_async.py similarity index 93% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_return_type_changed_from_async.py index 80eefecbe22..e6234f69607 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_return_type_changed_from_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_return_type_changed_from_async.py @@ -4,10 +4,11 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from versioning.returntypechangedfrom.aio import ReturnTypeChangedFromClient -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ReturnTypeChangedFromClient(endpoint="http://localhost:3000", version="v2") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_type_changed_from_async.py similarity index 94% rename from packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py rename to packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_type_changed_from_async.py index 2374bd1f550..6bf75a87be0 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/asynctests/test_versioning_type_changed_from_async.py +++ b/packages/http-client-python/tests/mock_api/shared/asynctests/test_versioning_type_changed_from_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from versioning.typechangedfrom.aio import TypeChangedFromClient from versioning.typechangedfrom.models import TestModel -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with TypeChangedFromClient(endpoint="http://localhost:3000", version="v2") as client: yield client diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/conftest.py b/packages/http-client-python/tests/mock_api/shared/conftest.py similarity index 87% rename from packages/http-client-python/generator/test/generic_mock_api_tests/conftest.py rename to packages/http-client-python/tests/mock_api/shared/conftest.py index 00de709f440..727f986ae44 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/conftest.py +++ b/packages/http-client-python/tests/mock_api/shared/conftest.py @@ -28,10 +28,14 @@ def start_server_process(): def terminate_server_process(process): - if os.name == "nt": - process.kill() - else: - os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send the signal to all the process groups + try: + if os.name == "nt": + process.kill() + else: + os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send the signal to all the process groups + except ProcessLookupError: + # Process already terminated, which is fine + pass @pytest.fixture(scope="session", autouse=True) diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/data/image.jpg b/packages/http-client-python/tests/mock_api/shared/data/image.jpg similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/data/image.jpg rename to packages/http-client-python/tests/mock_api/shared/data/image.jpg diff --git a/packages/http-client-python/generator/test/data/image.png b/packages/http-client-python/tests/mock_api/shared/data/image.png similarity index 100% rename from packages/http-client-python/generator/test/data/image.png rename to packages/http-client-python/tests/mock_api/shared/data/image.png diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_authentication.py b/packages/http-client-python/tests/mock_api/shared/test_authentication.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_authentication.py rename to packages/http-client-python/tests/mock_api/shared/test_authentication.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_encode_array.py b/packages/http-client-python/tests/mock_api/shared/test_encode_array.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_encode_array.py rename to packages/http-client-python/tests/mock_api/shared/test_encode_array.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_encode_bytes.py b/packages/http-client-python/tests/mock_api/shared/test_encode_bytes.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_encode_bytes.py rename to packages/http-client-python/tests/mock_api/shared/test_encode_bytes.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_encode_datetime.py b/packages/http-client-python/tests/mock_api/shared/test_encode_datetime.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_encode_datetime.py rename to packages/http-client-python/tests/mock_api/shared/test_encode_datetime.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_headasboolean.py b/packages/http-client-python/tests/mock_api/shared/test_headasboolean.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_headasboolean.py rename to packages/http-client-python/tests/mock_api/shared/test_headasboolean.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_body_optionality.py b/packages/http-client-python/tests/mock_api/shared/test_parameters_body_optionality.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_body_optionality.py rename to packages/http-client-python/tests/mock_api/shared/test_parameters_body_optionality.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_collection_format.py b/packages/http-client-python/tests/mock_api/shared/test_parameters_collection_format.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_collection_format.py rename to packages/http-client-python/tests/mock_api/shared/test_parameters_collection_format.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_path.py b/packages/http-client-python/tests/mock_api/shared/test_parameters_path.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_path.py rename to packages/http-client-python/tests/mock_api/shared/test_parameters_path.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_query.py b/packages/http-client-python/tests/mock_api/shared/test_parameters_query.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_parameters_query.py rename to packages/http-client-python/tests/mock_api/shared/test_parameters_query.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_json_merge_patch.py b/packages/http-client-python/tests/mock_api/shared/test_payload_json_merge_patch.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_json_merge_patch.py rename to packages/http-client-python/tests/mock_api/shared/test_payload_json_merge_patch.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_media_type.py b/packages/http-client-python/tests/mock_api/shared/test_payload_media_type.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_media_type.py rename to packages/http-client-python/tests/mock_api/shared/test_payload_media_type.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_pageable.py b/packages/http-client-python/tests/mock_api/shared/test_payload_pageable.py similarity index 91% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_pageable.py rename to packages/http-client-python/tests/mock_api/shared/test_payload_pageable.py index 66cc77022d5..7aaf8e0ce31 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_pageable.py +++ b/packages/http-client-python/tests/mock_api/shared/test_payload_pageable.py @@ -5,6 +5,7 @@ # -------------------------------------------------------------------------- import pytest from payload.pageable import PageableClient +from payload.pageable.serverdrivenpagination.alternateinitialverb.models import Filter @pytest.fixture @@ -91,3 +92,8 @@ def test_xml_pagination_list_with_continuation(client: PageableClient): def test_xml_pagination_list_with_next_link(client: PageableClient): result = list(client.xml_pagination.list_with_next_link()) assert_result(result) + + +def test_alternate_initial_verb_post(client: PageableClient): + result = list(client.server_driven_pagination.alternate_initial_verb.post(Filter(filter="foo eq bar"))) + assert_result(result) diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_xml.py b/packages/http-client-python/tests/mock_api/shared/test_payload_xml.py similarity index 55% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_xml.py rename to packages/http-client-python/tests/mock_api/shared/test_payload_xml.py index a1918285168..e301ff0a1e5 100644 --- a/packages/http-client-python/generator/test/generic_mock_api_tests/test_payload_xml.py +++ b/packages/http-client-python/tests/mock_api/shared/test_payload_xml.py @@ -7,12 +7,21 @@ import pytest from payload.xml import XmlClient from payload.xml.models import ( + Author, + Book, SimpleModel, ModelWithSimpleArrays, ModelWithArrayOfModel, ModelWithAttributes, ModelWithUnwrappedArray, + ModelWithUnwrappedModelArray, ModelWithRenamedArrays, + ModelWithRenamedProperty, + ModelWithRenamedAttribute, + ModelWithRenamedNestedModel, + ModelWithRenamedWrappedModelArray, + ModelWithRenamedUnwrappedModelArray, + ModelWithRenamedWrappedAndItemModelArray, ModelWithOptionalField, ModelWithRenamedFields, ModelWithEmptyArray, @@ -21,6 +30,10 @@ ModelWithEncodedNames, ModelWithEnum, ModelWithDatetime, + ModelWithNamespace, + ModelWithNamespaceOnProperties, + ModelWithNestedModel, + ModelWithWrappedPrimitiveCustomItemNames, ) @@ -36,12 +49,24 @@ def test_simple_model(client: XmlClient): client.simple_model_value.put(model) +def test_model_with_renamed_property(client: XmlClient): + model = ModelWithRenamedProperty(title="foo", author="bar") + assert client.model_with_renamed_property_value.get() == model + client.model_with_renamed_property_value.put(model) + + def test_model_with_simple_arrays(client: XmlClient): model = ModelWithSimpleArrays(colors=["red", "green", "blue"], counts=[1, 2]) assert client.model_with_simple_arrays_value.get() == model client.model_with_simple_arrays_value.put(model) +def test_model_with_wrapped_primitive_custom_item_names(client: XmlClient): + model = ModelWithWrappedPrimitiveCustomItemNames(tags=["fiction", "classic"]) + assert client.model_with_wrapped_primitive_custom_item_names_value.get() == model + client.model_with_wrapped_primitive_custom_item_names_value.put(model) + + def test_model_with_array_of_model(client: XmlClient): model = ModelWithArrayOfModel( items_property=[ @@ -53,12 +78,62 @@ def test_model_with_array_of_model(client: XmlClient): client.model_with_array_of_model_value.put(model) +def test_model_with_unwrapped_model_array(client: XmlClient): + model = ModelWithUnwrappedModelArray( + items_property=[ + SimpleModel(name="foo", age=123), + SimpleModel(name="bar", age=456), + ] + ) + assert client.model_with_unwrapped_model_array_value.get() == model + client.model_with_unwrapped_model_array_value.put(model) + + +def test_model_with_renamed_wrapped_model_array(client: XmlClient): + model = ModelWithRenamedWrappedModelArray( + items_property=[ + SimpleModel(name="foo", age=123), + SimpleModel(name="bar", age=456), + ] + ) + assert client.model_with_renamed_wrapped_model_array_value.get() == model + client.model_with_renamed_wrapped_model_array_value.put(model) + + +def test_model_with_renamed_unwrapped_model_array(client: XmlClient): + model = ModelWithRenamedUnwrappedModelArray( + items_property=[ + SimpleModel(name="foo", age=123), + SimpleModel(name="bar", age=456), + ] + ) + assert client.model_with_renamed_unwrapped_model_array_value.get() == model + client.model_with_renamed_unwrapped_model_array_value.put(model) + + +def test_model_with_renamed_wrapped_and_item_model_array(client: XmlClient): + model = ModelWithRenamedWrappedAndItemModelArray( + books=[ + Book(title="The Great Gatsby"), + Book(title="Les Miserables"), + ] + ) + assert client.model_with_renamed_wrapped_and_item_model_array_value.get() == model + client.model_with_renamed_wrapped_and_item_model_array_value.put(model) + + def test_model_with_attributes(client: XmlClient): model = ModelWithAttributes(id1=123, id2="foo", enabled=True) assert client.model_with_attributes_value.get() == model client.model_with_attributes_value.put(model) +def test_model_with_renamed_attribute(client: XmlClient): + model = ModelWithRenamedAttribute(id=123, title="The Great Gatsby", author="F. Scott Fitzgerald") + assert client.model_with_renamed_attribute_value.get() == model + client.model_with_renamed_attribute_value.put(model) + + def test_model_with_unwrapped_array(client: XmlClient): model = ModelWithUnwrappedArray(colors=["red", "green", "blue"], counts=[1, 2]) assert client.model_with_unwrapped_array_value.get() == model @@ -77,6 +152,18 @@ def test_model_with_optional_field(client: XmlClient): client.model_with_optional_field_value.put(model) +def test_model_with_nested_model(client: XmlClient): + model = ModelWithNestedModel(nested=SimpleModel(name="foo", age=123)) + assert client.model_with_nested_model_value.get() == model + client.model_with_nested_model_value.put(model) + + +def test_model_with_renamed_nested_model(client: XmlClient): + model = ModelWithRenamedNestedModel(author=Author(name="foo")) + assert client.model_with_renamed_nested_model_value.get() == model + client.model_with_renamed_nested_model_value.put(model) + + def test_model_with_renamed_fields(client: XmlClient): model = ModelWithRenamedFields( input_data=SimpleModel(name="foo", age=123), @@ -124,6 +211,19 @@ def test_model_with_datetime(client: XmlClient): result = client.model_with_datetime_value.get() assert result.rfc3339 == model.rfc3339 assert result.rfc7231 == model.rfc7231 + client.model_with_datetime_value.put(model) + + +def test_model_with_namespace(client: XmlClient): + model = ModelWithNamespace(id=123, title="The Great Gatsby") + assert client.model_with_namespace_value.get() == model + client.model_with_namespace_value.put(model) + + +def test_model_with_namespace_on_properties(client: XmlClient): + model = ModelWithNamespaceOnProperties(id=123, title="The Great Gatsby", author="F. Scott Fitzgerald") + assert client.model_with_namespace_on_properties_value.get() == model + client.model_with_namespace_on_properties_value.put(model) def test_xml_error_value(client: XmlClient, core_library): diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_response_status_code_range.py b/packages/http-client-python/tests/mock_api/shared/test_response_status_code_range.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_response_status_code_range.py rename to packages/http-client-python/tests/mock_api/shared/test_response_status_code_range.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_routes.py b/packages/http-client-python/tests/mock_api/shared/test_routes.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_routes.py rename to packages/http-client-python/tests/mock_api/shared/test_routes.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_server_endpoint_not_defined.py b/packages/http-client-python/tests/mock_api/shared/test_server_endpoint_not_defined.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_server_endpoint_not_defined.py rename to packages/http-client-python/tests/mock_api/shared/test_server_endpoint_not_defined.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_server_path_multiple.py b/packages/http-client-python/tests/mock_api/shared/test_server_path_multiple.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_server_path_multiple.py rename to packages/http-client-python/tests/mock_api/shared/test_server_path_multiple.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_server_path_single.py b/packages/http-client-python/tests/mock_api/shared/test_server_path_single.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_server_path_single.py rename to packages/http-client-python/tests/mock_api/shared/test_server_path_single.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_server_versions_not_versioned.py b/packages/http-client-python/tests/mock_api/shared/test_server_versions_not_versioned.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_server_versions_not_versioned.py rename to packages/http-client-python/tests/mock_api/shared/test_server_versions_not_versioned.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_server_versions_versioned.py b/packages/http-client-python/tests/mock_api/shared/test_server_versions_versioned.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_server_versions_versioned.py rename to packages/http-client-python/tests/mock_api/shared/test_server_versions_versioned.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_special_headers_conditional_request.py b/packages/http-client-python/tests/mock_api/shared/test_special_headers_conditional_request.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_special_headers_conditional_request.py rename to packages/http-client-python/tests/mock_api/shared/test_special_headers_conditional_request.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_special_headers_repeatability.py b/packages/http-client-python/tests/mock_api/shared/test_special_headers_repeatability.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_special_headers_repeatability.py rename to packages/http-client-python/tests/mock_api/shared/test_special_headers_repeatability.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_specs_documentation.py b/packages/http-client-python/tests/mock_api/shared/test_specs_documentation.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_specs_documentation.py rename to packages/http-client-python/tests/mock_api/shared/test_specs_documentation.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_streaming_jsonl.py b/packages/http-client-python/tests/mock_api/shared/test_streaming_jsonl.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_streaming_jsonl.py rename to packages/http-client-python/tests/mock_api/shared/test_streaming_jsonl.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_array.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_array.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_array.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_array.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_dictionary.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_dictionary.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_dictionary.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_dictionary.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_enum_extensible.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_enum_extensible.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_enum_extensible.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_enum_extensible.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_enum_fixed.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_enum_fixed.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_enum_fixed.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_enum_fixed.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_file.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_file.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_file.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_file.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_empty.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_empty.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_empty.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_empty.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_enum_discriminator.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_enum_discriminator.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_enum_discriminator.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_nested_discriminator.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_nested_discriminator.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_nested_discriminator.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_nested_discriminator.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_not_discriminated.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_not_discriminated.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_not_discriminated.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_recursive.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_recursive.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_recursive.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_recursive.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_single_discriminator.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_single_discriminator.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_inheritance_single_discriminator.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_inheritance_single_discriminator.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_usage.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_usage.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_usage.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_usage.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_model_visibility.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_model_visibility.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_model_visibility.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_additionalproperties.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_property_additionalproperties.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_additionalproperties.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_property_additionalproperties.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_nullable.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_property_nullable.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_nullable.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_property_nullable.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_optional.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_property_optional.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_optional.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_property_optional.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_valuetypes.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_property_valuetypes.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_property_valuetypes.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_property_valuetypes.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_scalar.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_scalar.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_scalar.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_scalar.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_union.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_union.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_union.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_union.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_union_discriminated.py b/packages/http-client-python/tests/mock_api/shared/test_typetest_union_discriminated.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_typetest_union_discriminated.py rename to packages/http-client-python/tests/mock_api/shared/test_typetest_union_discriminated.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_added.py b/packages/http-client-python/tests/mock_api/shared/test_versioning_added.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_added.py rename to packages/http-client-python/tests/mock_api/shared/test_versioning_added.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_made_optional.py b/packages/http-client-python/tests/mock_api/shared/test_versioning_made_optional.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_made_optional.py rename to packages/http-client-python/tests/mock_api/shared/test_versioning_made_optional.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_removed.py b/packages/http-client-python/tests/mock_api/shared/test_versioning_removed.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_removed.py rename to packages/http-client-python/tests/mock_api/shared/test_versioning_removed.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_renamed_from.py b/packages/http-client-python/tests/mock_api/shared/test_versioning_renamed_from.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_renamed_from.py rename to packages/http-client-python/tests/mock_api/shared/test_versioning_renamed_from.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_return_type_changed_from.py b/packages/http-client-python/tests/mock_api/shared/test_versioning_return_type_changed_from.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_return_type_changed_from.py rename to packages/http-client-python/tests/mock_api/shared/test_versioning_return_type_changed_from.py diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_type_changed_from.py b/packages/http-client-python/tests/mock_api/shared/test_versioning_type_changed_from.py similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/test_versioning_type_changed_from.py rename to packages/http-client-python/tests/mock_api/shared/test_versioning_type_changed_from.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_auth_flow_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_auth_flow_async.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_auth_flow_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_auth_flow_async.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_encode_duration_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_encode_duration_async.py similarity index 98% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_encode_duration_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_encode_duration_async.py index f14c436a8f8..2b0716dc98b 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_encode_duration_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_encode_duration_async.py @@ -6,6 +6,7 @@ import datetime import pytest +import pytest_asyncio from encode.duration.aio import DurationClient from encode.duration.property.models import ( Int32SecondsDurationProperty, @@ -16,7 +17,7 @@ ) -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with DurationClient() as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_encode_numeric_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_encode_numeric_async.py similarity index 96% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_encode_numeric_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_encode_numeric_async.py index 19e4f619f2c..244f2ee0e12 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_encode_numeric_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_encode_numeric_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from encode.numeric.aio import NumericClient from encode.numeric.property import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with NumericClient() as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_basic_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_parameters_basic_async.py similarity index 94% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_basic_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_parameters_basic_async.py index 81a0deecdd5..f6d8c58a938 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_basic_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_parameters_basic_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.basic.aio import BasicClient from parameters.basic.explicitbody.models import User -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with BasicClient() as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_spread_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_parameters_spread_async.py similarity index 98% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_spread_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_parameters_spread_async.py index 89f3cec4819..57de584d843 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_parameters_spread_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_parameters_spread_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from parameters.spread.aio import SpreadClient from parameters.spread.model.models import BodyParameter -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with SpreadClient() as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_payload_content_negotiation_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_payload_content_negotiation_async.py similarity index 97% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_payload_content_negotiation_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_payload_content_negotiation_async.py index 27db476d9c5..3dd1cc324b6 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_payload_content_negotiation_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_payload_content_negotiation_async.py @@ -5,11 +5,12 @@ # -------------------------------------------------------------------------- import base64 import pytest +import pytest_asyncio from payload.contentnegotiation.aio import ContentNegotiationClient from payload.contentnegotiation.differentbody.models import PngImageAsJson -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ContentNegotiationClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_payload_multipart_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_payload_multipart_async.py similarity index 99% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_payload_multipart_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_payload_multipart_async.py index 4a1a6a9cedf..b5197313bff 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_payload_multipart_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_payload_multipart_async.py @@ -5,6 +5,7 @@ # -------------------------------------------------------------------------- from pathlib import Path import pytest +import pytest_asyncio from payload.multipart import models from payload.multipart.aio import MultiPartClient from payload.multipart.formdata.httpparts.nonstring.models import FloatRequest @@ -14,7 +15,7 @@ PNG = Path(__file__).parent.parent / "data/image.png" -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with MultiPartClient(endpoint="http://localhost:3000") as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_serialization_encoded_name_json_async.py similarity index 94% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_serialization_encoded_name_json_async.py index 7234c7e253a..c03899fe7e3 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_serialization_encoded_name_json_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_serialization_encoded_name_json_async.py @@ -4,11 +4,12 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from serialization.encodedname.json.aio import JsonClient from serialization.encodedname.json.property import models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with JsonClient() as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_special_words_async.py similarity index 86% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_special_words_async.py index eb11843ab32..c1e3bc0a8f2 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_special_words_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_special_words_async.py @@ -4,12 +4,14 @@ # license information. # -------------------------------------------------------------------------- import pytest +import pytest_asyncio from specialwords.aio import SpecialWordsClient from specialwords.models import models from specialwords.modelproperties import models as model_properties_models +from specialwords.extensiblestrings import models as extensible_strings_models -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with SpecialWordsClient() as client: yield client @@ -64,3 +66,9 @@ async def test_model_properties_dict_methods(client: SpecialWordsClient): @pytest.mark.asyncio async def test_model_properties_with_list(client: SpecialWordsClient): await client.model_properties.with_list(model_properties_models.ModelWithList(list="ok")) + + +@pytest.mark.asyncio +async def test_extensible_strings(client: SpecialWordsClient): + for enum_value in extensible_strings_models.ExtensibleString: + assert enum_value == await client.extensible_strings.put_extensible_string_value(body=enum_value) diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_unbranded_async.py similarity index 93% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py rename to packages/http-client-python/tests/mock_api/unbranded/asynctests/test_unbranded_async.py index 1ba8cc5750d..0218d8578ef 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/asynctests/test_unbranded_async.py +++ b/packages/http-client-python/tests/mock_api/unbranded/asynctests/test_unbranded_async.py @@ -4,11 +4,12 @@ # ------------------------------------ import traceback import pytest +import pytest_asyncio from typetest.scalar.aio import ScalarClient from corehttp.exceptions import HttpResponseError -@pytest.fixture +@pytest_asyncio.fixture async def client(): async with ScalarClient() as client: yield client diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/conftest.py b/packages/http-client-python/tests/mock_api/unbranded/conftest.py similarity index 84% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/conftest.py rename to packages/http-client-python/tests/mock_api/unbranded/conftest.py index 78b45a295a0..5d190ae0bd4 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/conftest.py +++ b/packages/http-client-python/tests/mock_api/unbranded/conftest.py @@ -14,7 +14,7 @@ def start_server_process(): - http_path = Path(os.path.dirname(__file__)) / Path("../../../../node_modules/@typespec/http-specs") + http_path = Path(os.path.dirname(__file__)) / Path("../../../node_modules/@typespec/http-specs") os.chdir(http_path.resolve()) cmd = "tsp-spector serve ./specs" if os.name == "nt": @@ -23,10 +23,14 @@ def start_server_process(): def terminate_server_process(process): - if os.name == "nt": - process.kill() - else: - os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send the signal to all the process groups + try: + if os.name == "nt": + process.kill() + else: + os.killpg(os.getpgid(process.pid), signal.SIGTERM) # Send the signal to all the process groups + except ProcessLookupError: + # Process already terminated, which is fine + pass @pytest.fixture(scope="session", autouse=True) diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/data/image.jpg b/packages/http-client-python/tests/mock_api/unbranded/data/image.jpg similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/data/image.jpg rename to packages/http-client-python/tests/mock_api/unbranded/data/image.jpg diff --git a/packages/http-client-python/generator/test/generic_mock_api_tests/data/image.png b/packages/http-client-python/tests/mock_api/unbranded/data/image.png similarity index 100% rename from packages/http-client-python/generator/test/generic_mock_api_tests/data/image.png rename to packages/http-client-python/tests/mock_api/unbranded/data/image.png diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_auth_flow.py b/packages/http-client-python/tests/mock_api/unbranded/test_auth_flow.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_auth_flow.py rename to packages/http-client-python/tests/mock_api/unbranded/test_auth_flow.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_encode_duration.py b/packages/http-client-python/tests/mock_api/unbranded/test_encode_duration.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_encode_duration.py rename to packages/http-client-python/tests/mock_api/unbranded/test_encode_duration.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_encode_numeric.py b/packages/http-client-python/tests/mock_api/unbranded/test_encode_numeric.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_encode_numeric.py rename to packages/http-client-python/tests/mock_api/unbranded/test_encode_numeric.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_parameters_basic.py b/packages/http-client-python/tests/mock_api/unbranded/test_parameters_basic.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_parameters_basic.py rename to packages/http-client-python/tests/mock_api/unbranded/test_parameters_basic.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_parameters_spread.py b/packages/http-client-python/tests/mock_api/unbranded/test_parameters_spread.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_parameters_spread.py rename to packages/http-client-python/tests/mock_api/unbranded/test_parameters_spread.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_payload_content_negotiation.py b/packages/http-client-python/tests/mock_api/unbranded/test_payload_content_negotiation.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_payload_content_negotiation.py rename to packages/http-client-python/tests/mock_api/unbranded/test_payload_content_negotiation.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_payload_multipart.py b/packages/http-client-python/tests/mock_api/unbranded/test_payload_multipart.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_payload_multipart.py rename to packages/http-client-python/tests/mock_api/unbranded/test_payload_multipart.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_serialization_encoded_name_json.py b/packages/http-client-python/tests/mock_api/unbranded/test_serialization_encoded_name_json.py similarity index 100% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_serialization_encoded_name_json.py rename to packages/http-client-python/tests/mock_api/unbranded/test_serialization_encoded_name_json.py diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_special_words.py b/packages/http-client-python/tests/mock_api/unbranded/test_special_words.py similarity index 87% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_special_words.py rename to packages/http-client-python/tests/mock_api/unbranded/test_special_words.py index 89679bfd788..83269cc1e47 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_special_words.py +++ b/packages/http-client-python/tests/mock_api/unbranded/test_special_words.py @@ -7,6 +7,7 @@ from specialwords import SpecialWordsClient from specialwords.models import models from specialwords.modelproperties import models as model_properties_models +from specialwords.extensiblestrings import models as extensible_strings_models @pytest.fixture @@ -58,3 +59,8 @@ def test_model_properties_dict_methods(client: SpecialWordsClient): def test_model_properties_with_list(client: SpecialWordsClient): client.model_properties.with_list(model_properties_models.ModelWithList(list="ok")) + + +def test_extensible_strings(client: SpecialWordsClient): + for enum_value in extensible_strings_models.ExtensibleString: + assert enum_value == client.extensible_strings.put_extensible_string_value(body=enum_value) diff --git a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_unbranded.py b/packages/http-client-python/tests/mock_api/unbranded/test_unbranded.py similarity index 95% rename from packages/http-client-python/generator/test/unbranded/mock_api_tests/test_unbranded.py rename to packages/http-client-python/tests/mock_api/unbranded/test_unbranded.py index 19d767860f8..e1b32751ff3 100644 --- a/packages/http-client-python/generator/test/unbranded/mock_api_tests/test_unbranded.py +++ b/packages/http-client-python/tests/mock_api/unbranded/test_unbranded.py @@ -51,7 +51,7 @@ def check_sensitive_word(folder: Path, word: str) -> str: def test_sensitive_word(): - check_folder = (Path(os.path.dirname(__file__)) / "../generated").resolve() + check_folder = (Path(os.path.dirname(__file__)) / "../../generated/unbranded").resolve() assert [] == check_sensitive_word(check_folder, "azure") # after update spector, it shall also equal to [] expected = [ diff --git a/packages/http-client-python/tests/requirements/azure.txt b/packages/http-client-python/tests/requirements/azure.txt new file mode 100644 index 00000000000..fe168be77f9 --- /dev/null +++ b/packages/http-client-python/tests/requirements/azure.txt @@ -0,0 +1,6 @@ +# === common azure dependencies across repos === +# Azure SDK dependencies +-r base.txt +azure-core>=1.37.0 +azure-mgmt-core==1.6.0 +# === end common azure dependencies across repos === diff --git a/packages/http-client-python/tests/requirements/base.txt b/packages/http-client-python/tests/requirements/base.txt new file mode 100644 index 00000000000..441007cce76 --- /dev/null +++ b/packages/http-client-python/tests/requirements/base.txt @@ -0,0 +1,10 @@ +# Base test dependencies +pytest==8.3.2 +pytest-asyncio>=0.14.0 +aiohttp +coverage==7.6.1 +colorama==0.4.6 +isodate>=0.6.1 +typing-extensions>=4.6.0 +tox>=4.16.0 +tox-uv>=1.0.0 diff --git a/packages/http-client-python/tests/requirements/docs.txt b/packages/http-client-python/tests/requirements/docs.txt new file mode 100644 index 00000000000..c92e47a60d6 --- /dev/null +++ b/packages/http-client-python/tests/requirements/docs.txt @@ -0,0 +1,7 @@ +# Documentation dependencies +-r base.txt +sphinx>=7.0.0 +sphinx_rtd_theme>=2.0.0 +myst_parser>=2.0.0 +sphinxcontrib-jquery>=4.1 +apiview-stub-generator>=0.3.19 --index-url=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/ diff --git a/packages/http-client-python/tests/requirements/lint.txt b/packages/http-client-python/tests/requirements/lint.txt new file mode 100644 index 00000000000..2a9896f8d75 --- /dev/null +++ b/packages/http-client-python/tests/requirements/lint.txt @@ -0,0 +1,4 @@ +# Linting dependencies +-r base.txt +pylint==4.0.4 +black==24.8.0 diff --git a/packages/http-client-python/tests/requirements/typecheck.txt b/packages/http-client-python/tests/requirements/typecheck.txt new file mode 100644 index 00000000000..6e09ee898c7 --- /dev/null +++ b/packages/http-client-python/tests/requirements/typecheck.txt @@ -0,0 +1,5 @@ +# Type checking dependencies +-r base.txt +pyright==1.1.407 +mypy==1.19.1 +types-PyYAML==6.0.12.8 diff --git a/packages/http-client-python/tests/requirements/unbranded.txt b/packages/http-client-python/tests/requirements/unbranded.txt new file mode 100644 index 00000000000..724244f16e1 --- /dev/null +++ b/packages/http-client-python/tests/requirements/unbranded.txt @@ -0,0 +1,5 @@ +# === common unbranded dependencies across repos === +# Unbranded SDK dependencies +-r base.txt +corehttp[requests] +# === end common unbranded dependencies across repos === diff --git a/packages/http-client-python/tests/tox.ini b/packages/http-client-python/tests/tox.ini new file mode 100644 index 00000000000..f68944f3d64 --- /dev/null +++ b/packages/http-client-python/tests/tox.ini @@ -0,0 +1,207 @@ +[tox] +envlist = test-{azure,unbranded}, lint-{azure,unbranded}, mypy-{azure,unbranded}, pyright-{azure,unbranded}, unittest +skipsdist = True +isolated_build = True +requires = tox-uv + +[testenv] +deps = + -r {tox_root}/requirements/base.txt +setenv = + PYTHONPATH = {tox_root}/../generator + FLAVOR = {envname} +passenv = + FOLDER + +# ============================================================================= +# Test environments +# ============================================================================= + +[testenv:test-azure] +description = Run tests for Azure flavor +setenv = + {[testenv]setenv} + FLAVOR = azure +deps = + {[testenv]deps} + -r {tox_root}/requirements/azure.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py azure {tox_root} + pytest mock_api/azure mock_api/shared -v {posargs} + +[testenv:test-unbranded] +description = Run tests for unbranded flavor +setenv = + {[testenv]setenv} + FLAVOR = unbranded +deps = + {[testenv]deps} + -r {tox_root}/requirements/unbranded.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py unbranded {tox_root} + pytest mock_api/unbranded mock_api/shared -v {posargs} + +[testenv:unittest] +description = Run unit tests for pygen internals +deps = + {[testenv]deps} + -r {tox_root}/requirements/unbranded.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py unbranded {tox_root} + pytest unit/ -v -n auto {posargs} + +# ============================================================================= +# Lint environments +# ============================================================================= + +[testenv:lint-azure] +description = Run linting for Azure flavor +setenv = + {[testenv]setenv} + FLAVOR = azure +deps = + -r {tox_root}/requirements/lint.txt + -r {tox_root}/requirements/azure.txt + -e {tox_root}/../generator +commands = + uv pip install azure-pylint-guidelines-checker==0.5.2 --index-url="https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/" + python {tox_root}/install_packages.py azure {tox_root} + python {tox_root}/../eng/scripts/ci/run_pylint.py -t azure -s generated {posargs} + +[testenv:lint-unbranded] +description = Run linting for unbranded flavor +setenv = + {[testenv]setenv} + FLAVOR = unbranded +deps = + -r {tox_root}/requirements/lint.txt + -r {tox_root}/requirements/unbranded.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py unbranded {tox_root} + python {tox_root}/../eng/scripts/ci/run_pylint.py -t unbranded -s generated {posargs} + +# ============================================================================= +# Type checking environments (separate mypy and pyright) +# ============================================================================= + +[testenv:mypy-azure] +description = Run mypy type checking for Azure flavor +setenv = + {[testenv]setenv} + FLAVOR = azure +deps = + -r {tox_root}/requirements/typecheck.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py azure {tox_root} + python {tox_root}/../eng/scripts/ci/run_mypy.py -t azure -s generated {posargs} + +[testenv:mypy-unbranded] +description = Run mypy type checking for unbranded flavor +setenv = + {[testenv]setenv} + FLAVOR = unbranded +deps = + -r {tox_root}/requirements/typecheck.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py unbranded {tox_root} + python {tox_root}/../eng/scripts/ci/run_mypy.py -t unbranded -s generated {posargs} + +[testenv:pyright-azure] +description = Run pyright type checking for Azure flavor +setenv = + {[testenv]setenv} + FLAVOR = azure +deps = + -r {tox_root}/requirements/typecheck.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py azure {tox_root} + python {tox_root}/../eng/scripts/ci/run_pyright.py -t azure -s generated {posargs} + +[testenv:pyright-unbranded] +description = Run pyright type checking for unbranded flavor +setenv = + {[testenv]setenv} + FLAVOR = unbranded +deps = + -r {tox_root}/requirements/typecheck.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py unbranded {tox_root} + python {tox_root}/../eng/scripts/ci/run_pyright.py -t unbranded -s generated {posargs} + +# ============================================================================= +# Documentation environments +# ============================================================================= + +[testenv:docs-azure] +description = Run documentation validation for Azure flavor +basepython = python3.10 +setenv = + {[testenv]setenv} + FLAVOR = azure +deps = + -r {tox_root}/requirements/docs.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py azure {tox_root} + python {tox_root}/../eng/scripts/ci/run_apiview.py -t azure -s generated {posargs} + python {tox_root}/../eng/scripts/ci/run_sphinx_build.py -t azure -s generated {posargs} + +[testenv:docs-unbranded] +description = Run documentation validation for unbranded flavor +basepython = python3.10 +setenv = + {[testenv]setenv} + FLAVOR = unbranded +deps = + -r {tox_root}/requirements/docs.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py unbranded {tox_root} + python {tox_root}/../eng/scripts/ci/run_apiview.py -t unbranded -s generated {posargs} + python {tox_root}/../eng/scripts/ci/run_sphinx_build.py -t unbranded -s generated {posargs} + +# ============================================================================= +# CI environments (combines all checks) +# ============================================================================= + +[testenv:ci-azure] +description = Run full CI for Azure flavor +setenv = + {[testenv]setenv} + FLAVOR = azure +deps = + -r {tox_root}/requirements/lint.txt + -r {tox_root}/requirements/typecheck.txt + -r {tox_root}/requirements/azure.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py azure {tox_root} + pytest mock_api/azure mock_api/shared -v + python {tox_root}/../eng/scripts/ci/run_pylint.py -t azure -s generated + python {tox_root}/../eng/scripts/ci/run_mypy.py -t azure -s generated + python {tox_root}/../eng/scripts/ci/run_pyright.py -t azure -s generated + +[testenv:ci-unbranded] +description = Run full CI for unbranded flavor +setenv = + {[testenv]setenv} + FLAVOR = unbranded +deps = + -r {tox_root}/requirements/lint.txt + -r {tox_root}/requirements/typecheck.txt + -r {tox_root}/requirements/unbranded.txt + -e {tox_root}/../generator +commands = + python {tox_root}/install_packages.py unbranded {tox_root} + pytest mock_api/unbranded mock_api/shared -v + python {tox_root}/../eng/scripts/ci/run_pylint.py -t unbranded -s generated + python {tox_root}/../eng/scripts/ci/run_mypy.py -t unbranded -s generated + python {tox_root}/../eng/scripts/ci/run_pyright.py -t unbranded -s generated diff --git a/packages/http-client-python/generator/test/unittests/conftest.py b/packages/http-client-python/tests/unit/conftest.py similarity index 100% rename from packages/http-client-python/generator/test/unittests/conftest.py rename to packages/http-client-python/tests/unit/conftest.py diff --git a/packages/http-client-python/generator/test/unittests/requirements.txt b/packages/http-client-python/tests/unit/requirements.txt similarity index 100% rename from packages/http-client-python/generator/test/unittests/requirements.txt rename to packages/http-client-python/tests/unit/requirements.txt diff --git a/packages/http-client-python/tests/unit/test_enums.py b/packages/http-client-python/tests/unit/test_enums.py new file mode 100644 index 00000000000..2b671c90996 --- /dev/null +++ b/packages/http-client-python/tests/unit/test_enums.py @@ -0,0 +1,89 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- +from enum import Enum, EnumMeta +from specialwords.extensiblestrings import models as extensible_strings_models + + +class _CaseInsensitiveEnumMeta(EnumMeta): + def __getitem__(self, name): + return super().__getitem__(name.upper()) + + def __getattr__(cls, name): + """Return the enum member matching `name` + We use __getattr__ instead of descriptors or inserting into the enum + class' __dict__ in order to support `name` and `value` being both + properties for enum members (which live in the class' __dict__) and + enum members themselves. + """ + try: + return cls._member_map_[name.upper()] + except KeyError: + raise AttributeError(name) + + +class EnumsWithCallableNames(str, Enum, metaclass=_CaseInsensitiveEnumMeta): + """Gets the unit of measurement.""" + + COUNT = "count" + ENCODE = "encode" + FIND = "find" + JOIN = "join" + + +def test_count(): + assert EnumsWithCallableNames.COUNT == "count" + assert callable(EnumsWithCallableNames.count) + + +def test_encode(): + assert EnumsWithCallableNames.ENCODE == "encode" + assert callable(EnumsWithCallableNames.encode) + + +def test_find(): + assert EnumsWithCallableNames.FIND == "find" + assert callable(EnumsWithCallableNames.find) + + +def test_join(): + assert EnumsWithCallableNames.JOIN == "join" + assert callable(EnumsWithCallableNames.join) + + +def test_extensible_strings_enum_with_special_words(): + assert extensible_strings_models.ExtensibleString.AND == "and" + assert extensible_strings_models.ExtensibleString.AS == "as" + assert extensible_strings_models.ExtensibleString.ASSERT == "assert" + assert extensible_strings_models.ExtensibleString.ASYNC == "async" + assert extensible_strings_models.ExtensibleString.AWAIT == "await" + assert extensible_strings_models.ExtensibleString.BREAK == "break" + assert extensible_strings_models.ExtensibleString.CLASS == "class" + assert extensible_strings_models.ExtensibleString.CONSTRUCTOR == "constructor" + assert extensible_strings_models.ExtensibleString.CONTINUE == "continue" + assert extensible_strings_models.ExtensibleString.DEF == "def" + assert extensible_strings_models.ExtensibleString.DEL == "del" + assert extensible_strings_models.ExtensibleString.ELIF == "elif" + assert extensible_strings_models.ExtensibleString.ELSE == "else" + assert extensible_strings_models.ExtensibleString.EXCEPT == "except" + assert extensible_strings_models.ExtensibleString.EXEC == "exec" + assert extensible_strings_models.ExtensibleString.FINALLY == "finally" + assert extensible_strings_models.ExtensibleString.FOR == "for" + assert extensible_strings_models.ExtensibleString.FROM == "from" + assert extensible_strings_models.ExtensibleString.GLOBAL == "global" + assert extensible_strings_models.ExtensibleString.IF == "if" + assert extensible_strings_models.ExtensibleString.IMPORT == "import" + assert extensible_strings_models.ExtensibleString.IN == "in" + assert extensible_strings_models.ExtensibleString.IS == "is" + assert extensible_strings_models.ExtensibleString.LAMBDA == "lambda" + assert extensible_strings_models.ExtensibleString.NOT == "not" + assert extensible_strings_models.ExtensibleString.OR == "or" + assert extensible_strings_models.ExtensibleString.PASS == "pass" + assert extensible_strings_models.ExtensibleString.RAISE == "raise" + assert extensible_strings_models.ExtensibleString.RETURN == "return" + assert extensible_strings_models.ExtensibleString.TRY == "try" + assert extensible_strings_models.ExtensibleString.WHILE == "while" + assert extensible_strings_models.ExtensibleString.WITH == "with" + assert extensible_strings_models.ExtensibleString.YIELD == "yield" diff --git a/packages/http-client-python/generator/test/unittests/test_model_base_serialization.py b/packages/http-client-python/tests/unit/test_model_base_serialization.py similarity index 100% rename from packages/http-client-python/generator/test/unittests/test_model_base_serialization.py rename to packages/http-client-python/tests/unit/test_model_base_serialization.py diff --git a/packages/http-client-python/generator/test/unittests/test_model_base_xml_serialization.py b/packages/http-client-python/tests/unit/test_model_base_xml_serialization.py similarity index 100% rename from packages/http-client-python/generator/test/unittests/test_model_base_xml_serialization.py rename to packages/http-client-python/tests/unit/test_model_base_xml_serialization.py diff --git a/packages/http-client-python/generator/test/unittests/test_name_converter.py b/packages/http-client-python/tests/unit/test_name_converter.py similarity index 100% rename from packages/http-client-python/generator/test/unittests/test_name_converter.py rename to packages/http-client-python/tests/unit/test_name_converter.py diff --git a/packages/http-client-python/generator/test/unittests/test_optional_return_type.py b/packages/http-client-python/tests/unit/test_optional_return_type.py similarity index 100% rename from packages/http-client-python/generator/test/unittests/test_optional_return_type.py rename to packages/http-client-python/tests/unit/test_optional_return_type.py diff --git a/packages/http-client-python/generator/test/unittests/test_parameter_ordering.py b/packages/http-client-python/tests/unit/test_parameter_ordering.py similarity index 100% rename from packages/http-client-python/generator/test/unittests/test_parameter_ordering.py rename to packages/http-client-python/tests/unit/test_parameter_ordering.py diff --git a/packages/http-client-python/generator/test/unittests/test_sort_schema.py b/packages/http-client-python/tests/unit/test_sort_schema.py similarity index 100% rename from packages/http-client-python/generator/test/unittests/test_sort_schema.py rename to packages/http-client-python/tests/unit/test_sort_schema.py diff --git a/packages/http-client-python/generator/test/unittests/tox.ini b/packages/http-client-python/tests/unit/tox.ini similarity index 100% rename from packages/http-client-python/generator/test/unittests/tox.ini rename to packages/http-client-python/tests/unit/tox.ini diff --git a/packages/http-client/package.json b/packages/http-client/package.json index dedac8d8510..08146247242 100644 --- a/packages/http-client/package.json +++ b/packages/http-client/package.json @@ -23,25 +23,25 @@ } }, "peerDependencies": { - "@alloy-js/core": "^0.22.0", - "@alloy-js/typescript": "^0.22.0", + "@alloy-js/core": "catalog:", + "@alloy-js/typescript": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/emitter-framework": "workspace:^", "@typespec/http": "workspace:^" }, "devDependencies": { - "@alloy-js/cli": "^0.22.0", - "@alloy-js/core": "^0.22.0", - "@alloy-js/rollup-plugin": "^0.1.0", - "@alloy-js/typescript": "^0.22.0", - "@types/node": "~25.3.0", + "@alloy-js/cli": "catalog:", + "@alloy-js/core": "catalog:", + "@alloy-js/rollup-plugin": "catalog:", + "@alloy-js/typescript": "catalog:", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/emitter-framework": "workspace:^", "@typespec/http": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/tspd": "workspace:^", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "typescript": "catalog:", + "vitest": "catalog:" }, "scripts": { "build": "npm run gen-extern-signature && alloy build && npm run lint-typespec-library", diff --git a/packages/http-server-csharp/CHANGELOG.md b/packages/http-server-csharp/CHANGELOG.md index 56684ee47f4..8b72de70238 100644 --- a/packages/http-server-csharp/CHANGELOG.md +++ b/packages/http-server-csharp/CHANGELOG.md @@ -1,5 +1,12 @@ # Change Log - @typespec/http-server-csharp +## 0.58.0-alpha.27 + +### Bug Fixes + +- [#10175](https://github.com/microsoft/typespec/pull/10175) Emit C# class for models that extend another model with no additional properties + + ## 0.58.0-alpha.26 ### Bump dependencies diff --git a/packages/http-server-csharp/package.json b/packages/http-server-csharp/package.json index 4cbe633fd56..7490e02bf53 100644 --- a/packages/http-server-csharp/package.json +++ b/packages/http-server-csharp/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/http-server-csharp", - "version": "0.58.0-alpha.26", + "version": "0.58.0-alpha.27", "author": "Microsoft Corporation", "description": "TypeSpec service code generator for c-sharp", "homepage": "https://typespec.io", @@ -64,16 +64,16 @@ }, "dependencies": { "@typespec/asset-emitter": "workspace:^", - "change-case": "~5.4.4", - "cross-spawn": "^7.0.6", - "picocolors": "~1.1.1", - "yaml": "~2.8.2", - "yargs": "~18.0.0" + "change-case": "catalog:", + "cross-spawn": "catalog:", + "picocolors": "catalog:", + "yaml": "catalog:", + "yargs": "catalog:" }, "devDependencies": { - "@types/cross-spawn": "~6.0.6", - "@types/node": "~25.3.0", - "@types/yargs": "~17.0.33", + "@types/cross-spawn": "catalog:", + "@types/node": "catalog:", + "@types/yargs": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/http": "workspace:^", "@typespec/http-specs": "workspace:^", @@ -85,15 +85,15 @@ "@typespec/spector": "workspace:^", "@typespec/tspd": "workspace:^", "@typespec/versioning": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "fs-extra": "^11.2.0", - "globby": "~16.1.0", - "inquirer": "^13.1.0", - "ora": "^9.0.0", - "p-limit": "^7.1.1", - "pathe": "^2.0.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "fs-extra": "catalog:", + "globby": "catalog:", + "inquirer": "catalog:", + "ora": "catalog:", + "p-limit": "catalog:", + "pathe": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/http-server-csharp/src/lib/utils.ts b/packages/http-server-csharp/src/lib/utils.ts index 2b64cb84fea..10955435bb7 100644 --- a/packages/http-server-csharp/src/lib/utils.ts +++ b/packages/http-server-csharp/src/lib/utils.ts @@ -1059,7 +1059,7 @@ export function getControllerReturnStatement( export function isEmptyResponseModel(program: Program, model: Type): boolean { if (model.kind !== "Model") return false; - if (model.properties.size === 0) return true; + if (model.properties.size === 0 && !model.baseModel) return true; return ( model.properties.size === 1 && diff --git a/packages/http-server-csharp/test/generation.test.ts b/packages/http-server-csharp/test/generation.test.ts index 4d20e858287..5cb6dfacfca 100644 --- a/packages/http-server-csharp/test/generation.test.ts +++ b/packages/http-server-csharp/test/generation.test.ts @@ -1178,7 +1178,6 @@ interface Widgets { [ "IWidgets.cs", [ - "using TypeSpec.Http;", "public interface IWidgets", "Task UpdateAsync( string id, WidgetMergePatchUpdate body);", ], @@ -1186,7 +1185,6 @@ interface Widgets { [ "WidgetsController.cs", [ - "using TypeSpec.Http;", "public partial class WidgetsController: ControllerBase", "public virtual async Task Update(string id, WidgetMergePatchUpdate body)", ], @@ -1194,7 +1192,7 @@ interface Widgets { [ "WidgetMergePatchUpdate.cs", [ - "namespace TypeSpec.Http {", + "namespace Microsoft.Contoso {", "public string Id { get; set; }", "public int? Weight { get; set; }", "public string Color { get; set; }", @@ -1231,8 +1229,7 @@ interface Widgets { [ "WidgetMergePatchUpdate.cs", [ - "namespace TypeSpec.Http {", - "using Microsoft.Contoso;", + "namespace Microsoft.Contoso {", "public string Id { get; set; }", "public int? Weight { get; set; }", "public WidgetColor? Color { get; set; }", @@ -1274,7 +1271,7 @@ interface Widgets { [ "WidgetMergePatchUpdate.cs", [ - "namespace TypeSpec.Http {", + "namespace Microsoft.Contoso {", "using Microsoft.Contoso.Colors;", "using Microsoft.Contoso.Sizes;", "public string Id { get; set; }", @@ -1345,8 +1342,7 @@ interface Widgets { [ "WidgetMergePatchUpdate.cs", [ - "namespace TypeSpec.Http {", - "using Microsoft.Contoso;", + "namespace Microsoft.Contoso {", "public string Id { get; set; }", "public WidgetColor? Color { get; set; }", ], @@ -1359,8 +1355,8 @@ it("Handles MergePatchUpdate with string-enum union property from different name // String-enum unions (e.g. union Color { "red", "blue" }) also use createEnumContext // and should get the correct using directive when in a different namespace. // Note: string-enum unions are MergePatch-transformed, so the property type becomes - // WidgetColorMergePatchUpdate (a new union in TypeSpec.Http), but the using directive - // for the original union's namespace is still needed for the union's definition file. + // WidgetColorMergePatchUpdate, but the using directive for the original union's + // namespace is still needed for the union's definition file. await compileAndValidateMultiple( tester, ` @@ -1384,7 +1380,7 @@ interface Widgets { [ "WidgetMergePatchUpdate.cs", [ - "namespace TypeSpec.Http {", + "namespace Microsoft.Contoso {", "using Microsoft.Contoso.Colors;", "public string Id { get; set; }", ], @@ -1395,7 +1391,7 @@ interface Widgets { it("Handles MergePatchUpdate with array of models from different namespace", async () => { // Arrays of model types from different namespaces are also MergePatch-transformed, - // creating e.g. TagMergePatchUpdateReplaceOnly[] in TypeSpec.Http. + // creating e.g. TagMergePatchUpdateReplaceOnly[] in the service namespace. // The using directive for the original model's namespace should still be present. await compileAndValidateMultiple( tester, @@ -1420,7 +1416,7 @@ interface Widgets { [ "WidgetMergePatchUpdate.cs", [ - "namespace TypeSpec.Http {", + "namespace Microsoft.Contoso {", "using Microsoft.Contoso.Tags;", "public string Id { get; set; }", ], @@ -3399,3 +3395,30 @@ describe("collection type: defined as emitter option", () => { ); }); }); + +it("emits class for model extending another model with no additional properties", async () => { + await compileAndValidateMultiple( + tester, + ` + model Foo { + id: int32; + name: string; + } + + model Baz extends Foo {} + + @route("/foo/{id}") @get op getFoo(id: int32): Foo; + `, + [ + [ + "Foo.cs", + [ + "public partial class Foo", + "public int Id { get; set; }", + "public string Name { get; set; }", + ], + ], + ["Baz.cs", ["public partial class Baz : Foo"]], + ], + ); +}); diff --git a/packages/http-server-js/CHANGELOG.md b/packages/http-server-js/CHANGELOG.md index a87a0ff9442..d7c6f66cf05 100644 --- a/packages/http-server-js/CHANGELOG.md +++ b/packages/http-server-js/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog - @typespec/http-server-js +## 0.58.0-alpha.26 + +### Bug Fixes + +- [#10059](https://github.com/microsoft/typespec/pull/10059) fix: handle Enum type in JSON serialization transpose helpers to prevent crash when a model with an enum property requires a JSON serializer +- [#10058](https://github.com/microsoft/typespec/pull/10058) handle immediate scalar-typed and value-literal typed responses in result processing layer to prevent crash when an operation returns a bare scalar or value literal + + ## 0.58.0-alpha.25 ### Bump dependencies diff --git a/packages/http-server-js/build-helpers.ts b/packages/http-server-js/build-helpers.ts index 56118fdd23b..022e502bfb4 100644 --- a/packages/http-server-js/build-helpers.ts +++ b/packages/http-server-js/build-helpers.ts @@ -5,6 +5,7 @@ import fs from "node:fs/promises"; import path from "node:path"; +import { parse as parseYaml } from "yaml"; const GENERATED_DEFS = path.resolve("generated-defs"); @@ -23,16 +24,48 @@ async function* visitAllFiles(base: string): AsyncIterable { } } +async function loadPnpmCatalog(): Promise> { + const workspaceYamlPath = path.resolve("..", "..", "pnpm-workspace.yaml"); + const content = await fs.readFile(workspaceYamlPath, "utf-8"); + const parsed = parseYaml(content); + return parsed.catalog ?? {}; +} + +function resolveCatalogVersions( + dependencies: Record, + catalog: Record, +): Record { + const resolved: Record = {}; + for (const [name, version] of Object.entries(dependencies)) { + if (version === "catalog:" || version === "catalog:default") { + const catalogVersion = catalog[name]; + if (!catalogVersion) { + throw new Error( + `Dependency "${name}" uses catalog: but no version found in pnpm-workspace.yaml catalog`, + ); + } + resolved[name] = catalogVersion; + } else { + resolved[name] = version; + } + } + return resolved; +} + async function buildPackageJsonTs() { console.log("Building package.json.ts"); const packageJson = await fs.readFile(path.resolve("package.json"), "utf-8"); const parsed = JSON.parse(packageJson); - - const mergedDependencies: Record = { - ...parsed.devDependencies, - ...parsed.dependencies, - }; + const catalog = await loadPnpmCatalog(); + + const mergedDependencies: Record = resolveCatalogVersions( + { + ...parsed.devDependencies, + ...parsed.dependencies, + }, + catalog, + ); const fileText = [ "// Copyright (c) Microsoft Corporation", diff --git a/packages/http-server-js/generated-defs/package.json.ts b/packages/http-server-js/generated-defs/package.json.ts index a7a865432ca..70ae693d5c5 100644 --- a/packages/http-server-js/generated-defs/package.json.ts +++ b/packages/http-server-js/generated-defs/package.json.ts @@ -5,8 +5,8 @@ export const hsjsDependencies: Record = { "@types/express": "^5.0.6", - "@types/morgan": "^1.9.9", - "@types/node": "~25.3.0", + "@types/morgan": "^1.9.10", + "@types/node": "~25.5.0", "@types/swagger-ui-express": "^4.1.8", "@typespec/compiler": "workspace:^", "@typespec/http": "workspace:^", @@ -15,24 +15,24 @@ export const hsjsDependencies: Record = { "@typespec/openapi3": "workspace:^", "@typespec/spector": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "decimal.js": "^10.5.0", + "@vitest/coverage-v8": "^4.1.0", + "@vitest/ui": "^4.1.0", + "decimal.js": "^10.6.0", "express": "^5.2.1", - "fs-extra": "^11.2.0", - "globby": "~16.1.0", - "inquirer": "^13.1.0", - "morgan": "^1.10.0", - "ora": "^9.0.0", - "p-limit": "^7.1.1", + "fs-extra": "^11.3.4", + "globby": "~16.1.1", + "inquirer": "^13.3.0", + "morgan": "^1.10.1", + "ora": "^9.3.0", + "p-limit": "^7.3.0", "pathe": "^2.0.3", "picocolors": "~1.1.1", "swagger-ui-express": "^5.0.1", - "temporal-polyfill": "^0.3.0", + "temporal-polyfill": "^0.3.2", "tsx": "^4.21.0", "typescript": "~5.9.3", - "vitest": "^4.0.18", + "vitest": "^4.1.0", "yargs": "~18.0.0", - "prettier": "~3.8.0", + "prettier": "~3.8.1", "yaml": "~2.8.2", }; diff --git a/packages/http-server-js/package.json b/packages/http-server-js/package.json index 7ff6a12b681..69e8d391709 100644 --- a/packages/http-server-js/package.json +++ b/packages/http-server-js/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/http-server-js", - "version": "0.58.0-alpha.25", + "version": "0.58.0-alpha.26", "author": "Microsoft Corporation", "description": "TypeSpec HTTP server code generator for JavaScript", "homepage": "https://github.com/microsoft/typespec", @@ -59,14 +59,14 @@ } }, "dependencies": { - "prettier": "~3.8.0", - "yaml": "~2.8.2" + "prettier": "catalog:", + "yaml": "catalog:" }, "devDependencies": { - "@types/express": "^5.0.6", - "@types/morgan": "^1.9.9", - "@types/node": "~25.3.0", - "@types/swagger-ui-express": "^4.1.8", + "@types/express": "catalog:", + "@types/morgan": "catalog:", + "@types/node": "catalog:", + "@types/swagger-ui-express": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/http": "workspace:^", "@typespec/http-specs": "workspace:^", @@ -74,23 +74,23 @@ "@typespec/openapi3": "workspace:^", "@typespec/spector": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "decimal.js": "^10.5.0", - "express": "^5.2.1", - "fs-extra": "^11.2.0", - "globby": "~16.1.0", - "inquirer": "^13.1.0", - "morgan": "^1.10.0", - "ora": "^9.0.0", - "p-limit": "^7.1.1", - "pathe": "^2.0.3", - "picocolors": "~1.1.1", - "swagger-ui-express": "^5.0.1", - "temporal-polyfill": "^0.3.0", - "tsx": "^4.21.0", - "typescript": "~5.9.3", - "vitest": "^4.0.18", - "yargs": "~18.0.0" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "decimal.js": "catalog:", + "express": "catalog:", + "fs-extra": "catalog:", + "globby": "catalog:", + "inquirer": "catalog:", + "morgan": "catalog:", + "ora": "catalog:", + "p-limit": "catalog:", + "pathe": "catalog:", + "picocolors": "catalog:", + "swagger-ui-express": "catalog:", + "temporal-polyfill": "catalog:", + "tsx": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:", + "yargs": "catalog:" } } diff --git a/packages/http-server-js/src/common/serialization/json.ts b/packages/http-server-js/src/common/serialization/json.ts index 51f1d852012..d8a7862c29a 100644 --- a/packages/http-server-js/src/common/serialization/json.ts +++ b/packages/http-server-js/src/common/serialization/json.ts @@ -294,6 +294,8 @@ export function transposeExpressionToJson( } case "ModelProperty": return transposeExpressionToJson(ctx, type.type, expr, module); + case "Enum": + return expr; case "Intrinsic": switch (type.name) { case "void": @@ -537,6 +539,8 @@ export function transposeExpressionFromJson( } case "ModelProperty": return transposeExpressionFromJson(ctx, type.type, expr, module); + case "Enum": + return expr; case "Intrinsic": switch (type.name) { case "ErrorType": @@ -558,7 +562,6 @@ export function transposeExpressionFromJson( case "Boolean": return literalToExpr(type); case "Interface": - case "Enum": case "EnumMember": case "TemplateParameter": case "Namespace": diff --git a/packages/http-server-js/src/http/server/index.ts b/packages/http-server-js/src/http/server/index.ts index a2e1154f8b5..9eca8ed4316 100644 --- a/packages/http-server-js/src/http/server/index.ts +++ b/packages/http-server-js/src/http/server/index.ts @@ -580,6 +580,25 @@ function* emitResultProcessingForType( } } + if (target.kind === "Scalar" || isValueLiteralType(target)) { + const serializationRequired = + target.kind === "Scalar" && isSerializationRequired(ctx, module, target, "application/json"); + + if (target.kind === "Scalar") { + requireSerialization(ctx, target, "application/json"); + } + + yield `${names.ctx}.response.setHeader("content-type", "application/json");`; + + if (serializationRequired) { + yield `${names.ctx}.response.end(globalThis.JSON.stringify(${transposeExpressionToJson(ctx, target, names.result, module)}));`; + } else { + yield `${names.ctx}.response.end(globalThis.JSON.stringify(${names.result}));`; + } + + return; + } + if (target.kind !== "Model") { throw new UnimplementedError(`result processing for type kind '${target.kind}'`); } diff --git a/packages/http-server-js/test/json-serialization.test.ts b/packages/http-server-js/test/json-serialization.test.ts new file mode 100644 index 00000000000..a27567129da --- /dev/null +++ b/packages/http-server-js/test/json-serialization.test.ts @@ -0,0 +1,118 @@ +import { Model, ModelProperty } from "@typespec/compiler"; +import { BasicTestRunner, createTestRunner } from "@typespec/compiler/testing"; +import { deepStrictEqual, ok, strictEqual } from "assert"; +import { beforeEach, describe, it } from "vitest"; +import { + emitJsonSerialization, + requiresJsonSerialization, +} from "../src/common/serialization/json.js"; +import { createInitialContext } from "../src/ctx.js"; +import { JsEmitterOptions } from "../src/lib.js"; +import { objectLiteralProperty, parseCase } from "../src/util/case.js"; +import { keywordSafe } from "../src/util/keywords.js"; + +describe("json serialization", () => { + let runner: BasicTestRunner; + + const defaultOptions: JsEmitterOptions = { + express: false, + "no-format": false, + "omit-unreachable-types": false, + }; + + beforeEach(async () => { + runner = await createTestRunner(); + }); + + async function getModels() { + const compiled = (await runner.compile(` + @service(#{ title: "Test" }) + namespace Test; + + enum MyEnum { + A, + B, + } + + model KeywordModel { + type: MyEnum; + } + + model RenamedModel { + wire_type: MyEnum; + } + + model TestModels { + @test keyword: KeywordModel; + @test renamed: RenamedModel; + } + `)) as { + keyword: ModelProperty; + renamed: ModelProperty; + }; + + if (compiled.keyword.type.kind !== "Model" || compiled.renamed.type.kind !== "Model") { + throw new Error("Expected @test properties to reference models."); + } + + const ctx = await createInitialContext(runner.program, defaultOptions); + + if (!ctx) { + throw new Error("Expected emitter context."); + } + + return { + ctx, + keywordModel: compiled.keyword.type, + renamedModel: compiled.renamed.type, + }; + } + + function emitModelSerialization( + ctx: NonNullable>>, + model: Model, + ) { + const module = ctx.globalNamespaceModule; + return [...emitJsonSerialization(ctx, model, module, model.name)]; + } + + function getGeneratedPropertyName(name: string): string { + return keywordSafe(parseCase(name).camelCase); + } + + it("serializes enum properties when a keyword-safe property name forces model serialization", async () => { + const { ctx, keywordModel } = await getModels(); + + strictEqual(requiresJsonSerialization(ctx, ctx.globalNamespaceModule, keywordModel), true); + + const lines = emitModelSerialization(ctx, keywordModel); + + ok( + lines.includes( + ` ${objectLiteralProperty("type")}: input.${getGeneratedPropertyName("type")},`, + ), + ); + ok(lines.includes(` ${getGeneratedPropertyName("type")}: input.type,`)); + }); + + it("serializes enum properties when a renamed property forces model serialization", async () => { + const { ctx, renamedModel } = await getModels(); + + strictEqual(requiresJsonSerialization(ctx, ctx.globalNamespaceModule, renamedModel), true); + + const lines = emitModelSerialization(ctx, renamedModel); + + deepStrictEqual(lines, [ + "toJsonObject(input: RenamedModel): any {", + " return {", + ` ${objectLiteralProperty("wire_type")}: input.${getGeneratedPropertyName("wire_type")},`, + " };", + "},", + "fromJsonObject(input: any): RenamedModel {", + " return {", + ` ${getGeneratedPropertyName("wire_type")}: input.wire_type,`, + " };", + "},", + ]); + }); +}); diff --git a/packages/http-server-js/test/scalar.test.ts b/packages/http-server-js/test/scalar.test.ts index 274cd5cb3cd..b3c786dadf6 100644 --- a/packages/http-server-js/test/scalar.test.ts +++ b/packages/http-server-js/test/scalar.test.ts @@ -1,15 +1,22 @@ -import { ModelProperty, NoTarget, Scalar } from "@typespec/compiler"; -import { BasicTestRunner, createTestRunner } from "@typespec/compiler/testing"; +import { ModelProperty, NoTarget, Scalar, resolvePath } from "@typespec/compiler"; +import { BasicTestRunner, createTestRunner, createTester } from "@typespec/compiler/testing"; import { deepStrictEqual, strictEqual } from "assert"; -import { beforeEach, describe, it } from "vitest"; +import { beforeEach, describe, expect, it } from "vitest"; import { getJsScalar } from "../src/common/scalar.js"; -import { createPathCursor, JsContext, Module } from "../src/ctx.js"; +import { JsContext, Module, createPathCursor } from "../src/ctx.js"; import { module as dateTimeModule } from "../generated-defs/helpers/datetime.js"; import { module as temporalHelpersModule } from "../generated-defs/helpers/temporal/native.js"; import { module as temporalPolyfillHelpersModule } from "../generated-defs/helpers/temporal/polyfill.js"; import { JsEmitterOptions } from "../src/lib.js"; +const HttpServerEmitterTester = createTester(resolvePath(import.meta.dirname, ".."), { + libraries: ["@typespec/http", "@typespec/http-server-js"], +}) + .import("@typespec/http") + .using("Http") + .emit("@typespec/http-server-js"); + describe("scalar", () => { let runner: BasicTestRunner; @@ -186,6 +193,22 @@ describe("scalar", () => { ); }); + it("emits result processing for bare scalar responses", async () => { + const { outputs } = await HttpServerEmitterTester.compile(` + @service(#{ title: "Example" }) + @route("/") + namespace Example { + @get op read(): string; + } + `); + + const serverRaw = outputs["src/generated/http/operations/server-raw.ts"]; + + expect(serverRaw).toBeDefined(); + expect(serverRaw).toContain('response.setHeader("content-type", "application/json");'); + expect(serverRaw).toMatch(/response\.end\(globalThis\.JSON\.stringify\(__result_\d+\)\);/); + }); + describe("date/time/duration types", () => { describe("mode: temporal", () => { const options: JsEmitterOptions = { diff --git a/packages/http-specs/CHANGELOG.md b/packages/http-specs/CHANGELOG.md index 1c1e4209686..7190f2a59f4 100644 --- a/packages/http-specs/CHANGELOG.md +++ b/packages/http-specs/CHANGELOG.md @@ -1,5 +1,31 @@ # @typespec/http-specs +## 0.1.0-alpha.36 + +### Features + +- [#10011](https://github.com/microsoft/typespec/pull/10011) Add matcher framework for flexible value comparison in scenarios. `match.dateTime()` enables semantic datetime comparison that handles precision and timezone differences across languages. + + +## 0.1.0-alpha.35 + +### Features + +- Added new scenario for next link based pagination where the initial verb is not GET +- Add missing scenarios for xml handling + +### Bug Fixes + +- Accept both `2022-08-26T18:38:00.000Z` and `2022-08-26T18:38:00Z` as valid RFC3339 UTC datetime forms in the `ModelWithDatetime` XML scenario. + + +## 0.1.0-alpha.34 + +### Bug Fixes + +- [#9953](https://github.com/microsoft/typespec/pull/9953) Fix response type of putExtensibleStringValue to include explicit content-type header + + ## 0.1.0-alpha.33 ### Features diff --git a/packages/http-specs/package.json b/packages/http-specs/package.json index eb27534ed83..5f1b1f0d59b 100644 --- a/packages/http-specs/package.json +++ b/packages/http-specs/package.json @@ -1,7 +1,7 @@ { "name": "@typespec/http-specs", "displayName": "Http Specs", - "version": "0.1.0-alpha.33", + "version": "0.1.0-alpha.36", "description": "Spec scenarios and mock apis", "main": "dist/index.js", "type": "module", @@ -19,7 +19,7 @@ "upload-coverage": "tsp-spector upload-coverage --generatorName @typespec/http-specs --generatorVersion 0.1.0-alpha.4 --containerName coverages --generatorMode standard --storageAccountName typespec", "validate-mock-apis": "tsp-spector validate-mock-apis ./specs", "check-scenario-coverage": "tsp-spector check-coverage ./specs", - "validate-client-server": "concurrently \"tsp-spector server start ./specs\" \"pnpm knock\"; tsp-spector server stop", + "validate-client-server": "concurrently \"tsp-spector server start ./specs\" \"pnpm knock\"; code=$?; tsp-spector server stop; exit $code", "build:smoke": "tsp compile smoke/petstore --warn-as-error --no-emit && tsp compile smoke/todoapp --warn-as-error --no-emit", "client": "pnpm knock", "knock": "tsp-spector knock ./specs", @@ -45,18 +45,18 @@ "dependencies": { "@typespec/spec-api": "workspace:^", "@typespec/spector": "workspace:^", - "deep-equal": "^2.2.0" + "deep-equal": "catalog:" }, "devDependencies": { - "@types/deep-equal": "^1.0.1", - "@types/multer": "^2.0.0", - "@types/node": "~25.3.0", + "@types/deep-equal": "catalog:", + "@types/multer": "catalog:", + "@types/node": "catalog:", "@typespec/json-schema": "workspace:^", "@typespec/openapi": "workspace:^", "@typespec/openapi3": "workspace:^", - "concurrently": "^9.1.2", - "rimraf": "~6.1.3", - "typescript": "~5.9.3" + "concurrently": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:" }, "peerDependencies": { "@typespec/compiler": "workspace:^", diff --git a/packages/http-specs/spec-summary.md b/packages/http-specs/spec-summary.md index c68a503c558..bfcb5001593 100644 --- a/packages/http-specs/spec-summary.md +++ b/packages/http-specs/spec-summary.md @@ -2509,6 +2509,48 @@ Expected response body: } ``` +### Payload_Pageable_ServerDrivenPagination_AlternateInitialVerb_post + +- Endpoint: `post /payload/pageable/server-driven-pagination/link/initial-post` + +Test case for initial POST request followed by GET for next pages using link pagination. +The initial request is a POST with a filter body, and the next page is fetched using a GET request on the next link. + +Two requests need to be tested. + +1. Initial request (POST): + Expected route: /payload/pageable/server-driven-pagination/link/initial-post + Expected request body: + +```json +{ "filter": "foo eq bar" } +``` + +Expected response body: + +```json +{ + "pets": [ + { "id": "1", "name": "dog" }, + { "id": "2", "name": "cat" } + ], + "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/link/initial-post/nextPage?token=abc" +} +``` + +2. Next page request (GET): + Expected route: /payload/pageable/server-driven-pagination/link/initial-post/nextPage?token=abc + Expected response body: + +```json +{ + "pets": [ + { "id": "3", "name": "bird" }, + { "id": "4", "name": "fish" } + ] +} +``` + ### Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestHeaderNestedResponseBody - Endpoint: `get /payload/pageable/server-driven-pagination/continuationtoken/request-header-nested-response-body` @@ -3207,6 +3249,90 @@ Expected request body:
``` +### Payload_Xml_ModelWithNamespaceOnPropertiesValue_get + +- Endpoint: `get /payload/xml/modelWithNamespaceOnProperties` + +Expected response body: + +```xml + + 123 + The Great Gatsby + F. Scott Fitzgerald + +``` + +### Payload_Xml_ModelWithNamespaceOnPropertiesValue_put + +- Endpoint: `put /payload/xml/modelWithNamespaceOnProperties` + +Expected request body: + +```xml + + 123 + The Great Gatsby + F. Scott Fitzgerald + +``` + +### Payload_Xml_ModelWithNamespaceValue_get + +- Endpoint: `get /payload/xml/modelWithNamespace` + +Expected response body: + +```xml + + 123 + The Great Gatsby + +``` + +### Payload_Xml_ModelWithNamespaceValue_put + +- Endpoint: `put /payload/xml/modelWithNamespace` + +Expected request body: + +```xml + + 123 + The Great Gatsby + +``` + +### Payload_Xml_ModelWithNestedModelValue_get + +- Endpoint: `get /payload/xml/modelWithNestedModel` + +Expected response body: + +```xml + + + foo + 123 + + +``` + +### Payload_Xml_ModelWithNestedModelValue_put + +- Endpoint: `put /payload/xml/modelWithNestedModel` + +Expected request body: + +```xml + + + foo + 123 + + +``` + ### Payload_Xml_ModelWithOptionalFieldValue_get - Endpoint: `get /payload/xml/modelWithOptionalField` @@ -3267,6 +3393,32 @@ Expected request body:
``` +### Payload_Xml_ModelWithRenamedAttributeValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedAttribute` + +Expected response body: + +```xml + + The Great Gatsby + F. Scott Fitzgerald + +``` + +### Payload_Xml_ModelWithRenamedAttributeValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedAttribute` + +Expected request body: + +```xml + + The Great Gatsby + F. Scott Fitzgerald + +``` + ### Payload_Xml_ModelWithRenamedFieldsValue_get - Endpoint: `get /payload/xml/modelWithRenamedFields` @@ -3305,6 +3457,178 @@ Expected request body: ``` +### Payload_Xml_ModelWithRenamedNestedModelValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedNestedModel` + +Expected response body: + +```xml + + + foo + + +``` + +### Payload_Xml_ModelWithRenamedNestedModelValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedNestedModel` + +Expected request body: + +```xml + + + foo + + +``` + +### Payload_Xml_ModelWithRenamedPropertyValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedProperty` + +Expected response body: + +```xml + + foo + bar + +``` + +### Payload_Xml_ModelWithRenamedPropertyValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedProperty` + +Expected request body: + +```xml + + foo + bar + +``` + +### Payload_Xml_ModelWithRenamedUnwrappedModelArrayValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedUnwrappedModelArray` + +Expected response body: + +```xml + + + foo + 123 + + + bar + 456 + + +``` + +### Payload_Xml_ModelWithRenamedUnwrappedModelArrayValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedUnwrappedModelArray` + +Expected request body: + +```xml + + + foo + 123 + + + bar + 456 + + +``` + +### Payload_Xml_ModelWithRenamedWrappedAndItemModelArrayValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedWrappedAndItemModelArray` + +Expected response body: + +```xml + + + + The Great Gatsby + + + Les Miserables + + + +``` + +### Payload_Xml_ModelWithRenamedWrappedAndItemModelArrayValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedWrappedAndItemModelArray` + +Expected request body: + +```xml + + + + The Great Gatsby + + + Les Miserables + + + +``` + +### Payload_Xml_ModelWithRenamedWrappedModelArrayValue_get + +- Endpoint: `get /payload/xml/modelWithRenamedWrappedModelArray` + +Expected response body: + +```xml + + + + foo + 123 + + + bar + 456 + + + +``` + +### Payload_Xml_ModelWithRenamedWrappedModelArrayValue_put + +- Endpoint: `put /payload/xml/modelWithRenamedWrappedModelArray` + +Expected request body: + +```xml + + + + foo + 123 + + + bar + 456 + + + +``` + ### Payload_Xml_ModelWithSimpleArraysValue_get - Endpoint: `get /payload/xml/modelWithSimpleArrays` @@ -3405,6 +3729,74 @@ Expected request body: ``` +### Payload_Xml_ModelWithUnwrappedModelArrayValue_get + +- Endpoint: `get /payload/xml/modelWithUnwrappedModelArray` + +Expected response body: + +```xml + + + foo + 123 + + + bar + 456 + + +``` + +### Payload_Xml_ModelWithUnwrappedModelArrayValue_put + +- Endpoint: `put /payload/xml/modelWithUnwrappedModelArray` + +Expected request body: + +```xml + + + foo + 123 + + + bar + 456 + + +``` + +### Payload_Xml_ModelWithWrappedPrimitiveCustomItemNamesValue_get + +- Endpoint: `get /payload/xml/modelWithWrappedPrimitiveCustomItemNames` + +Expected response body: + +```xml + + + fiction + classic + + +``` + +### Payload_Xml_ModelWithWrappedPrimitiveCustomItemNamesValue_put + +- Endpoint: `put /payload/xml/modelWithWrappedPrimitiveCustomItemNames` + +Expected request body: + +```xml + + + fiction + classic + + +``` + ### Payload_Xml_SimpleModelValue_get - Endpoint: `get /payload/xml/simpleModel` diff --git a/packages/http-specs/specs/encode/datetime/mockapi.ts b/packages/http-specs/specs/encode/datetime/mockapi.ts index 00d21397026..96f1d2e5c08 100644 --- a/packages/http-specs/specs/encode/datetime/mockapi.ts +++ b/packages/http-specs/specs/encode/datetime/mockapi.ts @@ -1,244 +1,149 @@ -import { - CollectionFormat, - json, - MockRequest, - passOnSuccess, - ScenarioMockApi, - validateValueFormat, - ValidationError, -} from "@typespec/spec-api"; +import { json, match, MockRequest, passOnSuccess, ScenarioMockApi } from "@typespec/spec-api"; export const Scenarios: Record = {}; function createQueryServerTests( uri: string, - paramData: any, - format: "rfc7231" | "rfc3339" | undefined, value: any, - collectionFormat?: CollectionFormat, + format: "rfc7231" | "rfc3339" | "utcRfc3339" | undefined, ) { return passOnSuccess({ uri, method: "get", request: { - query: paramData, + query: { value: format ? match.dateTime[format](value) : value }, }, response: { status: 204, }, - handler(req: MockRequest) { - if (format) { - validateValueFormat(req.query["value"] as string, format); - if (Date.parse(req.query["value"] as string) !== Date.parse(value)) { - throw new ValidationError(`Wrong value`, value, req.query["value"]); - } - } else { - req.expect.containsQueryParam("value", value, collectionFormat); - } - return { - status: 204, - }; - }, kind: "MockApiDefinition", }); } Scenarios.Encode_Datetime_Query_default = createQueryServerTests( "/encode/datetime/query/default", - { - value: "2022-08-26T18:38:00.000Z", - }, - "rfc3339", "2022-08-26T18:38:00.000Z", + "utcRfc3339", ); Scenarios.Encode_Datetime_Query_rfc3339 = createQueryServerTests( "/encode/datetime/query/rfc3339", - { - value: "2022-08-26T18:38:00.000Z", - }, - "rfc3339", "2022-08-26T18:38:00.000Z", + "utcRfc3339", ); Scenarios.Encode_Datetime_Query_rfc7231 = createQueryServerTests( "/encode/datetime/query/rfc7231", - { - value: "Fri, 26 Aug 2022 14:38:00 GMT", - }, - "rfc7231", "Fri, 26 Aug 2022 14:38:00 GMT", + "rfc7231", ); Scenarios.Encode_Datetime_Query_unixTimestamp = createQueryServerTests( "/encode/datetime/query/unix-timestamp", - { - value: 1686566864, - }, - undefined, "1686566864", + undefined, ); Scenarios.Encode_Datetime_Query_unixTimestampArray = createQueryServerTests( "/encode/datetime/query/unix-timestamp-array", - { - value: [1686566864, 1686734256].join(","), - }, + [1686566864, 1686734256].join(","), undefined, - ["1686566864", "1686734256"], - "csv", ); function createPropertyServerTests( uri: string, - data: any, - format: "rfc7231" | "rfc3339" | undefined, value: any, + format: "rfc7231" | "rfc3339" | "utcRfc3339" | undefined, ) { + const matcherBody = { value: format ? match.dateTime[format](value) : value }; return passOnSuccess({ uri, method: "post", request: { - body: json(data), + body: json(matcherBody), }, response: { status: 200, - }, - handler: (req: MockRequest) => { - if (format) { - validateValueFormat(req.body["value"], format); - if (Date.parse(req.body["value"]) !== Date.parse(value)) { - throw new ValidationError(`Wrong value`, value, req.body["value"]); - } - } else { - req.expect.coercedBodyEquals({ value: value }); - } - return { - status: 200, - body: json({ value: value }), - }; + body: json(matcherBody), }, kind: "MockApiDefinition", }); } Scenarios.Encode_Datetime_Property_default = createPropertyServerTests( "/encode/datetime/property/default", - { - value: "2022-08-26T18:38:00.000Z", - }, - "rfc3339", "2022-08-26T18:38:00.000Z", + "utcRfc3339", ); Scenarios.Encode_Datetime_Property_rfc3339 = createPropertyServerTests( "/encode/datetime/property/rfc3339", - { - value: "2022-08-26T18:38:00.000Z", - }, - "rfc3339", "2022-08-26T18:38:00.000Z", + "utcRfc3339", ); Scenarios.Encode_Datetime_Property_rfc7231 = createPropertyServerTests( "/encode/datetime/property/rfc7231", - { - value: "Fri, 26 Aug 2022 14:38:00 GMT", - }, - "rfc7231", "Fri, 26 Aug 2022 14:38:00 GMT", + "rfc7231", ); Scenarios.Encode_Datetime_Property_unixTimestamp = createPropertyServerTests( "/encode/datetime/property/unix-timestamp", - { - value: 1686566864, - }, - undefined, 1686566864, + undefined, ); Scenarios.Encode_Datetime_Property_unixTimestampArray = createPropertyServerTests( "/encode/datetime/property/unix-timestamp-array", - { - value: [1686566864, 1686734256], - }, - undefined, [1686566864, 1686734256], + undefined, ); function createHeaderServerTests( uri: string, - data: any, - format: "rfc7231" | "rfc3339" | undefined, value: any, + format: "rfc7231" | "rfc3339" | "utcRfc3339" | undefined, ) { + const matcherHeaders = { value: format ? match.dateTime[format](value) : value }; return passOnSuccess({ uri, method: "get", request: { - headers: data, + headers: matcherHeaders, }, response: { status: 204, }, - handler(req: MockRequest) { - if (format) { - validateValueFormat(req.headers["value"], format); - if (Date.parse(req.headers["value"]) !== Date.parse(value)) { - throw new ValidationError(`Wrong value`, value, req.headers["value"]); - } - } else { - req.expect.containsHeader("value", value); - } - return { - status: 204, - }; - }, kind: "MockApiDefinition", }); } Scenarios.Encode_Datetime_Header_default = createHeaderServerTests( "/encode/datetime/header/default", - { - value: "Fri, 26 Aug 2022 14:38:00 GMT", - }, - "rfc7231", "Fri, 26 Aug 2022 14:38:00 GMT", + "rfc7231", ); Scenarios.Encode_Datetime_Header_rfc3339 = createHeaderServerTests( "/encode/datetime/header/rfc3339", - { - value: "2022-08-26T18:38:00.000Z", - }, - "rfc3339", "2022-08-26T18:38:00.000Z", + "utcRfc3339", ); Scenarios.Encode_Datetime_Header_rfc7231 = createHeaderServerTests( "/encode/datetime/header/rfc7231", - { - value: "Fri, 26 Aug 2022 14:38:00 GMT", - }, - "rfc7231", "Fri, 26 Aug 2022 14:38:00 GMT", + "rfc7231", ); Scenarios.Encode_Datetime_Header_unixTimestamp = createHeaderServerTests( "/encode/datetime/header/unix-timestamp", - { - value: 1686566864, - }, + 1686566864, undefined, - "1686566864", ); Scenarios.Encode_Datetime_Header_unixTimestampArray = createHeaderServerTests( "/encode/datetime/header/unix-timestamp-array", - { - value: [1686566864, 1686734256].join(","), - }, + [1686566864, 1686734256].join(","), undefined, - "1686566864,1686734256", ); -function createResponseHeaderServerTests(uri: string, data: any, value: any) { +function createResponseHeaderServerTests(uri: string, value: any) { return passOnSuccess({ uri, method: "get", request: {}, response: { status: 204, - headers: data, + headers: { value }, }, handler: (req: MockRequest) => { return { status: 204, - headers: { value: value }, + headers: { value }, }; }, kind: "MockApiDefinition", @@ -246,29 +151,17 @@ function createResponseHeaderServerTests(uri: string, data: any, value: any) { } Scenarios.Encode_Datetime_ResponseHeader_default = createResponseHeaderServerTests( "/encode/datetime/responseheader/default", - { - value: "Fri, 26 Aug 2022 14:38:00 GMT", - }, "Fri, 26 Aug 2022 14:38:00 GMT", ); Scenarios.Encode_Datetime_ResponseHeader_rfc3339 = createResponseHeaderServerTests( "/encode/datetime/responseheader/rfc3339", - { - value: "2022-08-26T18:38:00.000Z", - }, "2022-08-26T18:38:00.000Z", ); Scenarios.Encode_Datetime_ResponseHeader_rfc7231 = createResponseHeaderServerTests( "/encode/datetime/responseheader/rfc7231", - { - value: "Fri, 26 Aug 2022 14:38:00 GMT", - }, "Fri, 26 Aug 2022 14:38:00 GMT", ); Scenarios.Encode_Datetime_ResponseHeader_unixTimestamp = createResponseHeaderServerTests( "/encode/datetime/responseheader/unix-timestamp", - { - value: "1686566864", - }, - 1686566864, + "1686566864", ); diff --git a/packages/http-specs/specs/encode/duration/mockapi.ts b/packages/http-specs/specs/encode/duration/mockapi.ts index 6a722fff8ff..c74a77d300b 100644 --- a/packages/http-specs/specs/encode/duration/mockapi.ts +++ b/packages/http-specs/specs/encode/duration/mockapi.ts @@ -295,6 +295,11 @@ function createHeaderFloatServerTests(uri: string, value: number) { return passOnSuccess({ uri, method: "get", + request: { + headers: { + duration: String(value), + }, + }, response: { status: 204, }, diff --git a/packages/http-specs/specs/payload/multipart/mockapi.ts b/packages/http-specs/specs/payload/multipart/mockapi.ts index 3ac7dbda70a..ea54b460201 100644 --- a/packages/http-specs/specs/payload/multipart/mockapi.ts +++ b/packages/http-specs/specs/payload/multipart/mockapi.ts @@ -437,9 +437,11 @@ Scenarios.Payload_MultiPart_FormData_File_uploadFileSpecificContentType = passOn uri: "/multipart/form-data/file/specific-content-type", method: "post", request: { - headers: { - "content-type": "multipart/form-data", - }, + body: multipart({ + files: [ + { fieldname: "file", originalname: "image.png", buffer: pngFile, mimetype: "image/png" }, + ], + }), }, response: { status: 204, @@ -460,9 +462,11 @@ Scenarios.Payload_MultiPart_FormData_File_uploadFileRequiredFilename = passOnSuc uri: "/multipart/form-data/file/required-filename", method: "post", request: { - headers: { - "content-type": "multipart/form-data", - }, + body: multipart({ + files: [ + { fieldname: "file", originalname: "image.png", buffer: pngFile, mimetype: "image/png" }, + ], + }), }, response: { status: 204, @@ -483,9 +487,12 @@ Scenarios.Payload_MultiPart_FormData_File_uploadFileArray = passOnSuccess({ uri: "/multipart/form-data/file/file-array", method: "post", request: { - headers: { - "content-type": "multipart/form-data", - }, + body: multipart({ + files: [ + { fieldname: "files", originalname: "image.png", buffer: pngFile, mimetype: "image/png" }, + { fieldname: "files", originalname: "image.png", buffer: pngFile, mimetype: "image/png" }, + ], + }), }, response: { status: 204, diff --git a/packages/http-specs/specs/payload/pageable/main.tsp b/packages/http-specs/specs/payload/pageable/main.tsp index a717076947e..db89029037c 100644 --- a/packages/http-specs/specs/payload/pageable/main.tsp +++ b/packages/http-specs/specs/payload/pageable/main.tsp @@ -141,6 +141,53 @@ namespace ServerDrivenPagination { }; }; + /** Scenario where the initial request is not a GET request. However following the next link always result in a GET request. */ + namespace AlternateInitialVerb { + model Filter { + filter: string; + } + + @scenario + @scenarioDoc(""" + Test case for initial POST request followed by GET for next pages using link pagination. + The initial request is a POST with a filter body, and the next page is fetched using a GET request on the next link. + + Two requests need to be tested. + 1. Initial request (POST): + Expected route: /payload/pageable/server-driven-pagination/link/initial-post + Expected request body: + ```json + { "filter": "foo eq bar" } + ``` + Expected response body: + ```json + { "pets": [ + { "id": "1", "name": "dog" }, + { "id": "2", "name": "cat" } + ], + "next": "http://[host]:[port]/payload/pageable/server-driven-pagination/link/initial-post/nextPage?token=abc" + } + ``` + 2. Next page request (GET): + Expected route: /payload/pageable/server-driven-pagination/link/initial-post/nextPage?token=abc + Expected response body: + ```json + { "pets": [ + { "id": "3", "name": "bird" }, + { "id": "4", "name": "fish" } + ] + } + ``` + """) + @route("/link/initial-post") + @list + @post + op post(@body body: Filter): { + @pageItems pets: Pet[]; + @nextLink next?: url; + }; + } + @route("/continuationtoken") namespace ContinuationToken { @scenario diff --git a/packages/http-specs/specs/payload/pageable/mockapi.ts b/packages/http-specs/specs/payload/pageable/mockapi.ts index 3fdbf8c794e..4f42d66f41a 100644 --- a/packages/http-specs/specs/payload/pageable/mockapi.ts +++ b/packages/http-specs/specs/payload/pageable/mockapi.ts @@ -2,6 +2,7 @@ import { dyn, dynItem, json, + match, MockRequest, passOnSuccess, ScenarioMockApi, @@ -176,6 +177,34 @@ Scenarios.Payload_Pageable_ServerDrivenPagination_nestedLink = passOnSuccess([ }, ]); +// POST-THEN-GET LINK PAGINATION +Scenarios.Payload_Pageable_ServerDrivenPagination_AlternateInitialVerb_post = passOnSuccess([ + { + uri: "/payload/pageable/server-driven-pagination/link/initial-post", + method: "post", + request: { + body: json({ filter: "foo eq bar" }), + }, + response: { + status: 200, + body: json({ + pets: FirstPage, + next: dyn`${dynItem("baseUrl")}/payload/pageable/server-driven-pagination/link/initial-post/nextPage?token=abc`, + }), + }, + kind: "MockApiDefinition", + }, + { + uri: "/payload/pageable/server-driven-pagination/link/initial-post/nextPage", + method: "get", + request: { + query: { token: "abc" }, + }, + response: SecondResponse, + kind: "MockApiDefinition", + }, +]); + Scenarios.Payload_Pageable_ServerDrivenPagination_ContinuationToken_requestQueryResponseBody = createTests("query", "body"); @@ -553,7 +582,7 @@ Scenarios.Payload_Pageable_XmlPagination_listWithContinuation = passOnSuccess([ status: 200, body: xml(XmlContTokenFirstPage), headers: { - "content-type": "application/xml", + "content-type": "application/xml; charset=utf-8", }, }, handler: (req: MockRequest) => { @@ -590,7 +619,7 @@ Scenarios.Payload_Pageable_XmlPagination_listWithContinuation = passOnSuccess([ status: 200, body: xml(XmlContTokenSecondPage), headers: { - "content-type": "application/xml", + "content-type": "application/xml; charset=utf-8", }, }, handler: (req: MockRequest) => { @@ -621,22 +650,6 @@ Scenarios.Payload_Pageable_XmlPagination_listWithContinuation = passOnSuccess([ }, ]); -const xmlNextLinkFirstPage = (baseUrl: string) => ` - - - - 1 - dog - - - 2 - cat - - - ${baseUrl}/payload/pageable/xml/list-with-next-link/nextPage - -`; - const XmlNextLinkSecondPage = ` @@ -659,20 +672,25 @@ Scenarios.Payload_Pageable_XmlPagination_listWithNextLink = passOnSuccess([ request: {}, response: { status: 200, - body: xml(xmlNextLinkFirstPage("PLACEHOLDER_BASE_URL")), + body: xml` + + + + 1 + dog + + + 2 + cat + + + ${match.localUrl("/payload/pageable/xml/list-with-next-link/nextPage")} + +`, headers: { - "content-type": "application/xml", + "content-type": "application/xml; charset=utf-8", }, }, - handler: (req: MockRequest) => { - return { - status: 200, - body: xml(xmlNextLinkFirstPage(req.baseUrl)), - headers: { - "content-type": "application/xml", - }, - }; - }, kind: "MockApiDefinition", }, { @@ -683,7 +701,7 @@ Scenarios.Payload_Pageable_XmlPagination_listWithNextLink = passOnSuccess([ status: 200, body: xml(XmlNextLinkSecondPage), headers: { - "content-type": "application/xml", + "content-type": "application/xml; charset=utf-8", }, }, kind: "MockApiDefinition", diff --git a/packages/http-specs/specs/payload/xml/main.tsp b/packages/http-specs/specs/payload/xml/main.tsp index d768dfb2d2d..57a620adc8a 100644 --- a/packages/http-specs/specs/payload/xml/main.tsp +++ b/packages/http-specs/specs/payload/xml/main.tsp @@ -6,127 +6,27 @@ using Http; using Spector; using TypeSpec.Xml; -@doc("Sends and receives bodies in XML format.") +/** Sends and receives bodies in XML format. */ @scenarioService("/payload/xml") namespace Payload.Xml; -@doc("Contains fields of primitive types.") +// ──────────────────────────────────────────────────────────────────────────── +// Shared types +// ──────────────────────────────────────────────────────────────────────────── + +/** §1.1 — Contains fields of primitive types. */ model SimpleModel { name: string; age: int32; } -@doc("Contains fields of arrays of primitive types.") -model ModelWithSimpleArrays { - colors: string[]; - counts: int32[]; -} - -@doc("Contains an array of models.") -model ModelWithArrayOfModel { - items: SimpleModel[]; -} - -@doc("Contains an optional field.") -model ModelWithOptionalField { - item: string; - value?: int32; -} - -@doc("Contains fields that are XML attributes.") -model ModelWithAttributes { - @attribute id1: int32; - @attribute id2: string; - enabled: boolean; +@nsDeclarations +enum Namespaces { + smp: "http://example.com/schema", + ns2: "http://example.com/ns2", } -@doc("Contains fields of wrapped and unwrapped arrays of primitive types.") -model ModelWithUnwrappedArray { - @unwrapped colors: string[]; - counts: int32[]; -} - -@doc("Contains fields of wrapped and unwrapped arrays of primitive types that have different XML representations.") -model ModelWithRenamedArrays { - @name("Colors") @unwrapped colors: string[]; - @name("Counts") counts: int32[]; -} - -@doc("Contains fields of the same type that have different XML representation.") -@name("ModelWithRenamedFieldsSrc") -model ModelWithRenamedFields { - @name("InputData") inputData: SimpleModel; - @name("OutputData") outputData: SimpleModel; -} - -@doc("Contains an array of models that's supposed to be sent/received as an empty XML element.") -model ModelWithEmptyArray { - items: SimpleModel[]; -} - -@doc("Contains an attribute and text.") -model ModelWithText { - @attribute language: string; - @unwrapped content: string; -} - -@doc("Contains a dictionary of key value pairs.") -model ModelWithDictionary { - metadata: Record; -} - -@doc("Uses encodedName instead of Xml.Name which is functionally equivalent.") -@encodedName("application/xml", "ModelWithEncodedNamesSrc") -model ModelWithEncodedNames { - @encodedName("application/xml", "SimpleModelData") modelData: SimpleModel; - @encodedName("application/xml", "PossibleColors") colors: string[]; -} - -@doc("Status values for the model with enum.") -union Status { - string, - - @doc("Pending status.") - pending: "pending", - - @doc("Success status.") - success: "success", - - @doc("Error status.") - error: "error", -} - -@doc("Contains a single property with an enum value.") -model ModelWithEnum { - status: Status; -} - -@doc("Contains datetime properties with different encodings.") -model ModelWithDatetime { - @encode(DateTimeKnownEncoding.rfc3339) - @doc("DateTime value with rfc3339 encoding.") - rfc3339: utcDateTime; - - @encode(DateTimeKnownEncoding.rfc7231) - @doc("DateTime value with rfc7231 encoding.") - rfc7231: utcDateTime; -} - -@doc("An error response body in XML format.") -@error -model XmlError { - @statusCode _: 400; - @header("content-type") contentType: "application/xml"; - @body body: XmlErrorBody; -} - -@doc("The body of an XML error response.") -model XmlErrorBody { - message: string; - code: int32; -} - -@doc("Template for XML operations") +/** Template for XML operations */ interface XmlOperations { @scenario @scenarioDoc(""" @@ -152,7 +52,11 @@ interface XmlOperations { put(@header("content-type") contentType: "application/xml", @body input: TModel): void; } -@doc("Operations for the SimpleModel type.") +// ──────────────────────────────────────────────────────────────────────────── +// §1 — Primitive properties +// ──────────────────────────────────────────────────────────────────────────── + +/** §1.1 — Operations for the SimpleModel type. */ @route("/simpleModel") interface SimpleModelValue extends XmlOperations< @@ -165,7 +69,113 @@ interface SimpleModelValue """ > {} -@doc("Operations for the ModelWithSimpleArrays type.") +/** §1.2 — Contains a scalar property with a custom XML name. */ +model ModelWithRenamedProperty { + @name("renamedTitle") + title: string; + + author: string; +} + +/** §1.2 — Operations for the ModelWithRenamedProperty type. */ +@route("/modelWithRenamedProperty") +interface ModelWithRenamedPropertyValue + extends XmlOperations< + ModelWithRenamedProperty, + """ + + foo + bar + + """ + > {} + +/** §1.3, §2.3 — Contains fields of the same type that have different XML representation. */ +@name("ModelWithRenamedFieldsSrc") +model ModelWithRenamedFields { + @name("InputData") inputData: SimpleModel; + @name("OutputData") outputData: SimpleModel; +} + +/** §1.3, §2.3 — Operations for the ModelWithRenamedFields type. */ +@route("/modelWithRenamedFields") +interface ModelWithRenamedFieldsValue + extends XmlOperations< + ModelWithRenamedFields, + """ + + + foo + 123 + + + bar + 456 + + + """ + > {} + +// ──────────────────────────────────────────────────────────────────────────── +// §2 — Nested models +// ──────────────────────────────────────────────────────────────────────────── + +/** §2.1 — Contains a property that references another model. */ +model ModelWithNestedModel { + nested: SimpleModel; +} + +/** §2.1 — Operations for the ModelWithNestedModel type. */ +@route("/modelWithNestedModel") +interface ModelWithNestedModelValue + extends XmlOperations< + ModelWithNestedModel, + """ + + + foo + 123 + + + """ + > {} + +/** Author model with a custom XML name. */ +@name("XmlAuthor") +model Author { + name: string; +} + +/** §2.2 — Contains a property whose type has @Xml.name. The property name takes precedence. */ +model ModelWithRenamedNestedModel { + author: Author; +} + +/** §2.2 — Operations for the ModelWithRenamedNestedModel type. */ +@route("/modelWithRenamedNestedModel") +interface ModelWithRenamedNestedModelValue + extends XmlOperations< + ModelWithRenamedNestedModel, + """ + + + foo + + + """ + > {} + +// ──────────────────────────────────────────────────────────────────────────── +// §3 — Array of primitive types +// ──────────────────────────────────────────────────────────────────────────── + +/** §3.1 — Contains fields of arrays of primitive types. */ +model ModelWithSimpleArrays { + colors: string[]; + counts: int32[]; +} + +/** §3.1 — Operations for the ModelWithSimpleArrays type. */ @route("/modelWithSimpleArrays") interface ModelWithSimpleArraysValue extends XmlOperations< @@ -185,7 +195,89 @@ interface ModelWithSimpleArraysValue """ > {} -@doc("Operations for the ModelWithArrayOfModel type.") +/** §3.2 — Contains fields of wrapped and unwrapped arrays of primitive types. */ +model ModelWithUnwrappedArray { + @unwrapped colors: string[]; + counts: int32[]; +} + +/** §3.2 — Operations for the ModelWithUnwrappedArray type. */ +@route("/modelWithUnwrappedArray") +interface ModelWithUnwrappedArrayValue + extends XmlOperations< + ModelWithUnwrappedArray, + """ + + red + green + blue + + 1 + 2 + + + """ + > {} + +/** §3.3, §3.4 — Contains fields of wrapped and unwrapped arrays of primitive types that have different XML representations. */ +model ModelWithRenamedArrays { + @name("Colors") @unwrapped colors: string[]; + @name("Counts") counts: int32[]; +} + +/** §3.3, §3.4 — Operations for the ModelWithRenamedArrays type. */ +@route("/modelWithRenamedArrays") +interface ModelWithRenamedArraysValue + extends XmlOperations< + ModelWithRenamedArrays, + """ + + red + green + blue + + 1 + 2 + + + """ + > {} + +/** Custom scalar with a custom XML item name. */ +@name("ItemName") +scalar tag extends string; + +/** §3.5 — Contains a wrapped primitive array with custom wrapper and item names. */ +model ModelWithWrappedPrimitiveCustomItemNames { + @name("ItemsTags") + tags: tag[]; +} + +/** §3.5 — Operations for the ModelWithWrappedPrimitiveCustomItemNames type. */ +@route("/modelWithWrappedPrimitiveCustomItemNames") +interface ModelWithWrappedPrimitiveCustomItemNamesValue + extends XmlOperations< + ModelWithWrappedPrimitiveCustomItemNames, + """ + + + fiction + classic + + + """ + > {} + +// ──────────────────────────────────────────────────────────────────────────── +// §4 — Array of complex types +// ──────────────────────────────────────────────────────────────────────────── + +/** §4.1 — Contains an array of models. */ +model ModelWithArrayOfModel { + items: SimpleModel[]; +} + +/** §4.1 — Operations for the ModelWithArrayOfModel type. */ @route("/modelWithArrayOfModel") interface ModelWithArrayOfModelValue extends XmlOperations< @@ -206,19 +298,127 @@ interface ModelWithArrayOfModelValue """ > {} -@doc("Operations for the ModelWithOptionalField type.") -@route("/modelWithOptionalField") -interface ModelWithOptionalFieldValue +/** §4.2 — Contains an unwrapped array of models. */ +model ModelWithUnwrappedModelArray { + @unwrapped + items: SimpleModel[]; +} + +/** §4.2 — Operations for the ModelWithUnwrappedModelArray type. */ +@route("/modelWithUnwrappedModelArray") +interface ModelWithUnwrappedModelArrayValue extends XmlOperations< - ModelWithOptionalField, + ModelWithUnwrappedModelArray, """ - - widget - + + + foo + 123 + + + bar + 456 + + """ > {} -@doc("Operations for the ModelWithAttributes type.") +/** §4.3 — Contains a wrapped array of models with a custom wrapper name. */ +model ModelWithRenamedWrappedModelArray { + @name("AllItems") + items: SimpleModel[]; +} + +/** §4.3 — Operations for the ModelWithRenamedWrappedModelArray type. */ +@route("/modelWithRenamedWrappedModelArray") +interface ModelWithRenamedWrappedModelArrayValue + extends XmlOperations< + ModelWithRenamedWrappedModelArray, + """ + + + + foo + 123 + + + bar + 456 + + + + """ + > {} + +/** §4.4 — Contains an unwrapped array of models with a custom item name. */ +model ModelWithRenamedUnwrappedModelArray { + @name("ModelItem") + @unwrapped + items: SimpleModel[]; +} + +/** §4.4 — Operations for the ModelWithRenamedUnwrappedModelArray type. */ +@route("/modelWithRenamedUnwrappedModelArray") +interface ModelWithRenamedUnwrappedModelArrayValue + extends XmlOperations< + ModelWithRenamedUnwrappedModelArray, + """ + + + foo + 123 + + + bar + 456 + + + """ + > {} + +/** Book model with a custom XML name. */ +@name("XmlBook") +model Book { + title: string; +} + +/** §4.5 — Contains a wrapped array of models with custom wrapper and item names. */ +model ModelWithRenamedWrappedAndItemModelArray { + @name("AllBooks") + books: Book[]; +} + +/** §4.5 — Operations for the ModelWithRenamedWrappedAndItemModelArray type. */ +@route("/modelWithRenamedWrappedAndItemModelArray") +interface ModelWithRenamedWrappedAndItemModelArrayValue + extends XmlOperations< + ModelWithRenamedWrappedAndItemModelArray, + """ + + + + The Great Gatsby + + + Les Miserables + + + + """ + > {} + +// ──────────────────────────────────────────────────────────────────────────── +// §5 — Attributes +// ──────────────────────────────────────────────────────────────────────────── + +/** §5.1 — Contains fields that are XML attributes. */ +model ModelWithAttributes { + @attribute id1: int32; + @attribute id2: string; + enabled: boolean; +} + +/** §5.1 — Operations for the ModelWithAttributes type. */ @route("/modelWithAttributes") interface ModelWithAttributesValue extends XmlOperations< @@ -230,74 +430,90 @@ interface ModelWithAttributesValue """ > {} -@doc("Operations for the ModelWithUnwrappedArray type.") -@route("/modelWithUnwrappedArray") -interface ModelWithUnwrappedArrayValue - extends XmlOperations< - ModelWithUnwrappedArray, - """ - - red - green - blue - - 1 - 2 - - - """ - > {} +/** §5.2 — Contains a renamed XML attribute. */ +model ModelWithRenamedAttribute { + @attribute + @name("xml-id") + id: int32; -@doc("Operations for the ModelWithRenamedArrays type.") -@route("/modelWithRenamedArrays") -interface ModelWithRenamedArraysValue + title: string; + author: string; +} + +/** §5.2 — Operations for the ModelWithRenamedAttribute type. */ +@route("/modelWithRenamedAttribute") +interface ModelWithRenamedAttributeValue extends XmlOperations< - ModelWithRenamedArrays, + ModelWithRenamedAttribute, """ - - red - green - blue - - 1 - 2 - - + + The Great Gatsby + F. Scott Fitzgerald + """ > {} -@doc("Operations for the ModelWithRenamedFields type.") -@route("/modelWithRenamedFields") -interface ModelWithRenamedFieldsValue +// ──────────────────────────────────────────────────────────────────────────── +// §6/§7 — Namespace and prefix +// ──────────────────────────────────────────────────────────────────────────── + +/** §6.1, §7.1 — Contains fields with XML namespace on the model. */ +@ns(Namespaces.smp) +model ModelWithNamespace { + id: int32; + title: string; +} + +/** §6.1, §7.1 — Operations for the ModelWithNamespace type. */ +@route("/modelWithNamespace") +interface ModelWithNamespaceValue extends XmlOperations< - ModelWithRenamedFields, + ModelWithNamespace, """ - - - foo - 123 - - - bar - 456 - - + + 123 + The Great Gatsby + """ > {} -@doc("Operations for the ModelWithEmptyArray type.") -@route("/modelWithEmptyArray") -interface ModelWithEmptyArrayValue +/** §6.2, §7.2 — Contains fields with different XML namespaces on individual properties. */ +@ns(Namespaces.smp) +model ModelWithNamespaceOnProperties { + id: int32; + + @ns(Namespaces.smp) + title: string; + + @ns(Namespaces.ns2) + author: string; +} + +/** §6.2, §7.2 — Operations for the ModelWithNamespaceOnProperties type. */ +@route("/modelWithNamespaceOnProperties") +interface ModelWithNamespaceOnPropertiesValue extends XmlOperations< - ModelWithEmptyArray, + ModelWithNamespaceOnProperties, """ - - - + + 123 + The Great Gatsby + F. Scott Fitzgerald + """ > {} -@doc("Operations for the ModelWithText type.") +// ──────────────────────────────────────────────────────────────────────────── +// §8 — Text content +// ──────────────────────────────────────────────────────────────────────────── + +/** §8.1 — Contains an attribute and text. */ +model ModelWithText { + @attribute language: string; + @unwrapped content: string; +} + +/** §8.1 — Operations for the ModelWithText type. */ @route("/modelWithText") interface ModelWithTextValue extends XmlOperations< @@ -309,7 +525,51 @@ interface ModelWithTextValue """ > {} -@doc("Operations for the ModelWithDictionary type.") +// ──────────────────────────────────────────────────────────────────────────── +// Additional scenarios (not in the guide) +// ──────────────────────────────────────────────────────────────────────────── + +/** Contains an optional field. */ +model ModelWithOptionalField { + item: string; + value?: int32; +} + +/** Operations for the ModelWithOptionalField type. */ +@route("/modelWithOptionalField") +interface ModelWithOptionalFieldValue + extends XmlOperations< + ModelWithOptionalField, + """ + + widget + + """ + > {} + +/** Contains an array of models that's supposed to be sent/received as an empty XML element. */ +model ModelWithEmptyArray { + items: SimpleModel[]; +} + +/** Operations for the ModelWithEmptyArray type. */ +@route("/modelWithEmptyArray") +interface ModelWithEmptyArrayValue + extends XmlOperations< + ModelWithEmptyArray, + """ + + + + """ + > {} + +/** Contains a dictionary of key value pairs. */ +model ModelWithDictionary { + metadata: Record; +} + +/** Operations for the ModelWithDictionary type. */ @route("/modelWithDictionary") interface ModelWithDictionaryValue extends XmlOperations< @@ -325,7 +585,14 @@ interface ModelWithDictionaryValue """ > {} -@doc("Operations for the ModelWithEncodedNames type.") +/** Uses encodedName instead of Xml.Name which is functionally equivalent. */ +@encodedName("application/xml", "ModelWithEncodedNamesSrc") +model ModelWithEncodedNames { + @encodedName("application/xml", "SimpleModelData") modelData: SimpleModel; + @encodedName("application/xml", "PossibleColors") colors: string[]; +} + +/** Operations for the ModelWithEncodedNames type. */ @route("/modelWithEncodedNames") interface ModelWithEncodedNamesValue extends XmlOperations< @@ -345,7 +612,26 @@ interface ModelWithEncodedNamesValue """ > {} -@doc("Operations for the ModelWithEnum type.") +/** Status values for the model with enum. */ +union Status { + string, + + /** Pending status. */ + pending: "pending", + + /** Success status. */ + success: "success", + + /** Error status. */ + error: "error", +} + +/** Contains a single property with an enum value. */ +model ModelWithEnum { + status: Status; +} + +/** Operations for the ModelWithEnum type. */ @route("/modelWithEnum") interface ModelWithEnumValue extends XmlOperations< @@ -357,7 +643,18 @@ interface ModelWithEnumValue """ > {} -@doc("Operations for the ModelWithDatetime type.") +/** Contains datetime properties with different encodings. */ +model ModelWithDatetime { + /** DateTime value with rfc3339 encoding. */ + @encode(DateTimeKnownEncoding.rfc3339) + rfc3339: utcDateTime; + + /** DateTime value with rfc7231 encoding. */ + @encode(DateTimeKnownEncoding.rfc7231) + rfc7231: utcDateTime; +} + +/** Operations for the ModelWithDatetime type. */ @route("/modelWithDatetime") interface ModelWithDatetimeValue extends XmlOperations< @@ -370,7 +667,21 @@ interface ModelWithDatetimeValue """ > {} -@doc("Operations that return an error response in XML format.") +/** An error response body in XML format. */ +@error +model XmlError { + @statusCode _: 400; + @header("content-type") contentType: "application/xml"; + @body body: XmlErrorBody; +} + +/** The body of an XML error response. */ +model XmlErrorBody { + message: string; + code: int32; +} + +/** Operations that return an error response in XML format. */ @route("/error") interface XmlErrorValue { @scenario diff --git a/packages/http-specs/specs/payload/xml/mockapi.ts b/packages/http-specs/specs/payload/xml/mockapi.ts index 1560c5e84ba..4af0d1e3dc6 100644 --- a/packages/http-specs/specs/payload/xml/mockapi.ts +++ b/packages/http-specs/specs/payload/xml/mockapi.ts @@ -1,7 +1,18 @@ -import { MockRequest, passOnCode, passOnSuccess, ScenarioMockApi, xml } from "@typespec/spec-api"; +import { + match, + type MockBody, + passOnCode, + passOnSuccess, + ScenarioMockApi, + xml, +} from "@typespec/spec-api"; export const Scenarios: Record = {}; +// ──────────────────────────────────────────────────────────────────────────── +// §1 — Primitive properties +// ──────────────────────────────────────────────────────────────────────────── + export const simpleModel = ` foo @@ -9,6 +20,51 @@ export const simpleModel = ` `; +export const modelWithRenamedProperty = ` + + foo + bar + +`; + +export const modelWithRenamedFields = ` + + + foo + 123 + + + bar + 456 + + +`; + +// ──────────────────────────────────────────────────────────────────────────── +// §2 — Nested models +// ──────────────────────────────────────────────────────────────────────────── + +export const modelWithNestedModel = ` + + + foo + 123 + + +`; + +export const modelWithRenamedNestedModel = ` + + + foo + + +`; + +// ──────────────────────────────────────────────────────────────────────────── +// §3 — Array of primitive types +// ──────────────────────────────────────────────────────────────────────────── + export const modelWithSimpleArrays = ` @@ -23,33 +79,6 @@ export const modelWithSimpleArrays = ` `; -export const modelWithArrayOfModel = ` - - - - foo - 123 - - - bar - 456 - - - -`; - -export const modelWithOptionalField = ` - - widget - -`; - -export const modelWithAttributes = ` - - true - -`; - export const modelWithUnwrappedArray = ` red @@ -74,31 +103,150 @@ export const modelWithRenamedArrays = `
`; -export const modelWithRenamedFields = ` - - +export const modelWithWrappedPrimitiveCustomItemNames = ` + + + fiction + classic + + +`; + +// ──────────────────────────────────────────────────────────────────────────── +// §4 — Array of complex types +// ──────────────────────────────────────────────────────────────────────────── + +export const modelWithArrayOfModel = ` + + + + foo + 123 + + + bar + 456 + + + +`; + +export const modelWithUnwrappedModelArray = ` + + foo 123 - - + + bar 456 - - + +
`; -export const modelWithEmptyArray = ` - - - +export const modelWithRenamedWrappedModelArray = ` + + + + foo + 123 + + + bar + 456 + + + `; +export const modelWithRenamedUnwrappedModelArray = ` + + + foo + 123 + + + bar + 456 + + +`; + +export const modelWithRenamedWrappedAndItemModelArray = ` + + + + The Great Gatsby + + + Les Miserables + + + +`; + +// ──────────────────────────────────────────────────────────────────────────── +// §5 — Attributes +// ──────────────────────────────────────────────────────────────────────────── + +export const modelWithAttributes = ` + + true + +`; + +export const modelWithRenamedAttribute = ` + + The Great Gatsby + F. Scott Fitzgerald + +`; + +// ──────────────────────────────────────────────────────────────────────────── +// §6/§7 — Namespace and prefix +// ──────────────────────────────────────────────────────────────────────────── + +export const modelWithNamespace = ` + + 123 + The Great Gatsby + +`; + +export const modelWithNamespaceOnProperties = ` + + 123 + The Great Gatsby + F. Scott Fitzgerald + +`; + +// ──────────────────────────────────────────────────────────────────────────── +// §8 — Text content +// ──────────────────────────────────────────────────────────────────────────── + export const modelWithText = ` This is some text. `; +// ──────────────────────────────────────────────────────────────────────────── +// Additional scenarios (not in the guide) +// ──────────────────────────────────────────────────────────────────────────── + +export const modelWithOptionalField = ` + + widget + +`; + +export const modelWithEmptyArray = ` + + + +`; + export const modelWithDictionary = ` @@ -129,14 +277,37 @@ export const modelWithEnum = `
`; -export const modelWithDatetime = ` +export const modelWithDatetime = xml` - 2022-08-26T18:38:00.000Z - Fri, 26 Aug 2022 14:38:00 GMT + ${match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z")} + ${match.dateTime.rfc7231("Fri, 26 Aug 2022 14:38:00 GMT")} `; +const Payload_Xml_ModelWithDatetime = createServerTests( + "/payload/xml/modelWithDatetime", + modelWithDatetime, +); +Scenarios.Payload_Xml_ModelWithDatetimeValue_get = Payload_Xml_ModelWithDatetime.get; +Scenarios.Payload_Xml_ModelWithDatetimeValue_put = Payload_Xml_ModelWithDatetime.put; + +export const xmlError = ` + + Something went wrong + 400 + +`; + +// ──────────────────────────────────────────────────────────────────────────── +// Scenario registrations +// ──────────────────────────────────────────────────────────────────────────── + +function isMockBody(data: any): data is MockBody { + return typeof data === "object" && data !== null && "contentType" in data; +} + function createServerTests(uri: string, data?: any) { + const body = isMockBody(data) ? data : xml(data); return { get: passOnSuccess({ uri, @@ -144,7 +315,7 @@ function createServerTests(uri: string, data?: any) { request: {}, response: { status: 200, - body: xml(data), + body, }, kind: "MockApiDefinition", }), @@ -152,14 +323,7 @@ function createServerTests(uri: string, data?: any) { uri, method: "put", request: { - body: xml(data), - }, - handler: (req: MockRequest) => { - req.expect.containsHeader("content-type", "application/xml"); - req.expect.xmlBodyEquals(data); - return { - status: 204, - }; + body, }, response: { status: 204, @@ -169,10 +333,46 @@ function createServerTests(uri: string, data?: any) { }; } +// §1 — Primitive properties + const Payload_Xml_SimpleModel = createServerTests("/payload/xml/simpleModel", simpleModel); Scenarios.Payload_Xml_SimpleModelValue_get = Payload_Xml_SimpleModel.get; Scenarios.Payload_Xml_SimpleModelValue_put = Payload_Xml_SimpleModel.put; +const Payload_Xml_ModelWithRenamedProperty = createServerTests( + "/payload/xml/modelWithRenamedProperty", + modelWithRenamedProperty, +); +Scenarios.Payload_Xml_ModelWithRenamedPropertyValue_get = Payload_Xml_ModelWithRenamedProperty.get; +Scenarios.Payload_Xml_ModelWithRenamedPropertyValue_put = Payload_Xml_ModelWithRenamedProperty.put; + +const Payload_Xml_ModelWithRenamedFields = createServerTests( + "/payload/xml/modelWithRenamedFields", + modelWithRenamedFields, +); +Scenarios.Payload_Xml_ModelWithRenamedFieldsValue_get = Payload_Xml_ModelWithRenamedFields.get; +Scenarios.Payload_Xml_ModelWithRenamedFieldsValue_put = Payload_Xml_ModelWithRenamedFields.put; + +// §2 — Nested models + +const Payload_Xml_ModelWithNestedModel = createServerTests( + "/payload/xml/modelWithNestedModel", + modelWithNestedModel, +); +Scenarios.Payload_Xml_ModelWithNestedModelValue_get = Payload_Xml_ModelWithNestedModel.get; +Scenarios.Payload_Xml_ModelWithNestedModelValue_put = Payload_Xml_ModelWithNestedModel.put; + +const Payload_Xml_ModelWithRenamedNestedModel = createServerTests( + "/payload/xml/modelWithRenamedNestedModel", + modelWithRenamedNestedModel, +); +Scenarios.Payload_Xml_ModelWithRenamedNestedModelValue_get = + Payload_Xml_ModelWithRenamedNestedModel.get; +Scenarios.Payload_Xml_ModelWithRenamedNestedModelValue_put = + Payload_Xml_ModelWithRenamedNestedModel.put; + +// §3 — Array of primitive types + const Payload_Xml_ModelWithSimpleArrays = createServerTests( "/payload/xml/modelWithSimpleArrays", modelWithSimpleArrays, @@ -180,6 +380,31 @@ const Payload_Xml_ModelWithSimpleArrays = createServerTests( Scenarios.Payload_Xml_ModelWithSimpleArraysValue_get = Payload_Xml_ModelWithSimpleArrays.get; Scenarios.Payload_Xml_ModelWithSimpleArraysValue_put = Payload_Xml_ModelWithSimpleArrays.put; +const Payload_Xml_ModelWithUnwrappedArray = createServerTests( + "/payload/xml/modelWithUnwrappedArray", + modelWithUnwrappedArray, +); +Scenarios.Payload_Xml_ModelWithUnwrappedArrayValue_get = Payload_Xml_ModelWithUnwrappedArray.get; +Scenarios.Payload_Xml_ModelWithUnwrappedArrayValue_put = Payload_Xml_ModelWithUnwrappedArray.put; + +const Payload_Xml_ModelWithRenamedArrays = createServerTests( + "/payload/xml/modelWithRenamedArrays", + modelWithRenamedArrays, +); +Scenarios.Payload_Xml_ModelWithRenamedArraysValue_get = Payload_Xml_ModelWithRenamedArrays.get; +Scenarios.Payload_Xml_ModelWithRenamedArraysValue_put = Payload_Xml_ModelWithRenamedArrays.put; + +const Payload_Xml_ModelWithWrappedPrimitiveCustomItemNames = createServerTests( + "/payload/xml/modelWithWrappedPrimitiveCustomItemNames", + modelWithWrappedPrimitiveCustomItemNames, +); +Scenarios.Payload_Xml_ModelWithWrappedPrimitiveCustomItemNamesValue_get = + Payload_Xml_ModelWithWrappedPrimitiveCustomItemNames.get; +Scenarios.Payload_Xml_ModelWithWrappedPrimitiveCustomItemNamesValue_put = + Payload_Xml_ModelWithWrappedPrimitiveCustomItemNames.put; + +// §4 — Array of complex types + const Payload_Xml_ModelWithArrayOfModel = createServerTests( "/payload/xml/modelWithArrayOfModel", modelWithArrayOfModel, @@ -187,12 +412,43 @@ const Payload_Xml_ModelWithArrayOfModel = createServerTests( Scenarios.Payload_Xml_ModelWithArrayOfModelValue_get = Payload_Xml_ModelWithArrayOfModel.get; Scenarios.Payload_Xml_ModelWithArrayOfModelValue_put = Payload_Xml_ModelWithArrayOfModel.put; -const Payload_Xml_ModelWithOptionalField = createServerTests( - "/payload/xml/modelWithOptionalField", - modelWithOptionalField, +const Payload_Xml_ModelWithUnwrappedModelArray = createServerTests( + "/payload/xml/modelWithUnwrappedModelArray", + modelWithUnwrappedModelArray, ); -Scenarios.Payload_Xml_ModelWithOptionalFieldValue_get = Payload_Xml_ModelWithOptionalField.get; -Scenarios.Payload_Xml_ModelWithOptionalFieldValue_put = Payload_Xml_ModelWithOptionalField.put; +Scenarios.Payload_Xml_ModelWithUnwrappedModelArrayValue_get = + Payload_Xml_ModelWithUnwrappedModelArray.get; +Scenarios.Payload_Xml_ModelWithUnwrappedModelArrayValue_put = + Payload_Xml_ModelWithUnwrappedModelArray.put; + +const Payload_Xml_ModelWithRenamedWrappedModelArray = createServerTests( + "/payload/xml/modelWithRenamedWrappedModelArray", + modelWithRenamedWrappedModelArray, +); +Scenarios.Payload_Xml_ModelWithRenamedWrappedModelArrayValue_get = + Payload_Xml_ModelWithRenamedWrappedModelArray.get; +Scenarios.Payload_Xml_ModelWithRenamedWrappedModelArrayValue_put = + Payload_Xml_ModelWithRenamedWrappedModelArray.put; + +const Payload_Xml_ModelWithRenamedUnwrappedModelArray = createServerTests( + "/payload/xml/modelWithRenamedUnwrappedModelArray", + modelWithRenamedUnwrappedModelArray, +); +Scenarios.Payload_Xml_ModelWithRenamedUnwrappedModelArrayValue_get = + Payload_Xml_ModelWithRenamedUnwrappedModelArray.get; +Scenarios.Payload_Xml_ModelWithRenamedUnwrappedModelArrayValue_put = + Payload_Xml_ModelWithRenamedUnwrappedModelArray.put; + +const Payload_Xml_ModelWithRenamedWrappedAndItemModelArray = createServerTests( + "/payload/xml/modelWithRenamedWrappedAndItemModelArray", + modelWithRenamedWrappedAndItemModelArray, +); +Scenarios.Payload_Xml_ModelWithRenamedWrappedAndItemModelArrayValue_get = + Payload_Xml_ModelWithRenamedWrappedAndItemModelArray.get; +Scenarios.Payload_Xml_ModelWithRenamedWrappedAndItemModelArrayValue_put = + Payload_Xml_ModelWithRenamedWrappedAndItemModelArray.put; + +// §5 — Attributes const Payload_Xml_ModelWithAttributes = createServerTests( "/payload/xml/modelWithAttributes", @@ -201,26 +457,47 @@ const Payload_Xml_ModelWithAttributes = createServerTests( Scenarios.Payload_Xml_ModelWithAttributesValue_get = Payload_Xml_ModelWithAttributes.get; Scenarios.Payload_Xml_ModelWithAttributesValue_put = Payload_Xml_ModelWithAttributes.put; -const Payload_Xml_ModelWithUnwrappedArray = createServerTests( - "/payload/xml/modelWithUnwrappedArray", - modelWithUnwrappedArray, +const Payload_Xml_ModelWithRenamedAttribute = createServerTests( + "/payload/xml/modelWithRenamedAttribute", + modelWithRenamedAttribute, ); -Scenarios.Payload_Xml_ModelWithUnwrappedArrayValue_get = Payload_Xml_ModelWithUnwrappedArray.get; -Scenarios.Payload_Xml_ModelWithUnwrappedArrayValue_put = Payload_Xml_ModelWithUnwrappedArray.put; +Scenarios.Payload_Xml_ModelWithRenamedAttributeValue_get = + Payload_Xml_ModelWithRenamedAttribute.get; +Scenarios.Payload_Xml_ModelWithRenamedAttributeValue_put = + Payload_Xml_ModelWithRenamedAttribute.put; -const Payload_Xml_ModelWithRenamedArrays = createServerTests( - "/payload/xml/modelWithRenamedArrays", - modelWithRenamedArrays, +// §6/§7 — Namespace and prefix + +const Payload_Xml_ModelWithNamespace = createServerTests( + "/payload/xml/modelWithNamespace", + modelWithNamespace, ); -Scenarios.Payload_Xml_ModelWithRenamedArraysValue_get = Payload_Xml_ModelWithRenamedArrays.get; -Scenarios.Payload_Xml_ModelWithRenamedArraysValue_put = Payload_Xml_ModelWithRenamedArrays.put; +Scenarios.Payload_Xml_ModelWithNamespaceValue_get = Payload_Xml_ModelWithNamespace.get; +Scenarios.Payload_Xml_ModelWithNamespaceValue_put = Payload_Xml_ModelWithNamespace.put; -const Payload_Xml_ModelWithRenamedFields = createServerTests( - "/payload/xml/modelWithRenamedFields", - modelWithRenamedFields, +const Payload_Xml_ModelWithNamespaceOnProperties = createServerTests( + "/payload/xml/modelWithNamespaceOnProperties", + modelWithNamespaceOnProperties, ); -Scenarios.Payload_Xml_ModelWithRenamedFieldsValue_get = Payload_Xml_ModelWithRenamedFields.get; -Scenarios.Payload_Xml_ModelWithRenamedFieldsValue_put = Payload_Xml_ModelWithRenamedFields.put; +Scenarios.Payload_Xml_ModelWithNamespaceOnPropertiesValue_get = + Payload_Xml_ModelWithNamespaceOnProperties.get; +Scenarios.Payload_Xml_ModelWithNamespaceOnPropertiesValue_put = + Payload_Xml_ModelWithNamespaceOnProperties.put; + +// §8 — Text content + +const Payload_Xml_ModelWithText = createServerTests("/payload/xml/modelWithText", modelWithText); +Scenarios.Payload_Xml_ModelWithTextValue_get = Payload_Xml_ModelWithText.get; +Scenarios.Payload_Xml_ModelWithTextValue_put = Payload_Xml_ModelWithText.put; + +// Additional scenarios + +const Payload_Xml_ModelWithOptionalField = createServerTests( + "/payload/xml/modelWithOptionalField", + modelWithOptionalField, +); +Scenarios.Payload_Xml_ModelWithOptionalFieldValue_get = Payload_Xml_ModelWithOptionalField.get; +Scenarios.Payload_Xml_ModelWithOptionalFieldValue_put = Payload_Xml_ModelWithOptionalField.put; const Payload_Xml_ModelWithEmptyArray = createServerTests( "/payload/xml/modelWithEmptyArray", @@ -229,10 +506,6 @@ const Payload_Xml_ModelWithEmptyArray = createServerTests( Scenarios.Payload_Xml_ModelWithEmptyArrayValue_get = Payload_Xml_ModelWithEmptyArray.get; Scenarios.Payload_Xml_ModelWithEmptyArrayValue_put = Payload_Xml_ModelWithEmptyArray.put; -const Payload_Xml_ModelWithText = createServerTests("/payload/xml/modelWithText", modelWithText); -Scenarios.Payload_Xml_ModelWithTextValue_get = Payload_Xml_ModelWithText.get; -Scenarios.Payload_Xml_ModelWithTextValue_put = Payload_Xml_ModelWithText.put; - const Payload_Xml_ModelWithDictionary = createServerTests( "/payload/xml/modelWithDictionary", modelWithDictionary, @@ -251,20 +524,6 @@ const Payload_Xml_ModelWithEnum = createServerTests("/payload/xml/modelWithEnum" Scenarios.Payload_Xml_ModelWithEnumValue_get = Payload_Xml_ModelWithEnum.get; Scenarios.Payload_Xml_ModelWithEnumValue_put = Payload_Xml_ModelWithEnum.put; -const Payload_Xml_ModelWithDatetime = createServerTests( - "/payload/xml/modelWithDatetime", - modelWithDatetime, -); -Scenarios.Payload_Xml_ModelWithDatetimeValue_get = Payload_Xml_ModelWithDatetime.get; -Scenarios.Payload_Xml_ModelWithDatetimeValue_put = Payload_Xml_ModelWithDatetime.put; - -export const xmlError = ` - - Something went wrong - 400 - -`; - Scenarios.Payload_Xml_XmlErrorValue_get = passOnCode(400, { uri: "/payload/xml/error", method: "get", diff --git a/packages/http-specs/specs/special-words/main.tsp b/packages/http-specs/specs/special-words/main.tsp index e69f36b51b2..608b9b95f33 100644 --- a/packages/http-specs/specs/special-words/main.tsp +++ b/packages/http-specs/specs/special-words/main.tsp @@ -290,51 +290,51 @@ namespace ModelProperties { op withList(@body body: ModelWithList): void; } -/** - * Verify enum member names that are special words using extensible enum (union). - */ -union ExtensibleString { - string, - and: "and", - as: "as", - assert: "assert", - async: "async", - await: "await", - break: "break", - class: "class", - constructor: "constructor", - continue: "continue", - def: "def", - del: "del", - elif: "elif", - `else`: "else", - except: "except", - exec: "exec", - finally: "finally", - for: "for", - from: "from", - global: "global", - `if`: "if", - `import`: "import", - in: "in", - `is`: "is", - lambda: "lambda", - not: "not", - or: "or", - pass: "pass", - raise: "raise", - `return`: "return", - try: "try", - while: "while", - with: "with", - yield: "yield", -} - /** * Verify enum member names that are special words. */ @route("/extensible-strings") -interface ExtensibleStrings { +namespace ExtensibleStrings { + /** + * Verify enum member names that are special words using extensible enum (union). + */ + union ExtensibleString { + string, + and: "and", + as: "as", + assert: "assert", + async: "async", + await: "await", + break: "break", + class: "class", + constructor: "constructor", + continue: "continue", + def: "def", + del: "del", + elif: "elif", + `else`: "else", + except: "except", + exec: "exec", + finally: "finally", + for: "for", + from: "from", + global: "global", + `if`: "if", + `import`: "import", + in: "in", + `is`: "is", + lambda: "lambda", + not: "not", + or: "or", + pass: "pass", + raise: "raise", + `return`: "return", + try: "try", + while: "while", + with: "with", + yield: "yield", + } + @scenario @scenarioDoc(""" Verify that enum members with special word names can be sent and received properly. @@ -342,5 +342,11 @@ interface ExtensibleStrings { """) @put @route("/string") - putExtensibleStringValue(@body body: ExtensibleString): ExtensibleString; + op putExtensibleStringValue( + @header contentType: "application/json", + @body body: ExtensibleString, + ): { + @header contentType: "application/json"; + @body body: ExtensibleString; + }; } diff --git a/packages/http/CHANGELOG.md b/packages/http/CHANGELOG.md index 09352b654da..a69c735b8a4 100644 --- a/packages/http/CHANGELOG.md +++ b/packages/http/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/http +## 1.11.0 + +No changes, version bump only. + ## 1.10.0 ### Bump dependencies diff --git a/packages/http/generated-defs/TypeSpec.Http.Private.ts b/packages/http/generated-defs/TypeSpec.Http.Private.ts index 489b6a81a32..370b83beae8 100644 --- a/packages/http/generated-defs/TypeSpec.Http.Private.ts +++ b/packages/http/generated-defs/TypeSpec.Http.Private.ts @@ -1,6 +1,7 @@ import type { DecoratorContext, DecoratorValidatorCallbacks, + FunctionContext, Model, ModelProperty, Type, @@ -31,6 +32,17 @@ export type HttpPartDecorator = ( options: HttpPartOptions, ) => DecoratorValidatorCallbacks | void; +/** + * Specify if inapplicable metadata should be included in the payload for the given entity. + * + * @param value If true, inapplicable metadata will be included in the payload. + */ +export type IncludeInapplicableMetadataInPayloadDecorator = ( + context: DecoratorContext, + target: Type, + value: boolean, +) => DecoratorValidatorCallbacks | void; + /** * Performs the canonical merge-patch transformation on the given model and injects its * transformed properties into the target. @@ -43,17 +55,6 @@ export type ApplyMergePatchDecorator = ( options: ApplyMergePatchOptions, ) => DecoratorValidatorCallbacks | void; -/** - * Specify if inapplicable metadata should be included in the payload for the given entity. - * - * @param value If true, inapplicable metadata will be included in the payload. - */ -export type IncludeInapplicableMetadataInPayloadDecorator = ( - context: DecoratorContext, - target: Type, - value: boolean, -) => DecoratorValidatorCallbacks | void; - /** * Marks a model that was generated by applying the MergePatch * transform and links to its source model @@ -78,8 +79,19 @@ export type TypeSpecHttpPrivateDecorators = { plainData: PlainDataDecorator; httpFile: HttpFileDecorator; httpPart: HttpPartDecorator; - applyMergePatch: ApplyMergePatchDecorator; includeInapplicableMetadataInPayload: IncludeInapplicableMetadataInPayloadDecorator; + applyMergePatch: ApplyMergePatchDecorator; mergePatchModel: MergePatchModelDecorator; mergePatchProperty: MergePatchPropertyDecorator; }; + +export type ApplyMergePatchTransformFunctionImplementation = ( + context: FunctionContext, + input: Model, + nameTemplate: string, + options: ApplyMergePatchOptions, +) => Model; + +export type TypeSpecHttpPrivateFunctions = { + applyMergePatchTransform: ApplyMergePatchTransformFunctionImplementation; +}; diff --git a/packages/http/lib/main.tsp b/packages/http/lib/main.tsp index e67516ecc0d..4ae9b68e1cd 100644 --- a/packages/http/lib/main.tsp +++ b/packages/http/lib/main.tsp @@ -307,14 +307,14 @@ scalar LinkHeader | Link[]> extends string; * @patch op update(...MergePatchUpdate): Widget; * ``` */ -@doc("") -@friendlyName(NameTemplate, T) -@mediaTypeHint("application/merge-patch+json") -@applyMergePatch(T, NameTemplate, #{ visibilityMode: Private.MergePatchVisibilityMode.Update }) -model MergePatchUpdate< +alias MergePatchUpdate< T extends Reflection.Model, NameTemplate extends valueof string = "{name}MergePatchUpdate" -> {} +> = applyMergePatchTransform( + T, + NameTemplate, + #{ visibilityMode: Private.MergePatchVisibilityMode.Update } +); /** * Create a MergePatch Request body for creating or updating the given resource Model. @@ -351,15 +351,11 @@ model MergePatchUpdate< * @patch op update(...MergePatchCreateOrUpdate): Widget; * ``` */ -@doc("") -@friendlyName(NameTemplate, T) -@mediaTypeHint("application/merge-patch+json") -@applyMergePatch( +alias MergePatchCreateOrUpdate< + T extends Reflection.Model, + NameTemplate extends valueof string = "{name}MergePatchCreateOrUpdate" +> = applyMergePatchTransform( T, NameTemplate, #{ visibilityMode: Private.MergePatchVisibilityMode.CreateOrUpdate } -) -model MergePatchCreateOrUpdate< - T extends Reflection.Model, - NameTemplate extends valueof string = "{name}MergePatchCreateOrUpdate" -> {} +); diff --git a/packages/http/lib/private.decorators.tsp b/packages/http/lib/private.decorators.tsp index afffcde5550..5389fa50bd1 100644 --- a/packages/http/lib/private.decorators.tsp +++ b/packages/http/lib/private.decorators.tsp @@ -46,6 +46,7 @@ model ApplyMergePatchOptions { * Performs the canonical merge-patch transformation on the given model and injects its * transformed properties into the target. */ +#deprecated "applyMergePatch is deprecated and will be removed in a future release. This decorator is not intended for public use." extern dec applyMergePatch( target: Reflection.Model, source: Reflection.Model, @@ -53,6 +54,13 @@ extern dec applyMergePatch( options: valueof ApplyMergePatchOptions ); +#suppress "experimental-feature" +internal extern fn applyMergePatchTransform( + input: Reflection.Model, + nameTemplate: valueof string, + options: valueof ApplyMergePatchOptions +): Reflection.Model; + /** * Marks a model that was generated by applying the MergePatch * transform and links to its source model diff --git a/packages/http/package.json b/packages/http/package.json index c0727fa54f5..4b98e159e8d 100644 --- a/packages/http/package.json +++ b/packages/http/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/http", - "version": "1.10.0", + "version": "1.11.0", "author": "Microsoft Corporation", "description": "TypeSpec HTTP protocol binding", "homepage": "https://github.com/microsoft/typespec", @@ -83,16 +83,16 @@ } }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/streams": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/http/src/index.ts b/packages/http/src/index.ts index c7b7b3883b9..478c4178872 100644 --- a/packages/http/src/index.ts +++ b/packages/http/src/index.ts @@ -147,4 +147,4 @@ export type { } from "./types.js"; /** @internal */ -export { $decorators } from "./tsp-index.js"; +export { $decorators, $functions } from "./tsp-index.js"; diff --git a/packages/http/src/merge-patch.ts b/packages/http/src/merge-patch.ts index e1b31f72c4e..ff010b63a0e 100644 --- a/packages/http/src/merge-patch.ts +++ b/packages/http/src/merge-patch.ts @@ -6,6 +6,7 @@ import { DecoratorApplication, DecoratorContext, EnumValue, + FunctionContext, getDiscriminatedUnion, getDiscriminator, getLifecycleVisibilityEnum, @@ -15,6 +16,7 @@ import { navigateType, Program, resetVisibilityModifiersForClass, + setMediaTypeHint, Tuple, Type, Union, @@ -97,23 +99,21 @@ interface MergePatchMutatorCache { type MergePatchVisibilityMode = "Update" | "CreateOrUpdate"; -export const $applyMergePatch: ApplyMergePatchDecorator = ( - ctx: DecoratorContext, - target: Model, - source: Model, +export function applyMergePatchTransform( + ctx: FunctionContext | DecoratorContext, + input: Model, nameTemplate: string, options: ApplyMergePatchOptions, -) => { - setMergePatchSource(ctx.program, target, source); +): Model { let reported = false; navigateType( - source, + input, { intrinsic: (i) => { if (!reported && i.name === "null") { reportDiagnostic(ctx.program, { code: "merge-patch-contains-null", - target, + target: input, }); reported = true; } @@ -133,10 +133,29 @@ export const $applyMergePatch: ApplyMergePatchDecorator = ( visibilityMode, )); - const mutated = cachedMutateSubgraph(ctx.program, mutator, source); + const { type } = cachedMutateSubgraph(ctx.program, mutator, input); + + compilerAssert( + type.kind === "Model", + "Expected the root of the MergePatch transform to be a Model", + ); + + return type; +} + +export const $applyMergePatch: ApplyMergePatchDecorator = ( + ctx: DecoratorContext, + target: Model, + source: Model, + nameTemplate: string, + options: ApplyMergePatchOptions, +) => { + const transformed = applyMergePatchTransform(ctx, source, nameTemplate, options); + + setMergePatchSource(ctx.program, target, source); + setMediaTypeHint(ctx.program, target, "application/merge-patch+json"); - target.properties = (mutated.type as Model).properties; - ctx.program.stateMap(HttpStateKeys.mergePatchModel).set(target, source); + target.properties = transformed.properties; }; function visibilityModeToFilters( @@ -200,7 +219,7 @@ function setPropertyOverride( * @returns */ function createMergePatchMutator( - ctx: DecoratorContext, + ctx: DecoratorContext | FunctionContext, nameTemplate: string, visibilityMode: MergePatchVisibilityMode, ): Mutator { @@ -289,7 +308,10 @@ function createMergePatchMutator( clone.defaultValue = undefined; } - ctx.program.stateMap(HttpStateKeys.mergePatchProperty).set(clone, prop); + clone.decorators.push({ + decorator: $mergePatchProperty, + args: [{ value: prop, jsValue: prop }], + }); }, }, }; @@ -311,6 +333,20 @@ function createMergePatchMutator( } } + if (union.name) { + // We have to set the media type in a decorator, not just by calling `setMediaTypeHint`, in order for it to be + // preserved on further mutation. + clone.decorators = [ + ...clone.decorators, + { + decorator: function (ctx: DecoratorContext, target: Union) { + setMediaTypeHint(ctx.program, target, "application/merge-patch+json"); + }, + args: [], + }, + ]; + } + rename(ctx.program, clone, nameTemplate); }, }, @@ -373,6 +409,15 @@ function createMergePatchMutator( } clone.decorators = clone.decorators.filter((d) => d.decorator !== $applyMergePatch); + // We have to set the media type in a decorator, not just by calling `setMediaTypeHint`, in order for it to be + // preserved on further mutation. + clone.decorators.push({ + decorator: function (ctx: DecoratorContext, target: Model) { + setMergePatchSource(ctx.program, target, model); + setMediaTypeHint(ctx.program, target, "application/merge-patch+json"); + }, + args: [], + }); ctx.program.stateMap(HttpStateKeys.mergePatchModel).set(clone, model); rename(ctx.program, clone, nameTemplate); }, diff --git a/packages/http/src/tsp-index.ts b/packages/http/src/tsp-index.ts index e4a87965dff..227f96d878d 100644 --- a/packages/http/src/tsp-index.ts +++ b/packages/http/src/tsp-index.ts @@ -1,5 +1,8 @@ import { TypeSpecHttpDecorators } from "../generated-defs/TypeSpec.Http.js"; -import { TypeSpecHttpPrivateDecorators } from "../generated-defs/TypeSpec.Http.Private.js"; +import { + TypeSpecHttpPrivateDecorators, + TypeSpecHttpPrivateFunctions, +} from "../generated-defs/TypeSpec.Http.Private.js"; import { $body, $bodyIgnore, @@ -21,7 +24,12 @@ import { } from "./decorators.js"; import { $route } from "./decorators/route.js"; import { $sharedRoute } from "./decorators/shared-route.js"; -import { $applyMergePatch, $mergePatchModel, $mergePatchProperty } from "./merge-patch.js"; +import { + $applyMergePatch, + $mergePatchModel, + $mergePatchProperty, + applyMergePatchTransform, +} from "./merge-patch.js"; import { $httpFile, $httpPart, @@ -65,3 +73,9 @@ export const $decorators = { mergePatchProperty: $mergePatchProperty, } satisfies TypeSpecHttpPrivateDecorators, }; + +export const $functions = { + "TypeSpec.Http.Private": { + applyMergePatchTransform, + } satisfies TypeSpecHttpPrivateFunctions, +}; diff --git a/packages/http/test/merge-patch.test.ts b/packages/http/test/merge-patch.test.ts index 1cbac9f7d55..a3d4bba56cf 100644 --- a/packages/http/test/merge-patch.test.ts +++ b/packages/http/test/merge-patch.test.ts @@ -1,4 +1,16 @@ -import { Diagnostic, Model, ModelProperty, Program, Type, TypeKind } from "@typespec/compiler"; +import { + Diagnostic, + getMediaTypeHint, + Model, + ModelProperty, + Program, + Type, + TypeKind, +} from "@typespec/compiler"; +import { + type unsafe_MutatorWithNamespace as MutatorWithNamespace, + unsafe_mutateSubgraphWithNamespace, +} from "@typespec/compiler/experimental"; import { expectDiagnosticEmpty, expectDiagnostics, @@ -9,10 +21,12 @@ import { deepStrictEqual, ok } from "assert"; import { beforeEach, describe, expect, it } from "vitest"; import { getMergePatchProperties, + getMergePatchPropertySource, getMergePatchSource, isMergePatch, } from "../src/experimental/merge-patch/helpers.js"; -import { getAllHttpServices } from "../src/operations.js"; +import { isMergePatchBody } from "../src/experimental/merge-patch/internal.js"; +import { getAllHttpServices, getHttpService } from "../src/operations.js"; import { HttpOperation, RouteResolutionOptions } from "../src/types.js"; import { diagnoseOperations, getOperationsWithServiceNamespace, Tester } from "./test-host.js"; @@ -21,6 +35,17 @@ beforeEach(async () => { runner = await Tester.createInstance(); }); +const cloneNamespaceMutator: MutatorWithNamespace = { + name: "CloneNamespaceForMergePatchRegression", + Namespace: { mutate: () => {} }, + Interface: { mutate: () => {} }, + Operation: { mutate: () => {} }, + Model: { mutate: () => {} }, + ModelProperty: { mutate: () => {} }, + Union: { mutate: () => {} }, + UnionVariant: { mutate: () => {} }, +}; + function checkNullableUnion(program: Program, union: Type): boolean { return ( $(program).union.is(union) && @@ -77,6 +102,39 @@ async function compileAndDiagnoseWithRunner( return [services[0].operations, runner.program.diagnostics]; } +async function compileAndCloneServiceWithRunner( + runner: TesterInstance, + code: string, + options?: RouteResolutionOptions, +): Promise<[HttpOperation[], readonly Diagnostic[]]> { + await runner.compileAndDiagnose( + `@service(#{title: "Test Service"}) namespace TestService; + ${code}`, + ); + + const [services, httpDiagnostics] = getAllHttpServices(runner.program, options); + const clonedSubgraph = unsafe_mutateSubgraphWithNamespace( + runner.program, + [cloneNamespaceMutator], + services[0].namespace, + ); + + if (clonedSubgraph.type.kind !== "Namespace") { + throw new Error("Expected namespace clone when mutating service"); + } + + const [clonedService, clonedDiagnostics] = getHttpService( + runner.program, + clonedSubgraph.type, + options, + ); + + return [ + clonedService.operations, + [...runner.program.diagnostics, ...httpDiagnostics, ...clonedDiagnostics], + ]; +} + describe("metadata tests", () => { async function testMetadata( prop: string, @@ -245,6 +303,65 @@ describe("http operation support", () => { }); }); describe("mutator validation", () => { + it("sets media type hint on transformed models", async () => { + const [program, diag] = await compileAndDiagnoseWithRunner( + runner, + ` + model Child { + id: string; + } + + model Foo { + id: string; + child?: Child; + } + + @patch op update(@body body: MergePatchUpdate): void;`, + ); + + expectDiagnosticEmpty(diag); + const bodyType = program[0].parameters?.body?.type; + ok(bodyType); + deepStrictEqual(bodyType.kind, "Model"); + expect(getMediaTypeHint(runner.program, bodyType)).toBe("application/merge-patch+json"); + + const childProp = bodyType.properties.get("child"); + ok(childProp); + const childType = getNonNullableType(childProp.type); + ok(childType); + deepStrictEqual(childType.kind, "Model"); + expect(getMediaTypeHint(runner.program, childType)).toBe("application/merge-patch+json"); + }); + + it("preserves merge-patch metadata for template spread bodies after namespace mutation", async () => { + const [operations, diag] = await compileAndCloneServiceWithRunner( + runner, + ` + model Foo { + id: string; + name: string; + description?: string; + } + + op Wrapper(...Parameters): void; + + @patch op update is Wrapper>; + `, + ); + + expectDiagnosticEmpty(diag); + + const body = operations[0].parameters?.body; + ok(body); + expect(body.contentTypes).toEqual(["application/merge-patch+json"]); + expect(isMergePatchBody(runner.program, body.type)).toBe(true); + + deepStrictEqual(body.type.kind, "Model"); + const description = body.type.properties.get("description"); + ok(description); + expect(getMergePatchPropertySource(runner.program, description)).toBeDefined(); + }); + it("handles optional and required properties", async () => { const [program, diag] = await compileAndDiagnoseWithRunner( runner, diff --git a/packages/internal-build-utils/CHANGELOG.md b/packages/internal-build-utils/CHANGELOG.md index 71ad78b6bbe..13cbf89eb81 100644 --- a/packages/internal-build-utils/CHANGELOG.md +++ b/packages/internal-build-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/internal-build-utils +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/internal-build-utils/package.json b/packages/internal-build-utils/package.json index f383d406b3c..5867a10f7f6 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.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "Internal library to TypeSpec providing helpers to build.", "homepage": "https://typespec.io", @@ -40,24 +40,24 @@ "!dist/test/**" ], "dependencies": { - "@pnpm/workspace.find-packages": "^1000.0.24", - "cross-spawn": "^7.0.6", - "cspell": "^9.4.0", - "semver": "^7.7.1", - "strip-json-comments": "~5.0.1", - "yargs": "~18.0.0" + "@pnpm/workspace.find-packages": "catalog:", + "cross-spawn": "catalog:", + "cspell": "catalog:", + "semver": "catalog:", + "strip-json-comments": "catalog:", + "yargs": "catalog:" }, "devDependencies": { - "@types/cross-spawn": "~6.0.6", - "@types/node": "~25.3.0", - "@types/semver": "^7.5.8", - "@types/yargs": "~17.0.33", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "chokidar": "~5.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@types/cross-spawn": "catalog:", + "@types/node": "catalog:", + "@types/semver": "catalog:", + "@types/yargs": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "chokidar": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/json-schema/CHANGELOG.md b/packages/json-schema/CHANGELOG.md index 64bb1048dde..d1f980e1473 100644 --- a/packages/json-schema/CHANGELOG.md +++ b/packages/json-schema/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/json-schema +## 1.11.0 + +No changes, version bump only. + ## 1.10.0 ### Bump dependencies diff --git a/packages/json-schema/package.json b/packages/json-schema/package.json index 70750fa76c7..f65a7b93dd3 100644 --- a/packages/json-schema/package.json +++ b/packages/json-schema/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/json-schema", - "version": "1.10.0", + "version": "1.11.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", @@ -57,22 +57,22 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/internal-build-utils": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "ajv": "~8.18.0", - "ajv-formats": "~3.0.1", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "ajv": "catalog:", + "ajv-formats": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" }, "dependencies": { "@typespec/asset-emitter": "workspace:^", - "yaml": "~2.8.2" + "yaml": "catalog:" } } diff --git a/packages/json-schema/test/arrays.test.ts b/packages/json-schema/test/arrays.test.ts index 2ed2f53ac00..5e01e28fd12 100644 --- a/packages/json-schema/test/arrays.test.ts +++ b/packages/json-schema/test/arrays.test.ts @@ -114,6 +114,7 @@ describe("arrays", () => { "Test.json": Test, "Person.json": Person, "Friend.json": Friend, + "CreatePerson.json": CreatePerson, "CreateFriend.json": CreateFriend, } = await emitSchema(` model Friend { @@ -141,15 +142,17 @@ describe("arrays", () => { name: { type: "string" }, }); + assert.deepStrictEqual(CreatePerson.properties, { + friends: { type: "array", items: { $ref: "CreateFriend.json" } }, + }); + assert.deepStrictEqual(Person.properties, { friends: { type: "array", items: { $ref: "Friend.json" } }, }); assert.deepStrictEqual(Test.properties, { a: { - type: "object", - properties: { friends: { type: "array", items: { $ref: "CreateFriend.json" } } }, - required: ["friends"], + $ref: "CreatePerson.json", }, }); }); diff --git a/packages/library-linter/CHANGELOG.md b/packages/library-linter/CHANGELOG.md index c42ff8be329..44db1ed28a8 100644 --- a/packages/library-linter/CHANGELOG.md +++ b/packages/library-linter/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/library-linter +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/library-linter/package.json b/packages/library-linter/package.json index 2f4b6d1b69f..2a7c8ad3bc9 100644 --- a/packages/library-linter/package.json +++ b/packages/library-linter/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/library-linter", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library for linting another library.", "homepage": "https://typespec.io", @@ -52,13 +52,13 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/monarch/package.json b/packages/monarch/package.json index c40a96e3479..0d4f708b68f 100644 --- a/packages/monarch/package.json +++ b/packages/monarch/package.json @@ -42,16 +42,16 @@ "!dist/test/**" ], "devDependencies": { - "@types/node": "~25.3.0", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "happy-dom": "^20.0.11", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@types/node": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "happy-dom": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" }, "dependencies": { - "monaco-editor-core": "^0.55.0" + "monaco-editor-core": "catalog:" } } diff --git a/packages/mutator-framework/package.json b/packages/mutator-framework/package.json index 50cbca3c855..b30d4d6c5f8 100644 --- a/packages/mutator-framework/package.json +++ b/packages/mutator-framework/package.json @@ -34,9 +34,9 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", - "concurrently": "^9.1.2", - "prettier": "~3.8.0" + "concurrently": "catalog:", + "prettier": "catalog:" } } diff --git a/packages/openapi/CHANGELOG.md b/packages/openapi/CHANGELOG.md index 5f795f813ce..d2ee32885be 100644 --- a/packages/openapi/CHANGELOG.md +++ b/packages/openapi/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/openapi +## 1.11.0 + +No changes, version bump only. + ## 1.10.0 ### Features diff --git a/packages/openapi/package.json b/packages/openapi/package.json index 9d0602021bb..8b6a1ce8ee5 100644 --- a/packages/openapi/package.json +++ b/packages/openapi/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/openapi", - "version": "1.10.0", + "version": "1.11.0", "author": "Microsoft Corporation", "description": "TypeSpec library providing OpenAPI concepts", "homepage": "https://typespec.io", @@ -58,17 +58,17 @@ "@typespec/http": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/http": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/rest": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/openapi3/CHANGELOG.md b/packages/openapi3/CHANGELOG.md index b7f659b2aa4..5060c076470 100644 --- a/packages/openapi3/CHANGELOG.md +++ b/packages/openapi3/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log - @typespec/openapi3 +## 1.11.0 + +### Bug Fixes + +- [#10041](https://github.com/microsoft/typespec/pull/10041) [importer] Fix `anyOf` with `$ref` and inline object being incorrectly imported as a model instead of a union. +- [#10046](https://github.com/microsoft/typespec/pull/10046) Fix OpenAPI emitter failing with "Duplicate type name" error when using a named union with a `bytes` variant in a multipart body (e.g. `HttpPart` where `MyUnion` includes `bytes`). + + ## 1.10.0 ### Features diff --git a/packages/openapi3/package.json b/packages/openapi3/package.json index c5631aad550..cb48b898c6c 100644 --- a/packages/openapi3/package.json +++ b/packages/openapi3/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/openapi3", - "version": "1.10.0", + "version": "1.11.0", "author": "Microsoft Corporation", "description": "TypeSpec library for emitting OpenAPI 3.0 and OpenAPI 3.1 from the TypeSpec REST protocol binding and converting OpenAPI3 to TypeSpec", "homepage": "https://typespec.io", @@ -63,11 +63,11 @@ "!dist/test/**" ], "dependencies": { - "@scalar/json-magic": "^0.11.5", - "@scalar/openapi-parser": "^0.24.1", - "@scalar/openapi-types": "^0.5.0", + "@scalar/json-magic": "catalog:", + "@scalar/openapi-parser": "catalog:", + "@scalar/openapi-types": "catalog:", "@typespec/asset-emitter": "workspace:^", - "yaml": "~2.8.2" + "yaml": "catalog:" }, "peerDependencies": { "@typespec/compiler": "workspace:^", @@ -100,8 +100,8 @@ } }, "devDependencies": { - "@types/node": "~25.3.0", - "@types/yargs": "~17.0.33", + "@types/node": "catalog:", + "@types/yargs": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/events": "workspace:^", "@typespec/http": "workspace:^", @@ -114,12 +114,12 @@ "@typespec/tspd": "workspace:^", "@typespec/versioning": "workspace:^", "@typespec/xml": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "cross-env": "~10.1.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "cross-env": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/openapi3/src/cli/actions/convert/transforms/transform-component-schemas.ts b/packages/openapi3/src/cli/actions/convert/transforms/transform-component-schemas.ts index 81f04d3c184..e9821bbd638 100644 --- a/packages/openapi3/src/cli/actions/convert/transforms/transform-component-schemas.ts +++ b/packages/openapi3/src/cli/actions/convert/transforms/transform-component-schemas.ts @@ -316,8 +316,13 @@ function unwrapSingleAnyOfOneOf( return (member as any).type !== "null"; }); - // If there's exactly one meaningful inline member AND it's an object type, unwrap it - if (meaningfulInlineMembers.length === 1) { + // Check if there are any $ref members in the union alongside the inline members + const hasRefMembers = unionMembers.some((member) => "$ref" in member); + + // If there's exactly one meaningful inline member AND it's an object type + // AND there are no $ref members alongside it, unwrap it. + // If $ref members are present, the schema is truly a union (e.g. $ref + object). + if (meaningfulInlineMembers.length === 1 && !hasRefMembers) { const member = meaningfulInlineMembers[0]; // Only unwrap if the member is an object schema if (!("$ref" in member) && (member.type === "object" || member.properties)) { @@ -386,8 +391,13 @@ function getTypeSpecKind(schema: Refable): TypeSpecDataT return (member as any).type !== "null"; }); - // If there's exactly one meaningful inline member AND it's an object type, treat it as a model - if (meaningfulInlineMembers.length === 1) { + // Check if there are any $ref members in the union alongside the inline members + const hasRefMembers = unionMembers.some((member) => "$ref" in member); + + // If there's exactly one meaningful inline member AND it's an object type + // AND there are no $ref members alongside it, treat it as a model. + // If $ref members are present, the schema is truly a union (e.g. $ref + object). + if (meaningfulInlineMembers.length === 1 && !hasRefMembers) { const member = meaningfulInlineMembers[0]; // Only unwrap if the member is an object schema if (!("$ref" in member) && (member.type === "object" || member.properties)) { diff --git a/packages/openapi3/src/visibility-usage.ts b/packages/openapi3/src/visibility-usage.ts index b01ed33dedb..2e30d48499b 100644 --- a/packages/openapi3/src/visibility-usage.ts +++ b/packages/openapi3/src/visibility-usage.ts @@ -152,6 +152,16 @@ function addUsagesInOperation( navigateReferencedTypes(httpOperation.parameters.body.type, visibility, (type, vis) => trackUsage(metadataInfo, usages, type, vis), ); + // For multipart bodies, also navigate part types directly. HttpPart wrappers are + // empty models with no properties, so navigateReferencedTypes won't reach T through + // normal property traversal, causing T to be incorrectly treated as unreachable. + if (httpOperation.parameters.body.bodyKind === "multipart") { + for (const part of httpOperation.parameters.body.parts) { + navigateReferencedTypes(part.body.type, visibility, (type, vis) => + trackUsage(metadataInfo, usages, type, vis), + ); + } + } } for (const param of httpOperation.parameters.parameters) { navigateReferencedTypes(param.param, visibility, (type, vis) => diff --git a/packages/openapi3/test/multipart.test.ts b/packages/openapi3/test/multipart.test.ts index 1858f48e0f7..b5a53caa25d 100644 --- a/packages/openapi3/test/multipart.test.ts +++ b/packages/openapi3/test/multipart.test.ts @@ -91,6 +91,33 @@ worksFor(supportedVersions, ({ openApiFor }) => { description: "My doc", }); }); + + it("named union with bytes variant does not cause 'Duplicate type name' error", async () => { + const res = await openApiFor( + ` + union BinaryOrJson { + bytes, + { file_id: string }, + } + op upload(@header contentType: "multipart/form-data", @multipartBody body: { attachment: HttpPart }): void; + `, + ); + const op = res.paths["/"].post; + // The union should be referenced as a $ref (not inlined), and should be available in components + expect(op.requestBody.content["multipart/form-data"].schema.properties.attachment.$ref).toEqual( + "#/components/schemas/BinaryOrJson", + ); + const schema = res.components.schemas.BinaryOrJson; + expect(schema).toBeDefined(); + // The schema should use anyOf with 2 variants + expect(schema.anyOf).toHaveLength(2); + // The object variant ({file_id: string}) should appear in the schema regardless of version + expect(schema.anyOf).toContainEqual({ + type: "object", + properties: { file_id: { type: "string" } }, + required: ["file_id"], + }); + }); }); worksFor(["3.0.0"], ({ openApiFor }) => { diff --git a/packages/openapi3/test/tsp-openapi3/anyof-ref-and-object.test.ts b/packages/openapi3/test/tsp-openapi3/anyof-ref-and-object.test.ts new file mode 100644 index 00000000000..a144bd0a064 --- /dev/null +++ b/packages/openapi3/test/tsp-openapi3/anyof-ref-and-object.test.ts @@ -0,0 +1,94 @@ +import { dereference } from "@scalar/openapi-parser"; +import { OpenAPI } from "@scalar/openapi-types"; +import { beforeAll, describe, expect, it } from "vitest"; +import { generateDataType } from "../../src/cli/actions/convert/generators/generate-model.js"; +import { TypeSpecDataTypes, TypeSpecUnion } from "../../src/cli/actions/convert/interfaces.js"; +import { transformComponentSchemas } from "../../src/cli/actions/convert/transforms/transform-component-schemas.js"; +import { createContext } from "../../src/cli/actions/convert/utils/context.js"; +import { OpenAPI3Document } from "../../src/types.js"; + +describe("tsp-openapi: anyOf with $ref and inline object should produce union", () => { + let doc: OpenAPI.Document<{}>; + + beforeAll(async () => { + const { specification } = await dereference({ + openapi: "3.1.0", + info: { title: "Test", version: "1.0.0" }, + paths: {}, + components: { + schemas: { + VoiceIdsOrCustomVoice: { + title: "Voice", + description: "A built-in voice name or a custom voice reference.", + anyOf: [ + { $ref: "#/components/schemas/VoiceIdsShared" }, + { + type: "object", + description: "Custom voice reference.", + additionalProperties: false, + required: ["id"], + properties: { + id: { type: "string" }, + }, + }, + ], + }, + VoiceIdsShared: { + anyOf: [ + { type: "string" }, + { + type: "string", + enum: ["alloy", "ash", "ballad", "coral", "echo", "sage"], + }, + ], + }, + }, + }, + }); + if (!specification) { + throw new Error("Failed to dereference OpenAPI document"); + } + doc = specification; + }); + + it("should generate a union (not a model) for anyOf with $ref and inline object", () => { + const context = createContext(doc as OpenAPI3Document); + const types: TypeSpecDataTypes[] = []; + transformComponentSchemas(context, types); + + const type = types.find((t) => t.name === "VoiceIdsOrCustomVoice"); + expect(type).toBeDefined(); + expect(type!.kind).toBe("union"); + }); + + it("should generate TypeSpec union code containing both the ref and the inline object", () => { + const context = createContext(doc as OpenAPI3Document); + const types: TypeSpecDataTypes[] = []; + transformComponentSchemas(context, types); + + const union = types.find( + (t) => t.name === "VoiceIdsOrCustomVoice" && t.kind === "union", + ) as TypeSpecUnion; + expect(union).toBeDefined(); + + const generatedCode = generateDataType(union, context); + + // Should be a union, not a model + expect(generatedCode).toContain("union VoiceIdsOrCustomVoice"); + expect(generatedCode).not.toContain("model VoiceIdsOrCustomVoice"); + // Should reference the VoiceIdsShared type + expect(generatedCode).toContain("VoiceIdsShared"); + }); + + it("should preserve description from parent schema on the union", () => { + const context = createContext(doc as OpenAPI3Document); + const types: TypeSpecDataTypes[] = []; + transformComponentSchemas(context, types); + + const union = types.find( + (t) => t.name === "VoiceIdsOrCustomVoice" && t.kind === "union", + ) as TypeSpecUnion; + expect(union).toBeDefined(); + expect(union.doc).toContain("A built-in voice name or a custom voice reference."); + }); +}); diff --git a/packages/openapi3/test/tsp-openapi3/utils/spec-snapshot-testing.ts b/packages/openapi3/test/tsp-openapi3/utils/spec-snapshot-testing.ts index 1072401b3f9..9680e7f999f 100644 --- a/packages/openapi3/test/tsp-openapi3/utils/spec-snapshot-testing.ts +++ b/packages/openapi3/test/tsp-openapi3/utils/spec-snapshot-testing.ts @@ -40,8 +40,9 @@ export function defineSpecSnaphotTests(config: SpecSnapshotTestOptions) { existingSnapshots = await readFilesInDirRecursively(config.outputDir); }); - afterAll(async function (context: Readonly) { - if (context.tasks.some((x) => x.mode === "skip")) { + // eslint-disable-next-line no-empty-pattern + afterAll(async function ({}, { tasks }: Readonly) { + if (tasks.some((x) => x.mode === "skip")) { return; // Not running the full test suite, so don't bother checking snapshots. } diff --git a/packages/pack/package.json b/packages/pack/package.json index ae3e511c0e2..4595fa79b77 100644 --- a/packages/pack/package.json +++ b/packages/pack/package.json @@ -46,17 +46,17 @@ ], "dependencies": { "@typespec/compiler": "workspace:^", - "picocolors": "~1.1.1" + "picocolors": "catalog:" }, "devDependencies": { - "@types/node": "~25.3.0", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "source-map-support": "~0.5.21", - "typescript": "~5.9.3", - "vite": "^7.2.7", - "vitest": "^4.0.18" + "@types/node": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "source-map-support": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/playground-website/package.json b/packages/playground-website/package.json index 6b069f3b313..9e02692cf18 100644 --- a/packages/playground-website/package.json +++ b/packages/playground-website/package.json @@ -53,8 +53,8 @@ "!dist/test/**" ], "dependencies": { - "@fluentui/react-components": "~9.73.1", - "@fluentui/react-icons": "^2.0.292", + "@fluentui/react-components": "catalog:", + "@fluentui/react-icons": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/events": "workspace:^", "@typespec/html-program-viewer": "workspace:^", @@ -70,29 +70,28 @@ "@typespec/streams": "workspace:^", "@typespec/versioning": "workspace:^", "@typespec/xml": "workspace:^", - "es-module-shims": "~2.8.0", - "react": "~19.2.3", - "react-dom": "~19.2.3" + "es-module-shims": "catalog:", + "react": "catalog:", + "react-dom": "catalog:" }, "devDependencies": { - "@babel/core": "^7.26.10", - "@playwright/test": "^1.57.0", - "@types/debounce": "~1.2.4", - "@types/node": "~25.3.0", - "@types/react": "~19.2.7", - "@types/react-dom": "~19.2.2", - "@types/swagger-ui": "~5.21.1", - "@vitejs/plugin-react": "~5.1.2", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "cross-env": "~10.1.0", - "rimraf": "~6.1.3", - "rollup-plugin-visualizer": "6.0.4", - "typescript": "~5.9.3", - "vite": "^7.2.7", - "vite-plugin-dts": "4.5.4", - "vite-plugin-node-polyfills": "^0.25.0", - "vitest": "^4.0.18" + "@babel/core": "catalog:", + "@playwright/test": "catalog:", + "@types/debounce": "catalog:", + "@types/node": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/swagger-ui": "catalog:", + "@vitejs/plugin-react": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "cross-env": "catalog:", + "rimraf": "catalog:", + "rollup-plugin-visualizer": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "vite-plugin-dts": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/playground-website/src/import.tsx b/packages/playground-website/src/import.tsx index 964a2b933a2..4176eee63d8 100644 --- a/packages/playground-website/src/import.tsx +++ b/packages/playground-website/src/import.tsx @@ -7,13 +7,6 @@ import { DialogTitle, Input, Label, - Menu, - MenuItem, - MenuList, - MenuPopover, - MenuTrigger, - ToolbarButton, - Tooltip, } from "@fluentui/react-components"; import { ArrowUploadFilled } from "@fluentui/react-icons"; import { combineProjectIntoFile, createRemoteHost } from "@typespec/pack"; @@ -22,46 +15,51 @@ import { Editor, useMonacoModel, usePlaygroundContext, + type CommandBarItem, } from "@typespec/playground/react"; -import { ReactNode, useState } from "react"; +import { useState, type FunctionComponent, type ReactNode } from "react"; import { parse } from "yaml"; import style from "./import.module.css"; -export const ImportToolbarButton = () => { - const [open, setOpen] = useState<"openapi3" | "tsp" | undefined>(); +type ImportType = "openapi3" | "tsp"; - return ( - <> - - - - } - /> - - - - - setOpen("tsp")}>Remote TypeSpec - setOpen("openapi3")}>From OpenAPI 3 spec - - - +/** Hook that creates a CommandBarItem for the Import action with sub-menu items. */ +export function useImportCommandBarItem(): CommandBarItem { + const [open, setOpen] = useState(); + + return { + id: "import", + label: "Import", + icon: , + align: "right", + children: [ + { id: "import-tsp", label: "Remote TypeSpec", onClick: () => setOpen("tsp") }, + { + id: "import-openapi3", + label: "From OpenAPI 3 spec", + onClick: () => setOpen("openapi3"), + }, + ], + content: setOpen(undefined)} />, + }; +} - setOpen(undefined)}> - - - Settings - - {open === "openapi3" && setOpen(undefined)} />} - {open === "tsp" && setOpen(undefined)} />} - - - - - +const ImportDialog: FunctionComponent<{ + open: "openapi3" | "tsp" | undefined; + onClose: () => void; +}> = ({ open, onClose }) => { + return ( + onClose()}> + + + Settings + + {open === "openapi3" && } + {open === "tsp" && } + + + + ); }; diff --git a/packages/playground-website/src/index.ts b/packages/playground-website/src/index.ts index 1bc54a0a6fd..4b4bdefadfd 100644 --- a/packages/playground-website/src/index.ts +++ b/packages/playground-website/src/index.ts @@ -1,2 +1,2 @@ export { TypeSpecPlaygroundConfig } from "./config.js"; -export { ImportToolbarButton } from "./import.js"; +export { useImportCommandBarItem } from "./import.js"; diff --git a/packages/playground-website/src/main.tsx b/packages/playground-website/src/main.tsx index e4fa8a5c71a..6ce6da3025b 100644 --- a/packages/playground-website/src/main.tsx +++ b/packages/playground-website/src/main.tsx @@ -1,3 +1,4 @@ +import { FluentProvider, webLightTheme } from "@fluentui/react-components"; import { MANIFEST } from "@typespec/compiler"; import { registerMonacoDefaultWorkersForVite } from "@typespec/playground"; import PlaygroundManifest from "@typespec/playground/manifest"; @@ -5,12 +6,13 @@ import { Footer, FooterItem, FooterVersionItem, - renderReactPlayground, + StandalonePlayground, } from "@typespec/playground/react"; import { SwaggerUIViewer } from "@typespec/playground/react/viewers"; import "@typespec/playground/styles.css"; +import { createRoot } from "react-dom/client"; import samples from "../samples/dist/samples.js"; -import { ImportToolbarButton } from "./import.js"; +import { useImportCommandBarItem } from "./import.js"; import "./style.css"; registerMonacoDefaultWorkersForVite(); @@ -42,20 +44,31 @@ const PlaygroundFooter = () => { ); }; -await renderReactPlayground({ - ...PlaygroundManifest, - samples, - emitterViewers: { - "@typespec/openapi3": [SwaggerUIViewer], - }, - importConfig: { - useShim: true, - }, - footer: , - commandBarButtons: , - onFileBug: () => { - const bodyPayload = encodeURIComponent(`\n\n\n[Playground Link](${document.location.href})`); - const url = `https://github.com/microsoft/typespec/issues/new?body=${bodyPayload}`; - window.open(url, "_blank"); - }, -}); +const onFileBug = () => { + const bodyPayload = encodeURIComponent(`\n\n\n[Playground Link](${document.location.href})`); + const url = `https://github.com/microsoft/typespec/issues/new?body=${bodyPayload}`; + window.open(url, "_blank"); +}; + +const App = () => { + const importItem = useImportCommandBarItem(); + + return ( + } + commandBarItems={[importItem]} + onFileBug={onFileBug} + /> + ); +}; + +const root = createRoot(document.getElementById("root")!); +root.render( + + + , +); diff --git a/packages/playground-website/vite.config.ts b/packages/playground-website/vite.config.ts index 4ba305fb076..dd4bc0e5a3b 100644 --- a/packages/playground-website/vite.config.ts +++ b/packages/playground-website/vite.config.ts @@ -2,7 +2,6 @@ import { definePlaygroundViteConfig } from "@typespec/playground/vite"; import { execSync } from "child_process"; import { visualizer } from "rollup-plugin-visualizer"; import { defineConfig, loadEnv } from "vite"; -import { nodePolyfills } from "vite-plugin-node-polyfills"; import { TypeSpecPlaygroundConfig } from "./src/config.js"; function getCommit() { @@ -19,9 +18,6 @@ export default defineConfig(({ mode }) => { const useLocalLibraries = env["VITE_USE_LOCAL_LIBRARIES"] === "true"; const config = definePlaygroundViteConfig({ ...TypeSpecPlaygroundConfig, - links: { - documentationUrl: "https://typespec.io", - }, skipBundleLibraries: !useLocalLibraries, }); @@ -33,16 +29,6 @@ export default defineConfig(({ mode }) => { }) as any, ); - config.plugins!.push( - nodePolyfills({ - include: [], - globals: { - Buffer: true, - process: "dev", - }, - }), - ); - const prNumber = getPrNumber(); if (prNumber) { config.define = { diff --git a/packages/playground/CHANGELOG.md b/packages/playground/CHANGELOG.md index 4b5831bbd69..524db42d909 100644 --- a/packages/playground/CHANGELOG.md +++ b/packages/playground/CHANGELOG.md @@ -1,5 +1,21 @@ # Change Log - @typespec/playground +## 0.14.0 + +### Features + +- [#10024](https://github.com/microsoft/typespec/pull/10024) Add file tree view for output +- [#10018](https://github.com/microsoft/typespec/pull/10018) Make UI more mobile friendly. + - Add a new switch to toggle between TypeSpec and output panels + - Command bar hides less important tools behind `...` + - [API] Update custom toolbar to take a menu item instead of generic react node. +- [#10256](https://github.com/microsoft/typespec/pull/10256) Add search and category grouping to samples + +### Bug Fixes + +- [#10212](https://github.com/microsoft/typespec/pull/10212) Don't show file tree view in output when there is only a single file + + ## 0.13.0 ### Features diff --git a/packages/playground/package.json b/packages/playground/package.json index 4c5293c611d..9b88378a812 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/playground", - "version": "0.13.0", + "version": "0.14.0", "author": "Microsoft Corporation", "description": "TypeSpec playground UI components.", "homepage": "https://typespec.io", @@ -61,8 +61,8 @@ "build:storybook": "sb build", "preview": "pnpm build && vite preview", "start": "vite", - "test": "echo 'no tests'", - "test:ci": "echo 'no tests'", + "test": "vitest run", + "test:ci": "vitest run --coverage --reporter=junit --reporter=default", "lint": "eslint . --max-warnings=0", "lint:fix": "eslint . --fix" }, @@ -72,8 +72,8 @@ "!dist/test/**" ], "dependencies": { - "@fluentui/react-components": "~9.73.1", - "@fluentui/react-icons": "^2.0.292", + "@fluentui/react-components": "catalog:", + "@fluentui/react-icons": "catalog:", "@typespec/bundler": "workspace:^", "@typespec/compiler": "workspace:^", "@typespec/html-program-viewer": "workspace:^", @@ -83,39 +83,43 @@ "@typespec/protobuf": "workspace:^", "@typespec/rest": "workspace:^", "@typespec/versioning": "workspace:^", - "clsx": "^2.1.1", - "debounce": "~3.0.0", - "lzutf8": "0.6.3", - "monaco-editor": "~0.55.0", - "react": "~19.2.3", - "react-dom": "~19.2.3", - "react-error-boundary": "^6.0.0", - "swagger-ui-dist": "^5.20.1", - "yaml": "~2.8.2", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.12" + "clsx": "catalog:", + "debounce": "catalog:", + "lzutf8": "catalog:", + "monaco-editor": "catalog:", + "react": "catalog:", + "react-dom": "catalog:", + "react-error-boundary": "catalog:", + "swagger-ui-dist": "catalog:", + "vscode-languageserver": "catalog:", + "vscode-languageserver-textdocument": "catalog:", + "yaml": "catalog:" }, "devDependencies": { - "@babel/core": "^7.26.10", - "@playwright/test": "^1.57.0", - "@storybook/cli": "^10.1.8", - "@storybook/react-vite": "^10.1.8", - "@types/debounce": "~1.2.4", - "@types/node": "~25.3.0", - "@types/react": "~19.2.7", - "@types/react-dom": "~19.2.2", - "@types/swagger-ui-dist": "~3.30.5", + "@babel/core": "catalog:", + "@playwright/test": "catalog:", + "@storybook/cli": "catalog:", + "@storybook/react-vite": "catalog:", + "@testing-library/dom": "catalog:", + "@testing-library/jest-dom": "catalog:", + "@testing-library/react": "catalog:", + "@types/debounce": "catalog:", + "@types/node": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/swagger-ui-dist": "catalog:", "@typespec/bundler": "workspace:^", "@typespec/react-components": "workspace:^", - "@vitejs/plugin-react": "~5.1.2", - "c8": "^11.0.0", - "cross-env": "~10.1.0", - "es-module-shims": "~2.8.0", - "rimraf": "~6.1.3", - "storybook": "^10.1.8", - "typescript": "~5.9.3", - "vite": "^7.2.7", - "vite-plugin-checker": "^0.12.0", - "vite-plugin-dts": "4.5.4" + "@vitejs/plugin-react": "catalog:", + "c8": "catalog:", + "cross-env": "catalog:", + "es-module-shims": "catalog:", + "rimraf": "catalog:", + "storybook": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "vite-plugin-checker": "catalog:", + "vite-plugin-dts": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/playground/src/editor-command-bar/editor-command-bar.tsx b/packages/playground/src/editor-command-bar/editor-command-bar.tsx index c41ad269ab3..58a198ca0f9 100644 --- a/packages/playground/src/editor-command-bar/editor-command-bar.tsx +++ b/packages/playground/src/editor-command-bar/editor-command-bar.tsx @@ -1,17 +1,24 @@ -import { Link, Toolbar, ToolbarButton, Tooltip } from "@fluentui/react-components"; -import { Broom16Filled, Bug16Regular, Save16Regular } from "@fluentui/react-icons"; -import { useMemo, type FunctionComponent, type ReactNode } from "react"; +import { + Broom16Filled, + Bug16Regular, + Checkmark16Regular, + DocumentBulletList24Regular, + Save16Regular, +} from "@fluentui/react-icons"; +import { useCallback, useMemo, useState, type FunctionComponent } from "react"; import { EmitterDropdown } from "../react/emitter-dropdown.js"; -import { SamplesDrawerTrigger } from "../react/samples-drawer/index.js"; +import type { CommandBarItem } from "../react/responsive-command-bar/index.js"; +import { ResponsiveCommandBar } from "../react/responsive-command-bar/index.js"; +import { SamplesDrawerOverlay, SamplesDrawerTrigger } from "../react/samples-drawer/index.js"; +import { useIsMobile } from "../react/use-mobile.js"; import type { BrowserHost, PlaygroundSample } from "../types.js"; -import style from "./editor-command-bar.module.css"; export interface EditorCommandBarProps { - documentationUrl?: string; saveCode: () => Promise | void; formatCode: () => Promise | void; fileBug?: () => Promise | void; - commandBarButtons?: ReactNode; + /** Additional items provided by the consumer. */ + commandBarItems?: readonly CommandBarItem[]; host: BrowserHost; selectedEmitter: string; onSelectedEmitterChange: (emitter: string) => void; @@ -20,28 +27,22 @@ export interface EditorCommandBarProps { selectedSampleName: string; onSelectedSampleNameChange: (sampleName: string) => void; } -export const EditorCommandBar: FunctionComponent = ({ - documentationUrl, - saveCode, - formatCode, - fileBug, - host, - selectedEmitter, - onSelectedEmitterChange, - samples, - selectedSampleName, - onSelectedSampleNameChange, - commandBarButtons, -}) => { - const documentation = documentationUrl ? ( - - ) : undefined; - const bugButton = fileBug ? : undefined; +export const EditorCommandBar: FunctionComponent = (props) => { + const { + saveCode, + formatCode, + fileBug, + host, + selectedEmitter, + onSelectedEmitterChange, + samples, + onSelectedSampleNameChange, + commandBarItems: externalItems, + } = props; + + const isMobile = useIsMobile(); + const [samplesDrawerOpen, setSamplesDrawerOpen] = useState(false); const emitters = useMemo( () => @@ -51,56 +52,100 @@ export const EditorCommandBar: FunctionComponent = ({ [host.libraries], ); - return ( -
- - - } onClick={saveCode as any} /> - - - } onClick={formatCode as any} /> - - {samples && ( - <> - -
- - )} + const handleFileBug = useCallback(() => { + if (fileBug) void fileBug(); + }, [fileBug]); + + const items = useMemo(() => { + const result: CommandBarItem[] = [ + { + id: "save", + label: "Save", + icon: , + onClick: saveCode as () => void, + pinned: true, + }, + { + id: "format", + label: "Format", + icon: , + onClick: formatCode as () => void, + pinned: true, + }, + ]; + + if (samples) { + result.push({ + id: "samples", + label: "Browse Samples", + icon: , + onClick: () => setSamplesDrawerOpen(true), + toolbarItem: ( + + ), + }); + } + + result.push({ + id: "emitter", + label: "Emitter", + toolbarItem: ( + ), + children: emitters.map((emitter) => ({ + id: `emitter-${emitter}`, + label: emitter, + icon: emitter === selectedEmitter ? : undefined, + onClick: () => onSelectedEmitterChange(emitter), + })), + }); - {documentation && ( - <> -
- {documentation} - - )} -
- {commandBarButtons} - {bugButton} -
-
- ); -}; + if (externalItems) { + result.push(...externalItems); + } + + if (fileBug) { + result.push({ + id: "file-bug", + label: "File Bug", + align: "right", + icon: , + onClick: handleFileBug, + }); + } + + return result; + }, [ + saveCode, + formatCode, + samples, + onSelectedSampleNameChange, + emitters, + selectedEmitter, + onSelectedEmitterChange, + externalItems, + fileBug, + handleFileBug, + ]); -interface FileBugButtonProps { - onClick: () => Promise | void; -} -const FileBugButton: FunctionComponent = ({ onClick }) => { return ( - - } - onClick={onClick as any} - > - + <> + + {isMobile && samples && ( + + )} + ); }; diff --git a/packages/playground/src/react/breadcrumb/file-breadcrumb.module.css b/packages/playground/src/react/breadcrumb/file-breadcrumb.module.css new file mode 100644 index 00000000000..aeafcebf9f6 --- /dev/null +++ b/packages/playground/src/react/breadcrumb/file-breadcrumb.module.css @@ -0,0 +1,27 @@ +.breadcrumb { + display: flex; + align-items: center; + padding: 4px 12px; + font-size: 12px; + height: 26px; + border-bottom: 1px solid var(--colorNeutralStroke1); + background: var(--colorNeutralBackground1); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + flex-shrink: 0; +} + +.segment { + display: inline-flex; + align-items: center; +} + +.separator { + margin: 0 4px; + color: var(--colorNeutralForeground4); +} + +.current { + font-weight: 600; +} diff --git a/packages/playground/src/react/breadcrumb/file-breadcrumb.tsx b/packages/playground/src/react/breadcrumb/file-breadcrumb.tsx new file mode 100644 index 00000000000..2b915e80132 --- /dev/null +++ b/packages/playground/src/react/breadcrumb/file-breadcrumb.tsx @@ -0,0 +1,27 @@ +import type { FunctionComponent } from "react"; +import style from "./file-breadcrumb.module.css"; + +export interface FileBreadcrumbProps { + readonly path: string; +} + +export const FileBreadcrumb: FunctionComponent = ({ path }) => { + if (!path || !path.includes("/")) { + return null; + } + + const segments = path.split("/"); + + return ( +
+ {segments.map((segment, index) => ( + + {index > 0 && /} + + {segment} + + + ))} +
+ ); +}; diff --git a/packages/playground/src/react/breadcrumb/index.ts b/packages/playground/src/react/breadcrumb/index.ts new file mode 100644 index 00000000000..22e93bb4007 --- /dev/null +++ b/packages/playground/src/react/breadcrumb/index.ts @@ -0,0 +1 @@ +export { FileBreadcrumb, type FileBreadcrumbProps } from "./file-breadcrumb.js"; diff --git a/packages/playground/src/react/file-tree/file-tree.module.css b/packages/playground/src/react/file-tree/file-tree.module.css new file mode 100644 index 00000000000..885dcf573fb --- /dev/null +++ b/packages/playground/src/react/file-tree/file-tree.module.css @@ -0,0 +1,6 @@ +.file-tree { + height: 100%; + overflow: auto; + background: var(--colorNeutralBackground3); + padding-top: 4px; +} diff --git a/packages/playground/src/react/file-tree/file-tree.tsx b/packages/playground/src/react/file-tree/file-tree.tsx new file mode 100644 index 00000000000..22e799bbeed --- /dev/null +++ b/packages/playground/src/react/file-tree/file-tree.tsx @@ -0,0 +1,107 @@ +import { Tree, type TreeNode } from "@typespec/react-components"; +import { useMemo, type FC, type FunctionComponent } from "react"; +import style from "./file-tree.module.css"; + +import { DocumentRegular, FolderRegular } from "@fluentui/react-icons"; + +export interface FileTreeExplorerProps { + readonly files: string[]; + readonly selected: string; + readonly onSelect: (file: string) => void; +} + +interface FileTreeNode extends TreeNode { + readonly isDirectory: boolean; +} + +const FileNodeIcon: FC<{ node: FileTreeNode }> = ({ node }) => { + if (node.isDirectory) { + return ; + } + return ; +}; + +/** + * Builds a tree structure from a flat list of file paths. + */ +function buildTree(files: string[]): FileTreeNode { + const root: FileTreeNode = { id: "__root__", name: "root", isDirectory: true, children: [] }; + const dirMap = new Map(); + dirMap.set("", root); + + function ensureDir(dirPath: string): FileTreeNode { + if (dirMap.has(dirPath)) { + return dirMap.get(dirPath)!; + } + const parts = dirPath.split("/"); + const parentPath = parts.slice(0, -1).join("/"); + const parent = ensureDir(parentPath); + const node: FileTreeNode = { + id: dirPath, + name: parts[parts.length - 1], + isDirectory: true, + children: [], + }; + dirMap.set(dirPath, node); + (parent.children as FileTreeNode[]).push(node); + return node; + } + + for (const file of [...files].sort()) { + const lastSlash = file.lastIndexOf("/"); + if (lastSlash === -1) { + (root.children as FileTreeNode[]).push({ + id: file, + name: file, + isDirectory: false, + }); + } else { + const dirPath = file.substring(0, lastSlash); + const fileName = file.substring(lastSlash + 1); + const parent = ensureDir(dirPath); + (parent.children as FileTreeNode[]).push({ + id: file, + name: fileName, + isDirectory: false, + }); + } + } + + // Sort children: directories first, then files, alphabetically within each group + function sortChildren(node: FileTreeNode) { + if (node.children) { + (node.children as FileTreeNode[]).sort((a, b) => { + if (a.isDirectory !== b.isDirectory) { + return a.isDirectory ? -1 : 1; + } + return String(a.name).localeCompare(String(b.name)); + }); + for (const child of node.children as FileTreeNode[]) { + sortChildren(child); + } + } + } + sortChildren(root); + + return root; +} + +export const FileTreeExplorer: FunctionComponent = ({ + files, + selected, + onSelect, +}) => { + const tree = useMemo(() => buildTree(files), [files]); + + return ( +
+ + tree={tree} + selectionMode="single" + selected={selected} + onSelect={onSelect} + nodeIcon={FileNodeIcon} + /> +
+ ); +}; diff --git a/packages/playground/src/react/file-tree/index.ts b/packages/playground/src/react/file-tree/index.ts new file mode 100644 index 00000000000..c8022943d20 --- /dev/null +++ b/packages/playground/src/react/file-tree/index.ts @@ -0,0 +1 @@ +export { FileTreeExplorer, type FileTreeExplorerProps } from "./file-tree.js"; diff --git a/packages/playground/src/react/index.ts b/packages/playground/src/react/index.ts index 78571a7f948..e0894f80339 100644 --- a/packages/playground/src/react/index.ts +++ b/packages/playground/src/react/index.ts @@ -1,3 +1,4 @@ +export type { CommandBarItem } from "../react/responsive-command-bar/index.js"; export { usePlaygroundContext } from "./context/index.js"; export { DiagnosticList } from "./diagnostic-list/diagnostic-list.js"; export type { DiagnosticListProps } from "./diagnostic-list/diagnostic-list.js"; diff --git a/packages/playground/src/react/output-view/file-viewer.tsx b/packages/playground/src/react/output-view/file-viewer.tsx index 185b06de290..c65c3a02624 100644 --- a/packages/playground/src/react/output-view/file-viewer.tsx +++ b/packages/playground/src/react/output-view/file-viewer.tsx @@ -1,6 +1,9 @@ import { FolderListRegular } from "@fluentui/react-icons"; -import { useCallback, useEffect, useState } from "react"; +import { Pane, SplitPane } from "@typespec/react-components"; +import { useCallback, useEffect, useMemo, useState } from "react"; +import { FileBreadcrumb } from "../breadcrumb/index.js"; import { FileOutput } from "../file-output/file-output.js"; +import { FileTreeExplorer } from "../file-tree/index.js"; import { OutputTabs } from "../output-tabs/output-tabs.js"; import type { FileOutputViewer, OutputViewerProps, ProgramViewer } from "../types.js"; @@ -14,6 +17,13 @@ const FileViewerComponent = ({ const [filename, setFilename] = useState(""); const [content, setContent] = useState(""); + const showFileTree = useMemo( + () => + outputFiles.length > 1 && + (outputFiles.some((f) => f.includes("/")) || outputFiles.length >= 3), + [outputFiles], + ); + const loadOutputFile = useCallback( async (path: string) => { const contents = await program.host.readFile("./tsp-output/" + path); @@ -33,21 +43,48 @@ const FileViewerComponent = ({ } }, [program, outputFiles, loadOutputFile, filename]); - const handleTabSelection = useCallback( + const handleFileSelection = useCallback( (newFilename: string) => { - setFilename(newFilename); - void loadOutputFile(newFilename); + // Only select files, not directories + if (outputFiles.includes(newFilename)) { + setFilename(newFilename); + void loadOutputFile(newFilename); + } }, - [loadOutputFile], + [loadOutputFile, outputFiles], ); if (outputFiles.length === 0) { return <>No files emitted.; } + if (showFileTree) { + return ( +
+ + + + + +
+ +
+ +
+
+
+
+
+ ); + } + return (
- +
diff --git a/packages/playground/src/react/output-view/output-view.module.css b/packages/playground/src/react/output-view/output-view.module.css index 7dd38706938..b6bd903e0ef 100644 --- a/packages/playground/src/react/output-view/output-view.module.css +++ b/packages/playground/src/react/output-view/output-view.module.css @@ -18,6 +18,17 @@ min-height: 0; } +.file-viewer-content-with-breadcrumb { + display: flex; + flex-direction: column; + height: 100%; +} + +.file-viewer-content-with-breadcrumb .file-viewer-content { + flex: 1; + min-height: 0; +} + .type-graph-viewer { height: 100%; overflow-y: auto; diff --git a/packages/playground/src/react/playground.module.css b/packages/playground/src/react/playground.module.css index 6f6b9ac94d7..52a4c5aaee8 100644 --- a/packages/playground/src/react/playground.module.css +++ b/packages/playground/src/react/playground.module.css @@ -10,3 +10,10 @@ display: flex; flex-direction: column; } + +.single-pane { + display: flex; + flex-direction: column; + height: 100%; + width: 100%; +} diff --git a/packages/playground/src/react/playground.tsx b/packages/playground/src/react/playground.tsx index 43040743f1c..4598b46ddf2 100644 --- a/packages/playground/src/react/playground.tsx +++ b/packages/playground/src/react/playground.tsx @@ -26,8 +26,11 @@ import { useMonacoModel, type OnMountData } from "./editor.js"; import { OutputView } from "./output-view/output-view.js"; import style from "./playground.module.css"; import { ProblemPane } from "./problem-pane/index.js"; +import type { CommandBarItem } from "./responsive-command-bar/index.js"; import type { CompilationState, FileOutputViewer, ProgramViewer } from "./types.js"; +import { useIsMobile } from "./use-mobile.js"; import { usePlaygroundState, type PlaygroundState } from "./use-playground-state.js"; +import { ViewToggle, type ViewMode } from "./view-toggle.js"; // Re-export the PlaygroundState type for convenience export type { PlaygroundState }; @@ -59,11 +62,8 @@ export interface PlaygroundProps { onFileBug?: () => void; - /** Additional buttons to show up in the command bar */ - commandBarButtons?: ReactNode; - - /** Playground links */ - links?: PlaygroundLinks; + /** Additional items to show in the command bar. */ + commandBarItems?: CommandBarItem[]; /** Custom viewers to view the typespec program */ viewers?: ProgramViewer[]; @@ -93,11 +93,6 @@ export interface PlaygroundSaveData extends PlaygroundState { emitter: string; } -export interface PlaygroundLinks { - /** Link to documentation */ - documentationUrl?: string; -} - /** * Playground component for TypeSpec with consolidated state management. * @@ -330,56 +325,81 @@ export const Playground: FunctionComponent = (props) => { }; }, [host, typespecModel, onContentChange]); + const isMobile = useIsMobile(); + const [viewMode, setViewMode] = useState("editor"); + + // Reset to "editor" when entering mobile, force "both" on desktop + useEffect(() => { + if (!isMobile) { + setViewMode("both"); + } else { + setViewMode("editor"); + } + }, [isMobile]); + + const commandBar = ( + + ); + + const editorPanel = ( + + ); + + const outputPanel = ( + + ); + + const mainContent = + viewMode === "both" ? ( + + {editorPanel} + {outputPanel} + + ) : viewMode === "editor" ? ( +
{editorPanel}
+ ) : ( +
{outputPanel}
+ ); + return (
+ {isMobile && ( + + )} - - - - - } - /> - - - - - - + {mainContent} void; + /** If true, always visible as an icon button. If false (default), goes to overflow menu on mobile. */ + readonly pinned?: boolean; + /** Sub-items rendered as a dropdown (desktop) or nested submenu (mobile). */ + readonly children?: readonly CommandBarItem[]; + /** Additional content rendered alongside the command bar (e.g., dialogs triggered by children). */ + readonly content?: ReactNode; + /** Custom toolbar element for desktop rendering. Overrides default and children-based rendering. */ + readonly toolbarItem?: ReactNode; + /** Custom menu element for mobile overflow menu. Overrides default and children-based rendering. */ + readonly menuItem?: ReactNode; + /** Alignment group on the desktop toolbar. Defaults to "left". */ + readonly align?: "left" | "right"; +} + +export interface ResponsiveCommandBarProps { + /** The items to render in the command bar. */ + readonly items: readonly CommandBarItem[]; + /** Whether to render in mobile (compact) mode. */ + readonly isMobile: boolean; +} + +/** + * A generic responsive command bar that renders items as a toolbar on desktop + * and collapses non-pinned items into a hamburger overflow menu on mobile. + */ +export const ResponsiveCommandBar: FunctionComponent = ({ + items, + isMobile, +}) => { + const pinnedItems = items.filter((i) => i.pinned); + const overflowItems = items.filter((i) => !i.pinned); + const leftItems = items.filter((i) => (i.align ?? "left") === "left"); + const rightItems = items.filter((i) => i.align === "right"); + const leftOverflow = overflowItems.filter((i) => (i.align ?? "left") === "left"); + const rightOverflow = overflowItems.filter((i) => i.align === "right"); + + return ( +
+ + {isMobile ? ( + <> + {pinnedItems.map((item) => ( + + ))} + {overflowItems.length > 0 && ( + <> +
+ + + + } + appearance="subtle" + /> + + + + + {leftOverflow.map((item) => ( + + ))} + {leftOverflow.length > 0 && rightOverflow.length > 0 && } + {rightOverflow.map((item) => ( + + ))} + + + + + )} + + ) : ( + <> + {leftItems.map((item) => ( + + ))} + {rightItems.length > 0 &&
} + {rightItems.map((item) => ( + + ))} + + )} + + {items.map((item) => item.content && {item.content})} +
+ ); +}; + +const ToolbarItemRenderer: FunctionComponent<{ item: CommandBarItem }> = ({ item }) => { + if (item.toolbarItem) return <>{item.toolbarItem}; + if (item.children) { + return ( + + + + + + + + + {item.children.map((child) => ( + + {child.label} + + ))} + + + + ); + } + return ( + + + + ); +}; + +const MenuItemRenderer: FunctionComponent<{ item: CommandBarItem }> = ({ item }) => { + if (item.menuItem) return <>{item.menuItem}; + if (item.children) { + return ( + + + {item.label} + + + + {item.children.map((child) => ( + + {child.label} + + ))} + + + + ); + } + return ( + + {item.label} + + ); +}; diff --git a/packages/playground/src/react/samples-drawer/index.ts b/packages/playground/src/react/samples-drawer/index.ts index a33875b17a5..aa039ba7f91 100644 --- a/packages/playground/src/react/samples-drawer/index.ts +++ b/packages/playground/src/react/samples-drawer/index.ts @@ -1 +1,6 @@ -export { SamplesDrawerTrigger, type SamplesDrawerProps } from "./samples-drawer-trigger.js"; +export { + SamplesDrawerOverlay, + SamplesDrawerTrigger, + type SamplesDrawerOverlayProps, + type SamplesDrawerProps, +} from "./samples-drawer-trigger.js"; diff --git a/packages/playground/src/react/samples-drawer/samples-drawer-trigger.tsx b/packages/playground/src/react/samples-drawer/samples-drawer-trigger.tsx index 68db54f0b37..ff03d07a284 100644 --- a/packages/playground/src/react/samples-drawer/samples-drawer-trigger.tsx +++ b/packages/playground/src/react/samples-drawer/samples-drawer-trigger.tsx @@ -4,11 +4,13 @@ import { DrawerHeader, DrawerHeaderTitle, OverlayDrawer, + SearchBox, + Text, ToolbarButton, Tooltip, } from "@fluentui/react-components"; import { Dismiss24Regular, DocumentBulletList24Regular } from "@fluentui/react-icons"; -import { useCallback, useState, type FunctionComponent } from "react"; +import { useCallback, useMemo, useState, type FunctionComponent } from "react"; import type { PlaygroundSample } from "../../types.js"; import { SampleCard } from "./sample-card.js"; import style from "./samples-drawer.module.css"; @@ -18,20 +20,149 @@ export interface SamplesDrawerProps { onSelectedSampleNameChange: (sampleName: string) => void; } -export const SamplesDrawerTrigger: FunctionComponent = ({ +export interface SamplesDrawerOverlayProps extends SamplesDrawerProps { + open: boolean; + onOpenChange: (open: boolean) => void; +} + +interface SampleCategory { + name: string; + entries: [string, PlaygroundSample][]; +} + +function groupAndFilterSamples( + samples: Record, + searchQuery: string, +): SampleCategory[] { + const query = searchQuery.toLowerCase().trim(); + const categoryMap = new Map(); + + for (const [name, sample] of Object.entries(samples)) { + if (query) { + const matchesName = name.toLowerCase().includes(query); + const matchesDescription = sample.description?.toLowerCase().includes(query); + const matchesCategory = sample.category?.toLowerCase().includes(query); + if (!matchesName && !matchesDescription && !matchesCategory) continue; + } + + const category = sample.category ?? "Other"; + let entries = categoryMap.get(category); + if (!entries) { + entries = []; + categoryMap.set(category, entries); + } + entries.push([name, sample]); + } + + return Array.from(categoryMap.entries()) + .map(([name, entries]) => ({ name, entries })) + .sort((a, b) => a.name.localeCompare(b.name)); +} + +/** The overlay drawer showing the sample gallery. Controlled via open/onOpenChange. */ +export const SamplesDrawerOverlay: FunctionComponent = ({ samples, onSelectedSampleNameChange, + open, + onOpenChange, }) => { - const [isOpen, setIsOpen] = useState(false); + const [searchQuery, setSearchQuery] = useState(""); const handleSampleSelect = useCallback( (sampleName: string) => { onSelectedSampleNameChange(sampleName); - setIsOpen(false); + onOpenChange(false); }, - [onSelectedSampleNameChange], + [onSelectedSampleNameChange, onOpenChange], + ); + + const categories = useMemo( + () => groupAndFilterSamples(samples, searchQuery), + [samples, searchQuery], + ); + const hasCategories = useMemo(() => Object.values(samples).some((s) => s.category), [samples]); + const totalFiltered = useMemo( + () => categories.reduce((sum, c) => sum + c.entries.length, 0), + [categories], ); + return ( + { + onOpenChange(data.open); + if (!data.open) setSearchQuery(""); + }} + position="end" + size="large" + > + + } + onClick={() => onOpenChange(false)} + /> + } + > + Sample Gallery + + + +
+ setSearchQuery(data.value)} + className={style["search-input"]} + /> +
+ + {totalFiltered === 0 ? ( +
+ No samples match your search. +
+ ) : hasCategories ? ( + categories.map((category) => ( +
+ + {category.name} + +
+ {category.entries.map(([name, sample]) => ( + + ))} +
+
+ )) + ) : ( +
+ {categories.flatMap((c) => + c.entries.map(([name, sample]) => ( + + )), + )} +
+ )} +
+
+ ); +}; + +/** Toolbar button trigger + overlay drawer for samples. */ +export const SamplesDrawerTrigger: FunctionComponent = ({ + samples, + onSelectedSampleNameChange, +}) => { + const [isOpen, setIsOpen] = useState(false); + return ( <> @@ -44,34 +175,12 @@ export const SamplesDrawerTrigger: FunctionComponent = ({ - setIsOpen(data.open)} - position="end" - size="large" - > - - } - onClick={() => setIsOpen(false)} - /> - } - > - Sample Gallery - - - -
- {Object.entries(samples).map(([name, sample]) => ( - - ))} -
-
-
+ onOpenChange={setIsOpen} + /> ); }; diff --git a/packages/playground/src/react/samples-drawer/samples-drawer.module.css b/packages/playground/src/react/samples-drawer/samples-drawer.module.css index bfdf344f597..cbbde84c94c 100644 --- a/packages/playground/src/react/samples-drawer/samples-drawer.module.css +++ b/packages/playground/src/react/samples-drawer/samples-drawer.module.css @@ -1,3 +1,32 @@ +.samples-search { + padding: 0 0 16px 0; + position: sticky; + top: 0; + z-index: 1; + background: var(--colorNeutralBackground1); +} + +.search-input { + width: 100%; +} + +.samples-category { + margin-bottom: 24px; +} + +.category-title { + font-size: var(--fontSizeBase400); + margin: 0 0 12px 0; + color: var(--colorNeutralForeground1); +} + +.samples-empty { + display: flex; + justify-content: center; + padding: 48px 16px; + color: var(--colorNeutralForeground3); +} + .samples-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); diff --git a/packages/playground/src/react/use-mobile.ts b/packages/playground/src/react/use-mobile.ts new file mode 100644 index 00000000000..6da4e1fb2d4 --- /dev/null +++ b/packages/playground/src/react/use-mobile.ts @@ -0,0 +1,27 @@ +import { useCallback, useEffect, useState } from "react"; + +const MobileBreakpoint = 768; + +/** + * Hook that detects whether the viewport is at or below the mobile breakpoint. + * Uses `matchMedia` with a listener for responsive changes. + */ +export function useIsMobile(): boolean { + const query = `(max-width: ${MobileBreakpoint}px)`; + + const getMatch = useCallback(() => { + return typeof window !== "undefined" ? window.matchMedia(query).matches : false; + }, [query]); + + const [isMobile, setIsMobile] = useState(getMatch); + + useEffect(() => { + const mql = window.matchMedia(query); + const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches); + mql.addEventListener("change", handler); + setIsMobile(mql.matches); + return () => mql.removeEventListener("change", handler); + }, [query]); + + return isMobile; +} diff --git a/packages/playground/src/react/view-toggle.module.css b/packages/playground/src/react/view-toggle.module.css new file mode 100644 index 00000000000..e45cc1be49a --- /dev/null +++ b/packages/playground/src/react/view-toggle.module.css @@ -0,0 +1,17 @@ +.view-toggle-bar { + display: flex; + align-items: center; + padding: 0 4px; + border-bottom: 1px solid var(--colorNeutralStroke1); + background-color: var(--colorNeutralBackground1); + flex-shrink: 0; +} + +.view-toggle-tabs { + min-height: auto; +} + +.view-toggle-actions { + margin-left: auto; + overflow: hidden; +} diff --git a/packages/playground/src/react/view-toggle.tsx b/packages/playground/src/react/view-toggle.tsx new file mode 100644 index 00000000000..ebf4bdaa4c1 --- /dev/null +++ b/packages/playground/src/react/view-toggle.tsx @@ -0,0 +1,47 @@ +import { Tab, TabList, type SelectTabEventHandler } from "@fluentui/react-components"; +import { useCallback, type FunctionComponent, type ReactNode } from "react"; +import style from "./view-toggle.module.css"; + +export type ViewMode = "editor" | "output" | "both"; + +export interface ViewToggleProps { + viewMode: ViewMode; + onViewModeChange: (mode: ViewMode) => void; + /** Additional toolbar actions rendered on the right side of the bar. */ + actions?: ReactNode; +} + +export const ViewToggle: FunctionComponent = ({ + viewMode, + onViewModeChange, + actions, +}) => { + const onTabSelect = useCallback( + (_, data) => { + onViewModeChange(data.value as ViewMode); + }, + [onViewModeChange], + ); + + return ( +
+ + + TSP + + + Both + + + Output + + + {actions &&
{actions}
} +
+ ); +}; diff --git a/packages/playground/src/types.ts b/packages/playground/src/types.ts index f9431be5236..f665e097bec 100644 --- a/packages/playground/src/types.ts +++ b/packages/playground/src/types.ts @@ -16,6 +16,11 @@ export interface PlaygroundSample { */ description?: string; + /** + * Category for grouping samples in the sample gallery. + */ + category?: string; + /** * Compiler options for the sample. */ diff --git a/packages/playground/src/vite/index.ts b/packages/playground/src/vite/index.ts index 526510ae134..9d81d898c4c 100644 --- a/packages/playground/src/vite/index.ts +++ b/packages/playground/src/vite/index.ts @@ -20,9 +20,6 @@ export function definePlaygroundViteConfig(config: PlaygroundUserConfig): UserCo }, }, }, - esbuild: { - logOverride: { "this-is-undefined-in-esm": "silent" }, - }, assetsInclude: [/\.tsp$/], optimizeDeps: { exclude: ["swagger-ui"], diff --git a/packages/playground/src/vite/types.ts b/packages/playground/src/vite/types.ts index ace8aebf3ff..34bff44b122 100644 --- a/packages/playground/src/vite/types.ts +++ b/packages/playground/src/vite/types.ts @@ -1,4 +1,3 @@ -import type { PlaygroundLinks } from "../react/playground.js"; import type { PlaygroundSampleConfig } from "../tooling/types.js"; import type { PlaygroundSample } from "../types.js"; @@ -14,5 +13,4 @@ export interface PlaygroundConfig { readonly defaultEmitter: string; readonly libraries: readonly string[]; readonly samples: Record; - readonly links?: PlaygroundLinks; } diff --git a/packages/playground/test/responsive-command-bar.test.tsx b/packages/playground/test/responsive-command-bar.test.tsx new file mode 100644 index 00000000000..d6869fd3f96 --- /dev/null +++ b/packages/playground/test/responsive-command-bar.test.tsx @@ -0,0 +1,201 @@ +import { FluentProvider, webLightTheme } from "@fluentui/react-components"; +import { fireEvent, render, screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { + ResponsiveCommandBar, + type CommandBarItem, +} from "../src/react/responsive-command-bar/index.js"; + +function renderBar(items: CommandBarItem[], isMobile = false) { + return render( + + + , + ); +} + +describe("ResponsiveCommandBar", () => { + describe("desktop mode", () => { + it("renders all items as toolbar buttons", () => { + const items: CommandBarItem[] = [ + { id: "save", label: "Save", onClick: vi.fn() }, + { id: "format", label: "Format", onClick: vi.fn() }, + ]; + renderBar(items, false); + expect(screen.getByLabelText("Save")).toBeInTheDocument(); + expect(screen.getByLabelText("Format")).toBeInTheDocument(); + }); + + it("renders left items before right items with a divider between", () => { + const items: CommandBarItem[] = [ + { id: "left1", label: "Left One", onClick: vi.fn() }, + { id: "right1", label: "Right One", onClick: vi.fn(), align: "right" }, + ]; + renderBar(items, false); + expect(screen.getByLabelText("Left One")).toBeInTheDocument(); + expect(screen.getByLabelText("Right One")).toBeInTheDocument(); + }); + + it("calls onClick when a toolbar button is clicked", () => { + const onClick = vi.fn(); + renderBar([{ id: "action", label: "Action", onClick }], false); + fireEvent.click(screen.getByLabelText("Action")); + expect(onClick).toHaveBeenCalledOnce(); + }); + + it("renders custom toolbarItem when provided", () => { + const items: CommandBarItem[] = [ + { + id: "custom", + label: "Custom", + toolbarItem: , + }, + ]; + renderBar(items, false); + expect(screen.getByTestId("custom-btn")).toBeInTheDocument(); + }); + + it("renders children as a dropdown menu", () => { + const childClick = vi.fn(); + const items: CommandBarItem[] = [ + { + id: "parent", + label: "Parent", + children: [{ id: "child1", label: "Child One", onClick: childClick }], + }, + ]; + renderBar(items, false); + // The parent renders as a button with aria-label + const trigger = screen.getByLabelText("Parent"); + fireEvent.click(trigger); + // After clicking, the dropdown should show the child + expect(screen.getByText("Child One")).toBeInTheDocument(); + fireEvent.click(screen.getByText("Child One")); + expect(childClick).toHaveBeenCalledOnce(); + }); + }); + + describe("mobile mode", () => { + it("renders pinned items directly and overflow in a menu", () => { + const items: CommandBarItem[] = [ + { id: "pinned", label: "Pinned", onClick: vi.fn(), pinned: true }, + { id: "overflow", label: "Overflow Item", onClick: vi.fn() }, + ]; + renderBar(items, true); + // Pinned item is directly visible + expect(screen.getByLabelText("Pinned")).toBeInTheDocument(); + // Overflow item is hidden behind the hamburger + expect(screen.queryByText("Overflow Item")).not.toBeInTheDocument(); + // Open the hamburger menu + fireEvent.click(screen.getByLabelText("More actions")); + expect(screen.getByText("Overflow Item")).toBeInTheDocument(); + }); + + it("calls onClick on overflow menu item click", () => { + const onClick = vi.fn(); + const items: CommandBarItem[] = [{ id: "action", label: "Action", onClick }]; + renderBar(items, true); + fireEvent.click(screen.getByLabelText("More actions")); + fireEvent.click(screen.getByText("Action")); + expect(onClick).toHaveBeenCalledOnce(); + }); + + it("renders a divider between left and right overflow items", () => { + const items: CommandBarItem[] = [ + { id: "left", label: "Left Item", onClick: vi.fn() }, + { id: "right", label: "Right Item", onClick: vi.fn(), align: "right" }, + ]; + const { container } = renderBar(items, true); + fireEvent.click(screen.getByLabelText("More actions")); + // Both items should be visible in the menu + expect(screen.getByText("Left Item")).toBeInTheDocument(); + expect(screen.getByText("Right Item")).toBeInTheDocument(); + // MenuDivider renders as an element with role="separator" + const divider = container.ownerDocument.querySelector( + "[class*='fui-MenuDivider'], [role='separator']", + ); + expect(divider).toBeTruthy(); + }); + + it("does not render divider when all overflow items are on the same side", () => { + const items: CommandBarItem[] = [ + { id: "a", label: "Item A", onClick: vi.fn() }, + { id: "b", label: "Item B", onClick: vi.fn() }, + ]; + renderBar(items, true); + fireEvent.click(screen.getByLabelText("More actions")); + const menuPopover = screen.getByText("Item A").closest("[role='menu']"); + expect(menuPopover?.querySelector("[role='separator']")).not.toBeInTheDocument(); + }); + + it("renders custom menuItem when provided", () => { + const items: CommandBarItem[] = [ + { + id: "custom", + label: "Custom", + menuItem:
Custom Menu Content
, + }, + ]; + renderBar(items, true); + fireEvent.click(screen.getByLabelText("More actions")); + expect(screen.getByTestId("custom-menu")).toBeInTheDocument(); + }); + + it("does not show hamburger when all items are pinned", () => { + const items: CommandBarItem[] = [ + { id: "a", label: "A", onClick: vi.fn(), pinned: true }, + { id: "b", label: "B", onClick: vi.fn(), pinned: true }, + ]; + renderBar(items, true); + expect(screen.queryByLabelText("More actions")).not.toBeInTheDocument(); + }); + + it("renders children as a nested submenu in overflow", () => { + const childClick = vi.fn(); + const items: CommandBarItem[] = [ + { + id: "parent", + label: "Parent", + children: [{ id: "child", label: "Nested Child", onClick: childClick }], + }, + ]; + renderBar(items, true); + fireEvent.click(screen.getByLabelText("More actions")); + // Parent appears as a menu item that triggers a submenu + const parentItem = screen.getByText("Parent"); + expect(parentItem).toBeInTheDocument(); + fireEvent.click(parentItem); + expect(screen.getByText("Nested Child")).toBeInTheDocument(); + fireEvent.click(screen.getByText("Nested Child")); + expect(childClick).toHaveBeenCalledOnce(); + }); + }); + + describe("content rendering", () => { + it("renders item content outside the toolbar", () => { + const items: CommandBarItem[] = [ + { + id: "with-content", + label: "Item", + onClick: vi.fn(), + content:
Extra
, + }, + ]; + renderBar(items, false); + expect(screen.getByTestId("extra-content")).toBeInTheDocument(); + }); + + it("renders content in mobile mode too", () => { + const items: CommandBarItem[] = [ + { + id: "with-content", + label: "Item", + onClick: vi.fn(), + content:
Mobile Extra
, + }, + ]; + renderBar(items, true); + expect(screen.getByTestId("mobile-content")).toBeInTheDocument(); + }); + }); +}); diff --git a/packages/playground/test/setup.ts b/packages/playground/test/setup.ts new file mode 100644 index 00000000000..e26219327da --- /dev/null +++ b/packages/playground/test/setup.ts @@ -0,0 +1,7 @@ +import "@testing-library/jest-dom/vitest"; +import { cleanup } from "@testing-library/react"; +import { afterEach } from "vitest"; + +afterEach(() => { + cleanup(); +}); diff --git a/packages/playground/tsconfig.json b/packages/playground/tsconfig.json index eb96db71ba9..2b6c4756fe3 100644 --- a/packages/playground/tsconfig.json +++ b/packages/playground/tsconfig.json @@ -14,5 +14,6 @@ "jsx": "react-jsx", "lib": ["DOM"] }, + "exclude": ["test", "vitest.config.ts"], "references": [{ "path": "../compiler/tsconfig.json" }] } diff --git a/packages/playground/vite.config.ts b/packages/playground/vite.config.ts index 2b894969faf..0d25404b079 100644 --- a/packages/playground/vite.config.ts +++ b/packages/playground/vite.config.ts @@ -44,9 +44,6 @@ export default defineConfig({ external: (id) => externals.some((x) => id.startsWith(x)), }, }, - esbuild: { - logOverride: { "this-is-undefined-in-esm": "silent" }, - }, assetsInclude: [/\.tsp$/], optimizeDeps: {}, plugins: [ diff --git a/packages/playground/vitest.config.ts b/packages/playground/vitest.config.ts new file mode 100644 index 00000000000..127225407fb --- /dev/null +++ b/packages/playground/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig, mergeConfig } from "vitest/config"; +import { defaultTypeSpecVitestConfig } from "../../vitest.config.js"; + +export default mergeConfig( + defaultTypeSpecVitestConfig, + defineConfig({ + test: { + environment: "happy-dom", + setupFiles: "./test/setup.ts", + }, + }), +); diff --git a/packages/prettier-plugin-typespec/CHANGELOG.md b/packages/prettier-plugin-typespec/CHANGELOG.md index 1c155299c50..28ed08e5933 100644 --- a/packages/prettier-plugin-typespec/CHANGELOG.md +++ b/packages/prettier-plugin-typespec/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/prettier-plugin-typespec +## 1.11.0 + +No changes, version bump only. + ## 1.10.0 ### Bump dependencies diff --git a/packages/prettier-plugin-typespec/package.json b/packages/prettier-plugin-typespec/package.json index b3726ed728c..28aa43ef674 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": "1.10.0", + "version": "1.11.0", "description": "", "main": "dist/index.js", "type": "module", @@ -14,13 +14,13 @@ "author": "Microsoft Corporation", "license": "MIT", "dependencies": { - "prettier": "~3.8.0" + "prettier": "catalog:" }, "devDependencies": { "@typespec/compiler": "workspace:^", "@typespec/internal-build-utils": "workspace:^", - "esbuild": "^0.27.0", - "vitest": "^4.0.18" + "esbuild": "catalog:", + "vitest": "catalog:" }, "files": [ "dist/**/*", diff --git a/packages/protobuf/CHANGELOG.md b/packages/protobuf/CHANGELOG.md index b063878739e..99baf4db3e0 100644 --- a/packages/protobuf/CHANGELOG.md +++ b/packages/protobuf/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/protobuf +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/protobuf/package.json b/packages/protobuf/package.json index 8dc6af742af..7e7c31b080b 100644 --- a/packages/protobuf/package.json +++ b/packages/protobuf/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/protobuf", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library and emitter for Protobuf (gRPC)", "homepage": "https://github.com/microsoft/typespec", @@ -44,16 +44,16 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/micromatch": "^4.0.9", - "@types/node": "~25.3.0", + "@types/micromatch": "catalog:", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "micromatch": "^4.0.8", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "micromatch": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/react-components/package.json b/packages/react-components/package.json index 7488766cde2..aaa4649629e 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -44,28 +44,28 @@ "!dist/test/**" ], "dependencies": { - "@fluentui/react-components": "~9.73.1", - "@fluentui/react-icons": "^2.0.292", - "react": "~19.2.3", - "react-dom": "~19.2.3" + "@fluentui/react-components": "catalog:", + "@fluentui/react-icons": "catalog:", + "react": "catalog:", + "react-dom": "catalog:" }, "devDependencies": { - "@babel/core": "^7.26.10", - "@testing-library/dom": "^10.4.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", - "@types/node": "~25.3.0", - "@types/react": "~19.2.7", - "@types/react-dom": "~19.2.2", - "@vitejs/plugin-react": "~5.1.2", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vite": "^7.2.7", - "vite-plugin-checker": "^0.12.0", - "vite-plugin-dts": "4.5.4", - "vitest": "^4.0.18" + "@babel/core": "catalog:", + "@testing-library/dom": "catalog:", + "@testing-library/jest-dom": "catalog:", + "@testing-library/react": "catalog:", + "@types/node": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@vitejs/plugin-react": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "vite-plugin-checker": "catalog:", + "vite-plugin-dts": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/react-components/src/tree/tree.test.tsx b/packages/react-components/src/tree/tree.test.tsx index c7592b95ee4..96e2ee2e697 100644 --- a/packages/react-components/src/tree/tree.test.tsx +++ b/packages/react-components/src/tree/tree.test.tsx @@ -1,5 +1,5 @@ import { fireEvent, render, screen } from "@testing-library/react"; -import { expect, it } from "vitest"; +import { expect, it, vi } from "vitest"; import { Tree } from "./tree.js"; import type { TreeNode } from "./types.js"; @@ -110,3 +110,86 @@ it("use up down arrow to navigate", async () => { fireEvent.keyDown(treeNode, { key: "ArrowDown", code: "ArrowDown" }); expect(treeNode).toHaveAttribute("aria-activedescendant", nodes[0].id); }); + +it("collapse expanded directory by clicking in selectionMode=single", async () => { + render(); + const child1 = await screen.findByText("Child 1"); + + // Click to expand + fireEvent.click(child1); + expect(await screen.findAllByRole("treeitem")).toHaveLength(5); + + // Click again to collapse + fireEvent.click(child1); + const nodes = await screen.findAllByRole("treeitem"); + expect(nodes).toHaveLength(2); + expect(nodes[0]).toHaveAttribute("aria-expanded", "false"); +}); + +it("collapse expanded directory by pressing space in selectionMode=single", async () => { + render(); + const treeNode = await screen.findByRole("tree"); + fireEvent.focus(treeNode); + + // Space to expand (focus defaults to first item: Child 1) + fireEvent.keyDown(treeNode, { key: "Space", code: "Space" }); + expect(await screen.findAllByRole("treeitem")).toHaveLength(5); + + // Space again to collapse (focus stays on Child 1) + fireEvent.keyDown(treeNode, { key: "Space", code: "Space" }); + expect(await screen.findAllByRole("treeitem")).toHaveLength(2); +}); + +it("collapse expanded directory by pressing enter in selectionMode=single", async () => { + render(); + const treeNode = await screen.findByRole("tree"); + fireEvent.focus(treeNode); + + // Enter to expand + fireEvent.keyDown(treeNode, { key: "Enter", code: "Enter" }); + expect(await screen.findAllByRole("treeitem")).toHaveLength(5); + + // Enter again to collapse + fireEvent.keyDown(treeNode, { key: "Enter", code: "Enter" }); + expect(await screen.findAllByRole("treeitem")).toHaveLength(2); +}); + +it("expand-collapse round trip by clicking in selectionMode=single", async () => { + render(); + const child1 = await screen.findByText("Child 1"); + + // Expand + fireEvent.click(child1); + expect(await screen.findAllByRole("treeitem")).toHaveLength(5); + + // Collapse + fireEvent.click(child1); + expect(await screen.findAllByRole("treeitem")).toHaveLength(2); + + // Re-expand + fireEvent.click(child1); + expect(await screen.findAllByRole("treeitem")).toHaveLength(5); +}); + +it("clicking a file in selectionMode=single still selects it", async () => { + const onSelect = vi.fn(); + render(); + + // Expand Child 1 first + const child1 = await screen.findByText("Child 1"); + fireEvent.click(child1); + + // Click a leaf node + const subChild = await screen.findByText("Sub child 1.2"); + fireEvent.click(subChild); + expect(onSelect).toHaveBeenCalledWith("$.child1.2"); +}); + +it("clicking a directory in selectionMode=single fires onSelect", async () => { + const onSelect = vi.fn(); + render(); + + const child1 = await screen.findByText("Child 1"); + fireEvent.click(child1); + expect(onSelect).toHaveBeenCalledWith("$.child1"); +}); diff --git a/packages/react-components/src/tree/tree.tsx b/packages/react-components/src/tree/tree.tsx index a796d807d38..9922f60b4ea 100644 --- a/packages/react-components/src/tree/tree.tsx +++ b/packages/react-components/src/tree/tree.tsx @@ -60,7 +60,15 @@ export function Tree({ const activateRow = useCallback( (row: TreeRow) => { setFocusedIndex(row.index); - if (selectionMode === "none" || selectedKey === row.id) { + if (row.hasChildren) { + // Always toggle expand/collapse for parent nodes regardless of selection state. + // Note: the useEffect that auto-expands selectedKey only re-runs when selectedKey + // changes, so it won't interfere once a directory is already selected. + toggleExpand(row.id); + if (selectionMode === "single") { + setSelectedKey(row.id); + } + } else if (selectionMode === "none" || selectedKey === row.id) { toggleExpand(row.id); } else { expand(row.id); diff --git a/packages/react-components/vite.config.ts b/packages/react-components/vite.config.ts index ee55d277fd9..3ac7393334c 100644 --- a/packages/react-components/vite.config.ts +++ b/packages/react-components/vite.config.ts @@ -26,7 +26,7 @@ export default defineConfig({ }, rollupOptions: { - external: externals, + external: (id) => externals.some((x) => id.startsWith(x)), }, }, plugins: [ diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index a6060f44ca4..4f62bb2bb5b 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/rest +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/rest/package.json b/packages/rest/package.json index b4f5fdd005d..8fa7f4d9c7e 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/rest", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec REST protocol binding", "homepage": "https://typespec.io", @@ -57,16 +57,16 @@ "@typespec/http": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/http": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/samples/package.json b/packages/samples/package.json index 15eff9e3ef0..2d94070ada4 100644 --- a/packages/samples/package.json +++ b/packages/samples/package.json @@ -60,13 +60,13 @@ "@typespec/versioning": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/internal-build-utils": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "cross-env": "~10.1.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "cross-env": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/samples/src/sample-snapshot-testing.ts b/packages/samples/src/sample-snapshot-testing.ts index 88e904b5fa0..19823d56d31 100644 --- a/packages/samples/src/sample-snapshot-testing.ts +++ b/packages/samples/src/sample-snapshot-testing.ts @@ -53,8 +53,9 @@ export function defineSampleSnaphotTests(config: SampleSnapshotTestOptions) { existingSnapshots = await readFilesInDirRecursively(config.outputDir); }); - afterAll(async function (context: Readonly) { - if (context.tasks.some((x) => x.mode === "skip")) { + // eslint-disable-next-line no-empty-pattern + afterAll(async function ({}, { tasks }: Readonly) { + if (tasks.some((x) => x.mode === "skip")) { return; // Not running the full test suite, so don't bother checking snapshots. } diff --git a/packages/samples/test/output/init/@typespec/openapi3/openapi.yaml b/packages/samples/test/output/init/@typespec/openapi3/openapi.yaml index adc5ea85378..6a959730973 100644 --- a/packages/samples/test/output/init/@typespec/openapi3/openapi.yaml +++ b/packages/samples/test/output/init/@typespec/openapi3/openapi.yaml @@ -198,4 +198,3 @@ components: enum: - red - blue - description: '' diff --git a/packages/samples/test/output/todoApp/@typespec/openapi3/openapi.yaml b/packages/samples/test/output/todoApp/@typespec/openapi3/openapi.yaml index 33c096c3a2e..6e67d77c79c 100644 --- a/packages/samples/test/output/todoApp/@typespec/openapi3/openapi.yaml +++ b/packages/samples/test/output/todoApp/@typespec/openapi3/openapi.yaml @@ -487,7 +487,6 @@ components: allOf: - $ref: '#/components/schemas/TodoLabelsMergePatchUpdateOrCreate' nullable: true - description: '' TodoItems.InvalidTodoItem: type: object allOf: diff --git a/packages/samples/test/output/visibility/@typespec/openapi3/openapi.yaml b/packages/samples/test/output/visibility/@typespec/openapi3/openapi.yaml index fb8f7c09b4a..22103605a5e 100644 --- a/packages/samples/test/output/visibility/@typespec/openapi3/openapi.yaml +++ b/packages/samples/test/output/visibility/@typespec/openapi3/openapi.yaml @@ -185,7 +185,6 @@ components: type: array items: $ref: '#/components/schemas/PersonRelativeMergePatchUpdateReplaceOnly' - description: '' PersonMergePatchUpdateReplaceOnly: type: object required: diff --git a/packages/spec-api/CHANGELOG.md b/packages/spec-api/CHANGELOG.md index 13b7706c14c..9aa7ff1b553 100644 --- a/packages/spec-api/CHANGELOG.md +++ b/packages/spec-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @typespec/spec-api +## 0.1.0-alpha.14 + +### Features + +- [#10011](https://github.com/microsoft/typespec/pull/10011) Add matcher framework for flexible value comparison in scenarios. `match.dateTime()` enables semantic datetime comparison that handles precision and timezone differences across languages. + +### Bug Fixes + +- [#9995](https://github.com/microsoft/typespec/pull/9995) Remove prettier used for ValidationError message, in validateXmlBodyEquals. + + ## 0.1.0-alpha.13 ### Bump dependencies diff --git a/packages/spec-api/package.json b/packages/spec-api/package.json index 10ccc001d2d..03692e27cd0 100644 --- a/packages/spec-api/package.json +++ b/packages/spec-api/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/spec-api", - "version": "0.1.0-alpha.13", + "version": "0.1.0-alpha.14", "description": "Spec api to implement mock api", "type": "module", "exports": { @@ -28,20 +28,20 @@ }, "homepage": "https://github.com/microsoft/typespec#readme", "dependencies": { - "deep-equal": "^2.2.0", - "express": "^5.2.1", - "xml2js": "^0.6.2" + "deep-equal": "catalog:", + "express": "catalog:", + "xml2js": "catalog:" }, "devDependencies": { - "@types/deep-equal": "^1.0.1", - "@types/express": "^5.0.6", - "@types/multer": "^2.0.0", - "@types/node": "~25.3.0", - "@types/xml2js": "^0.4.11", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@types/deep-equal": "catalog:", + "@types/express": "catalog:", + "@types/multer": "catalog:", + "@types/node": "catalog:", + "@types/xml2js": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/spec-api/src/expectation.ts b/packages/spec-api/src/expectation.ts index 47176f7a53f..17aa8dadd6a 100644 --- a/packages/spec-api/src/expectation.ts +++ b/packages/spec-api/src/expectation.ts @@ -1,4 +1,4 @@ -import deepEqual from "deep-equal"; +import { matchValues } from "./match-engine.js"; import { validateBodyEmpty, validateBodyEquals, @@ -9,7 +9,7 @@ import { validateRawBodyEquals, validateXmlBodyEquals, } from "./request-validations.js"; -import { CollectionFormat, RequestExt } from "./types.js"; +import { CollectionFormat, RequestExt, Resolver, ResolverConfig } from "./types.js"; import { ValidationError } from "./validation-error.js"; /** @@ -89,18 +89,22 @@ export class RequestExpectation { * @param expected Expected value */ public deepEqual(actual: unknown, expected: unknown, message = "Values not deep equal"): void { - if (!deepEqual(actual, expected, { strict: true })) { - throw new ValidationError(message, expected, actual); + const result = matchValues(actual, expected); + if (!result.pass) { + throw new ValidationError(`${message}: ${result.message}`, expected, actual); } } /** - * Expect the body of the request to be semantically equivalent to the provided XML string. - * The XML declaration prefix will automatically be added to expectedBody. - * @param expectedBody expected value of request body. + * Expect the body of the request to be semantically equivalent to the provided XML. + * Accepts a plain string or a Resolver (e.g. from `xml\`...\``). + * When a Resolver with matchers is provided, matcher-aware comparison is used. + * The XML declaration prefix will automatically be added. + * @param expectedBody expected XML body as a string or Resolver. + * @param config resolver config (required when expectedBody is a Resolver). * @throws {ValidationError} if there is an error. */ - public xmlBodyEquals(expectedBody: string): void { - validateXmlBodyEquals(this.originalRequest, expectedBody); + public xmlBodyEquals(expectedBody: string | Resolver, config?: ResolverConfig): void { + validateXmlBodyEquals(this.originalRequest, expectedBody, config); } } diff --git a/packages/spec-api/src/index.ts b/packages/spec-api/src/index.ts index 68e8d112df5..84f4cb23200 100644 --- a/packages/spec-api/src/index.ts +++ b/packages/spec-api/src/index.ts @@ -1,3 +1,13 @@ +export { + createMatcher, + err, + isMatcher, + match, + matchValues, + ok, + type MatchResult, + type MockValueMatcher, +} from "./matchers/index.js"; export { MockRequest } from "./mock-request.js"; export { BODY_EMPTY_ERROR_MESSAGE, diff --git a/packages/spec-api/src/match-engine.ts b/packages/spec-api/src/match-engine.ts new file mode 100644 index 00000000000..d1e47df77ca --- /dev/null +++ b/packages/spec-api/src/match-engine.ts @@ -0,0 +1,221 @@ +/** + * Matcher framework for Spector mock API validation. + * + * Matchers are special objects that can be placed anywhere in an expected value tree. + * The comparison engine recognizes them and delegates to `matcher.check(actual)` + * instead of doing strict equality — enabling flexible comparisons for types like + * datetime that serialize differently across languages. + */ + +/** Symbol used to identify matcher objects */ +export const MatcherSymbol: unique symbol = Symbol.for("SpectorMatcher"); + +/** Result of a match operation */ +export type MatchResult = { pass: true } | { pass: false; message: string }; + +const OK: MatchResult = Object.freeze({ pass: true }); + +/** Create a passing match result */ +export function ok(): MatchResult { + return OK; +} + +/** Create a failing match result with a message */ +export function err(message: string): MatchResult { + return { pass: false, message }; +} + +/** + * Interface for custom value matchers. + * Implement this to create new matcher types. + */ +export interface MockValueMatcher { + readonly [MatcherSymbol]: true; + /** Check whether the actual value matches the expectation */ + check(actual: unknown, config?: MatcherConfig): MatchResult; + /** The raw value to use when serializing */ + serialize(config?: MatcherConfig): T; + /** @internal Delegates to serialize() for JSON.stringify compatibility */ + toJSON(): T; + /** Human-readable description for debugging */ + toString(): string; +} + +/** Configuration available to matchers at runtime */ +export interface MatcherConfig { + baseUrl: string; +} + +const emptyConfig: MatcherConfig = { baseUrl: "" }; + +interface MatcherImpl { + check(actual: unknown): MatchResult; + serialize(): T; + toString?: () => string; +} + +/** Create a MockValueMatcher with the MatcherSymbol already set. + * Accepts either a plain implementation object (for matchers that don't need config) + * or a factory function `(config) => impl` (for matchers that do). + */ +export function createMatcher( + implOrFactory: MatcherImpl | ((config: MatcherConfig) => MatcherImpl), +): MockValueMatcher { + const resolve = + typeof implOrFactory === "function" + ? (config: MatcherConfig) => implOrFactory(config) + : () => implOrFactory; + return { + [MatcherSymbol]: true, + check(actual: unknown, config?: MatcherConfig): MatchResult { + return resolve(config ?? emptyConfig).check(actual); + }, + serialize(config?: MatcherConfig): T { + return resolve(config ?? emptyConfig).serialize(); + }, + toJSON() { + return resolve(emptyConfig).serialize(); + }, + toString() { + const impl = resolve(emptyConfig); + return impl.toString?.() ?? String(impl.serialize()); + }, + }; +} + +/** Type guard to check if a value is a MockValueMatcher */ +export function isMatcher(value: unknown): value is MockValueMatcher { + return ( + typeof value === "object" && + value !== null && + MatcherSymbol in value && + (value as any)[MatcherSymbol] === true + ); +} + +function formatValue(value: unknown): string { + if (value === null) return "null"; + if (value === undefined) return "undefined"; + if (typeof value === "string") return `"${value}"`; + if (Buffer.isBuffer(value)) return `Buffer(${value.length})`; + if (Array.isArray(value)) return `Array(${value.length})`; + if (typeof value === "object") return JSON.stringify(value); + return String(value); +} + +function pathErr(message: string, path: string): MatchResult { + const prefix = path ? `at ${path}: ` : ""; + return err(`${prefix}${message}`); +} + +/** + * Recursively compares actual vs expected values. + * When a MockValueMatcher is encountered in the expected tree, delegates to matcher.check(). + * Otherwise uses strict equality semantics (same as deep-equal with strict: true). + */ +export function matchValues( + actual: unknown, + expected: unknown, + path: string = "$", + config: MatcherConfig = emptyConfig, +): MatchResult { + if (expected === actual) { + return ok(); + } + + if (isMatcher(expected)) { + const result = expected.check(actual, config); + if (!result.pass) { + return pathErr(result.message, path); + } + return result; + } + + if (typeof expected !== typeof actual) { + return pathErr( + `Type mismatch: expected ${typeof expected} but got ${typeof actual} (${formatValue(actual)})`, + path, + ); + } + + if (expected === null || actual === null) { + return pathErr(`Expected ${formatValue(expected)} but got ${formatValue(actual)}`, path); + } + + if (Array.isArray(expected)) { + if (!Array.isArray(actual)) { + return pathErr(`Expected an array but got ${formatValue(actual)}`, path); + } + if (expected.length !== actual.length) { + return pathErr( + `Array length mismatch: expected ${expected.length} but got ${actual.length}`, + path, + ); + } + for (let i = 0; i < expected.length; i++) { + const result = matchValues(actual[i], expected[i], `${path}[${i}]`, config); + if (!result.pass) { + return result; + } + } + return ok(); + } + + if (Buffer.isBuffer(expected)) { + if (!Buffer.isBuffer(actual)) { + return pathErr(`Expected a Buffer but got ${typeof actual}`, path); + } + if (!expected.equals(actual)) { + return pathErr(`Buffer contents differ`, path); + } + return ok(); + } + + if (typeof expected === "object") { + const expectedObj = expected as Record; + const actualObj = actual as Record; + + // Keys with undefined values in expected mean "must not be present in actual" + const expectedPresentKeys = Object.keys(expectedObj).filter( + (k) => expectedObj[k] !== undefined, + ); + const expectedAbsentKeys = Object.keys(expectedObj).filter((k) => expectedObj[k] === undefined); + const actualKeys = Object.keys(actualObj); + + // Verify keys that should be absent are not in actual + for (const key of expectedAbsentKeys) { + if (key in actualObj && actualObj[key] !== undefined) { + return pathErr( + `Key "${key}" should not be present but got ${formatValue(actualObj[key])}`, + path, + ); + } + } + + if (expectedPresentKeys.length !== actualKeys.length) { + const missing = expectedPresentKeys.filter((k) => !(k in actualObj)); + const extra = actualKeys.filter( + (k) => !expectedPresentKeys.includes(k) && !expectedAbsentKeys.includes(k), + ); + const parts: string[] = [ + `Key count mismatch: expected ${expectedPresentKeys.length} but got ${actualKeys.length}`, + ]; + if (missing.length > 0) parts.push(`missing: [${missing.join(", ")}]`); + if (extra.length > 0) parts.push(`extra: [${extra.join(", ")}]`); + return pathErr(parts.join(". "), path); + } + + for (const key of expectedPresentKeys) { + if (!(key in actualObj)) { + return pathErr(`Missing key "${key}"`, path); + } + const result = matchValues(actualObj[key], expectedObj[key], `${path}.${key}`, config); + if (!result.pass) { + return result; + } + } + return ok(); + } + + return pathErr(`Expected ${formatValue(expected)} but got ${formatValue(actual)}`, path); +} diff --git a/packages/spec-api/src/matchers/datetime.ts b/packages/spec-api/src/matchers/datetime.ts new file mode 100644 index 00000000000..83843f5eecb --- /dev/null +++ b/packages/spec-api/src/matchers/datetime.ts @@ -0,0 +1,66 @@ +import { createMatcher, err, type MockValueMatcher, ok } from "../match-engine.js"; + +const rfc3339Pattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/i; +const utcRfc3339Pattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/i; +const rfc7231Pattern = + /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{2}\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT$/i; + +function createDateTimeMatcher( + value: string, + label: string, + formatName: string, + formatPattern: RegExp, +): MockValueMatcher { + const expectedMs = Date.parse(value); + if (isNaN(expectedMs)) { + throw new Error(`${label}: invalid datetime value: ${value}`); + } + return createMatcher({ + check(actual: unknown) { + if (typeof actual !== "string") { + return err( + `${label}: expected a string but got ${typeof actual} (${JSON.stringify(actual)})`, + ); + } + if (!formatPattern.test(actual)) { + return err(`${label}: expected ${formatName} format but got "${actual}"`); + } + const actualMs = Date.parse(actual); + if (isNaN(actualMs)) { + return err( + `${label}: value "${actual}" matches ${formatName} format but is not a valid date`, + ); + } + if (actualMs !== expectedMs) { + return err( + `${label}: timestamps differ \u2014 expected ${new Date(expectedMs).toISOString()} but got ${new Date(actualMs).toISOString()}`, + ); + } + return ok(); + }, + serialize() { + return value; + }, + toString() { + return `${label}(${value})`; + }, + }); +} + +export const dateTimeMatcher = { + rfc3339(value: string): MockValueMatcher { + return createDateTimeMatcher(value, "match.dateTime.rfc3339", "rfc3339", rfc3339Pattern); + }, + /** Like rfc3339 but rejects timezone offsets — only Z (UTC) suffix is allowed. */ + utcRfc3339(value: string): MockValueMatcher { + return createDateTimeMatcher( + value, + "match.dateTime.utcRfc3339", + "utcRfc3339", + utcRfc3339Pattern, + ); + }, + rfc7231(value: string): MockValueMatcher { + return createDateTimeMatcher(value, "match.dateTime.rfc7231", "rfc7231", rfc7231Pattern); + }, +}; diff --git a/packages/spec-api/src/matchers/index.ts b/packages/spec-api/src/matchers/index.ts new file mode 100644 index 00000000000..054a5bb5c3e --- /dev/null +++ b/packages/spec-api/src/matchers/index.ts @@ -0,0 +1,48 @@ +import { dateTimeMatcher } from "./datetime.js"; +import { baseUrlMatcher } from "./local-url.js"; + +export { + createMatcher, + err, + isMatcher, + MatcherSymbol, + matchValues, + ok, + type MatcherConfig, + type MatchResult, + type MockValueMatcher, +} from "../match-engine.js"; +export { dateTimeMatcher } from "./datetime.js"; + +/** + * Namespace for built-in matchers. + */ +export const match = { + /** + * Matchers for comparing datetime values semantically. + * Validates that the actual value is in the correct format and represents + * the same point in time as the expected value. + * + * @example + * ```ts + * match.dateTime.rfc3339("2022-08-26T18:38:00.000Z") + * match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z") // rejects offsets, only Z + * match.dateTime.rfc7231("Fri, 26 Aug 2022 14:38:00 GMT") + * ``` + */ + dateTime: dateTimeMatcher, + + /** + * Matcher for URL values that include the server's base URL. + * + * The matcher is created with just the path portion. At runtime, `expandDyns()` + * resolves it by injecting the server's actual base URL (e.g. `http://localhost:3000`). + * The resolved matcher validates that the actual value equals `baseUrl + path`. + * + * @example + * ```ts + * match.localUrl("/payload/pageable/next-page") + * ``` + */ + localUrl: baseUrlMatcher, +}; diff --git a/packages/spec-api/src/matchers/local-url.ts b/packages/spec-api/src/matchers/local-url.ts new file mode 100644 index 00000000000..ecc07c406cb --- /dev/null +++ b/packages/spec-api/src/matchers/local-url.ts @@ -0,0 +1,24 @@ +import { createMatcher, err, type MockValueMatcher, ok } from "../match-engine.js"; + +export function baseUrlMatcher(path: string): MockValueMatcher { + return createMatcher((config) => ({ + check(actual: unknown) { + if (typeof actual !== "string") { + return err( + `match.localUrl: expected a string but got ${typeof actual} (${JSON.stringify(actual)})`, + ); + } + const expected = config.baseUrl + path; + if (actual !== expected) { + return err(`match.localUrl: expected "${expected}" but got "${actual}"`); + } + return ok(); + }, + serialize() { + return config.baseUrl + path; + }, + toString() { + return `match.localUrl("${path}")`; + }, + })); +} diff --git a/packages/spec-api/src/request-validations.ts b/packages/spec-api/src/request-validations.ts index 223b439ce2a..4a4b1b632f3 100644 --- a/packages/spec-api/src/request-validations.ts +++ b/packages/spec-api/src/request-validations.ts @@ -1,7 +1,7 @@ import deepEqual from "deep-equal"; -import * as prettier from "prettier"; import { parseString } from "xml2js"; -import { CollectionFormat, RequestExt } from "./types.js"; +import { matchValues, type MockValueMatcher } from "./match-engine.js"; +import { CollectionFormat, RequestExt, Resolver, ResolverConfig } from "./types.js"; import { ValidationError } from "./validation-error.js"; export const BODY_NOT_EQUAL_ERROR_MESSAGE = "Body provided doesn't match expected body"; @@ -37,43 +37,89 @@ export const validateBodyEquals = ( return; } - if (!deepEqual(request.body, expectedBody, { strict: true })) { - throw new ValidationError(BODY_NOT_EQUAL_ERROR_MESSAGE, expectedBody, request.body); + const result = matchValues(request.body, expectedBody); + if (!result.pass) { + throw new ValidationError( + `${BODY_NOT_EQUAL_ERROR_MESSAGE}: ${result.message}`, + expectedBody, + request.body, + ); } }; -export const validateXmlBodyEquals = (request: RequestExt, expectedBody: string): void => { +export const validateXmlBodyEquals = ( + request: RequestExt, + expectedBody: string | Resolver, + config?: ResolverConfig, +): void => { + const resolvedConfig = config ?? { baseUrl: "" }; + // When expectedBody is a Resolver (e.g. from xml`...`), serialize() already includes the XML declaration. + // When it's a plain string, we need to prepend it. + const expectedXml = + typeof expectedBody === "string" + ? `` + expectedBody + : expectedBody.serialize(resolvedConfig); + if (request.rawBody === undefined || isBodyEmpty(request.rawBody)) { - throw new ValidationError(BODY_EMPTY_ERROR_MESSAGE, expectedBody, request.rawBody); + throw new ValidationError(BODY_EMPTY_ERROR_MESSAGE, expectedXml, request.rawBody); } - expectedBody = `` + expectedBody; - - let actualParsedBody = ""; + let actualParsed: unknown; parseString(request.rawBody, (err: Error | null, result: any): void => { - if (err !== null) { - throw err; - } - actualParsedBody = result; + if (err !== null) throw err; + actualParsed = result; }); - let expectedParsedBody = ""; - parseString(expectedBody, (err: Error | null, result: any): void => { - if (err !== null) { - throw err; - } - expectedParsedBody = result; + let expectedParsed: unknown; + parseString(expectedXml, (err: Error | null, result: any): void => { + if (err !== null) throw err; + expectedParsed = result; }); - if (!deepEqual(actualParsedBody, expectedParsedBody, { strict: true })) { - throw new ValidationError( - BODY_NOT_EQUAL_ERROR_MESSAGE, - prettier.format(expectedBody), - prettier.format(request.body), - ); + // If the expected body is a DynValue with matchers, use matcher-aware comparison + const matchers = + typeof expectedBody !== "string" && "getMatchers" in expectedBody + ? (expectedBody as any).getMatchers(resolvedConfig) + : []; + + if (matchers.length > 0) { + const matcherMap = new Map(); + for (const { serialized, matcher } of matchers) { + matcherMap.set(serialized, matcher); + } + expectedParsed = substituteMatchers(expectedParsed, matcherMap); + + const result = matchValues(actualParsed, expectedParsed); + if (!result.pass) { + throw new ValidationError( + `${BODY_NOT_EQUAL_ERROR_MESSAGE}: ${result.message}`, + expectedXml, + request.rawBody, + ); + } + } else { + if (!deepEqual(actualParsed, expectedParsed, { strict: true })) { + throw new ValidationError(BODY_NOT_EQUAL_ERROR_MESSAGE, expectedXml, request.rawBody); + } } }; +function substituteMatchers(value: unknown, matcherMap: Map): unknown { + if (typeof value === "string") { + return matcherMap.get(value) ?? value; + } + if (Array.isArray(value)) { + return value.map((v) => substituteMatchers(v, matcherMap)); + } + if (typeof value === "object" && value !== null) { + const obj = value as Record; + return Object.fromEntries( + Object.entries(obj).map(([k, v]) => [k, substituteMatchers(v, matcherMap)]), + ); + } + return value; +} + export const validateCoercedDateBodyEquals = ( request: RequestExt, expectedBody: unknown | undefined, @@ -85,8 +131,13 @@ export const validateCoercedDateBodyEquals = ( return; } - if (!deepEqual(coerceDate(request.body), expectedBody, { strict: true })) { - throw new ValidationError(BODY_NOT_EQUAL_ERROR_MESSAGE, expectedBody, request.body); + const result = matchValues(coerceDate(request.body), expectedBody); + if (!result.pass) { + throw new ValidationError( + `${BODY_NOT_EQUAL_ERROR_MESSAGE}: ${result.message}`, + expectedBody, + request.body, + ); } }; diff --git a/packages/spec-api/src/response-utils.ts b/packages/spec-api/src/response-utils.ts index 49a8bf797cc..d815ba85f37 100644 --- a/packages/spec-api/src/response-utils.ts +++ b/packages/spec-api/src/response-utils.ts @@ -1,3 +1,4 @@ +import { isMatcher, type MockValueMatcher } from "./match-engine.js"; import { MockBody, MockMultipartBody, Resolver, ResolverConfig } from "./types.js"; /** @@ -18,19 +19,47 @@ function createResolver(content: unknown): Resolver { const expanded = expandDyns(content, config); return JSON.stringify(expanded); }, + resolve: (config: ResolverConfig) => { + // Preserve matchers so matchValues can use them for flexible validation + return expandDyns(content, config, { resolveMatchers: false }); + }, }; } +const XML_DECLARATION = ``; + /** - * Sends the provided XML string in a MockResponse body. - * The XML declaration prefix will automatically be added to xmlString. - * @content Object to return as XML. + * Sends the provided XML content in a MockResponse body. + * The XML declaration prefix is automatically prepended. + * + * Can be used as a plain function or as a tagged template literal. + * When used as a tagged template, interpolated matchers (e.g. `match.localUrl`) + * are resolved at serialization time via `expandDyns`. + * + * @example + * ```ts + * // Plain string + * xml("hello") + * + * // Tagged template with matcher + * xml`${match.localUrl("/next")}` + * ``` + * * @returns {MockBody} response body with application/xml content type. */ -export function xml(xmlString: string): MockBody { +export function xml(content: string): MockBody; +export function xml(strings: TemplateStringsArray, ...values: unknown[]): MockBody; +export function xml(content: string | TemplateStringsArray, ...values: unknown[]): MockBody { + if (typeof content !== "string") { + return { + contentType: "application/xml", + rawContent: dyn`${XML_DECLARATION}${dyn(content, ...values)}`, + }; + } + return { contentType: "application/xml", - rawContent: `` + xmlString, + rawContent: XML_DECLARATION + content, }; } @@ -44,10 +73,11 @@ export function multipart( }; } -export interface DynValue { +export interface DynValue extends Resolver { readonly isDyn: true; - readonly keys: T; - (dict: Record): string; + (config: ResolverConfig): string; + /** Returns all matchers embedded in this template with their serialized values. */ + getMatchers(config: ResolverConfig): Array<{ serialized: string; matcher: MockValueMatcher }>; } export interface DynItem { @@ -62,47 +92,89 @@ export function dynItem(name: T): DynItem< }; } -/** Specify that this value is dynamic and needs to be interpolated with the given keys */ -export function dyn( - strings: readonly string[], - ...keys: (DynItem | string)[] -): DynValue { - const dynKeys: T = [] as any; - const template = (dict: Record) => { - const result = [strings[0]]; - keys.forEach((key, i) => { - if (typeof key === "string") { - result.push(key); - } else { - dynKeys.push(key.name); - const value = (dict as any)[key.name]; - if (value !== undefined) { - result.push(value); - } - } - result.push(strings[i + 1]); +/** + * Tagged template for building strings with deferred resolution. + * Interpolated values can be: + * - `dynItem("baseUrl")` — resolved from `ResolverConfig` + * - Matchers (e.g. `match.localUrl(...)`) — resolved via `expandDyns` + * - Other `dyn` templates — recursively resolved + * - Plain strings/numbers — used as-is + */ +export function dyn(strings: readonly string[], ...values: unknown[]): DynValue { + const template = (config: ResolverConfig) => { + let result = strings[0]; + values.forEach((v, i) => { + result += String(expandDyns(v, config)); + result += strings[i + 1]; }); - return result.join(""); + return result; }; - template.keys = dynKeys; template.isDyn = true as const; + template.serialize = template; + template.resolve = template; + template.getMatchers = (config: ResolverConfig) => { + const result: Array<{ serialized: string; matcher: MockValueMatcher }> = []; + for (const v of values) { + collectMatchers(v, config, result); + } + return result; + }; return template; } -export function expandDyns(value: T, config: ResolverConfig): T { +function collectMatchers( + value: unknown, + config: ResolverConfig, + out: Array<{ serialized: string; matcher: MockValueMatcher }>, +): void { + if (isMatcher(value)) { + out.push({ serialized: String(value.serialize(config)), matcher: value }); + } else if (typeof value === "function" && "isDyn" in value && value.isDyn) { + const dynVal = value as DynValue; + if (dynVal.getMatchers) { + out.push(...dynVal.getMatchers(config)); + } + } +} + +export interface ExpandDynsOptions { + /** When true, matchers are resolved to their `toJSON()` value. Default: true. */ + resolveMatchers?: boolean; +} + +/** + * Recursively expands all dynamic values. + * - Dyn functions are called with the config. + * - Resolvable matchers (e.g. `match.localUrl`) are resolved via `resolve(config)`. + * - By default, matchers are resolved to their `toJSON()` plain value. + * Pass `{ resolveMatchers: false }` to preserve matchers for use with `matchValues`. + */ +export function expandDyns(value: T, config: ResolverConfig, options?: ExpandDynsOptions): T { + const resolve = options?.resolveMatchers ?? true; + return _expandDyns(value, config, resolve); +} + +function _expandDyns(value: T, config: ResolverConfig, resolveMatchers: boolean): T { if (typeof value === "string") { return value; } else if (Array.isArray(value)) { - return value.map((v) => expandDyns(v, config)) as any; + return value.map((v) => _expandDyns(v, config, resolveMatchers)) as any; } else if (typeof value === "object" && value !== null) { + // DynItem — resolve from config + if ("isDyn" in value && (value as any).isDyn && "name" in value) { + return (config as any)[(value as any).name] as any; + } + if (isMatcher(value)) { + return resolveMatchers ? (value.serialize(config) as any) : (value as any); + } const obj = value as Record; return Object.fromEntries( - Object.entries(obj).map(([key, v]) => [key, expandDyns(v, config)]), + Object.entries(obj).map(([key, v]) => [key, _expandDyns(v, config, resolveMatchers)]), ) as any; } else if (typeof value === "function") { if ("isDyn" in value && value.isDyn) { - const dynValue = value as any as DynValue; - return dynValue(config as any) as any; + const dynValue = value as any as DynValue; + return dynValue(config) as any; } else { throw new Error("Invalid function value"); } diff --git a/packages/spec-api/src/types.ts b/packages/spec-api/src/types.ts index 4841caf8886..c04347a476c 100644 --- a/packages/spec-api/src/types.ts +++ b/packages/spec-api/src/types.ts @@ -110,6 +110,8 @@ export interface ResolverConfig { export interface Resolver { serialize(config: ResolverConfig): string; + /** Returns the expanded content with matchers preserved (for comparison). */ + resolve(config: ResolverConfig): unknown; } export interface MockMultipartBody { diff --git a/packages/spec-api/test/match-engine.test.ts b/packages/spec-api/test/match-engine.test.ts new file mode 100644 index 00000000000..689f642b4e4 --- /dev/null +++ b/packages/spec-api/test/match-engine.test.ts @@ -0,0 +1,303 @@ +import { describe, expect, it } from "vitest"; +import { + err, + isMatcher, + type MatchResult, + matchValues, + MockValueMatcher, + ok, +} from "../src/match-engine.js"; +import { match } from "../src/matchers/index.js"; +import { expandDyns, json } from "../src/response-utils.js"; +import { ResolverConfig } from "../src/types.js"; + +describe("isMatcher", () => { + it("should return true for a matcher", () => { + expect(isMatcher(match.dateTime.rfc3339("2022-08-26T18:38:00.000Z"))).toBe(true); + }); + + it("should return true for localUrl matchers", () => { + expect(isMatcher(match.localUrl("/path"))).toBe(true); + }); + + it("should return false for plain values", () => { + expect(isMatcher("hello")).toBe(false); + expect(isMatcher(42)).toBe(false); + expect(isMatcher(null)).toBe(false); + expect(isMatcher(undefined)).toBe(false); + expect(isMatcher({ a: 1 })).toBe(false); + expect(isMatcher([1, 2])).toBe(false); + }); +}); + +function expectPass(result: MatchResult) { + expect(result).toEqual({ pass: true }); +} + +function expectFail(result: MatchResult, messagePattern?: string | RegExp) { + expect(result.pass).toBe(false); + if (!result.pass && messagePattern) { + if (typeof messagePattern === "string") { + expect(result.message).toContain(messagePattern); + } else { + expect(result.message).toMatch(messagePattern); + } + } +} + +describe("matchValues", () => { + describe("plain values (same as deepEqual)", () => { + it("should match identical primitives", () => { + expectPass(matchValues("hello", "hello")); + expectPass(matchValues(42, 42)); + expectPass(matchValues(true, true)); + expectPass(matchValues(null, null)); + }); + + it("should not match different primitives", () => { + expectFail(matchValues("hello", "world")); + expectFail(matchValues(42, 43)); + expectFail(matchValues(true, false)); + expectFail(matchValues(null, undefined)); + }); + + it("should not match different types", () => { + expectFail(matchValues("42", 42), "Type mismatch"); + expectFail(matchValues(0, false), "Type mismatch"); + expectFail(matchValues("", null)); + }); + + it("should match identical objects", () => { + expectPass(matchValues({ a: 1, b: "two" }, { a: 1, b: "two" })); + }); + + it("should not match objects with different keys", () => { + expectFail(matchValues({ a: 1 }, { a: 1, b: 2 }), "Key count mismatch"); + expectFail(matchValues({ a: 1, b: 2 }, { a: 1 }), "Key count mismatch"); + }); + + it("should match identical arrays", () => { + expectPass(matchValues([1, 2, 3], [1, 2, 3])); + }); + + it("should not match arrays of different lengths", () => { + expectFail(matchValues([1, 2], [1, 2, 3]), "Array length mismatch"); + }); + + it("should match nested objects", () => { + expectPass(matchValues({ a: { b: [1, 2] } }, { a: { b: [1, 2] } })); + }); + + it("should not match nested objects with differences", () => { + expectFail(matchValues({ a: { b: [1, 2] } }, { a: { b: [1, 3] } })); + }); + }); + + describe("error messages include path", () => { + it("should include path for nested object mismatch", () => { + const result = matchValues({ a: { b: "wrong" } }, { a: { b: "right" } }); + expectFail(result, "at $.a.b:"); + }); + + it("should include path for array element mismatch", () => { + const result = matchValues([1, 2, "wrong"], [1, 2, "right"]); + expectFail(result, "at $[2]:"); + }); + + it("should include path for deeply nested mismatch", () => { + const result = matchValues( + { data: { items: [{ name: "wrong" }] } }, + { data: { items: [{ name: "right" }] } }, + ); + expectFail(result, "at $.data.items[0].name:"); + }); + + it("should report missing keys", () => { + const result = matchValues({ a: 1 }, { a: 1, b: 2 }); + expectFail(result, "missing: [b]"); + }); + + it("should report extra keys", () => { + const result = matchValues({ a: 1, b: 2 }, { a: 1 }); + expectFail(result, "extra: [b]"); + }); + }); + + describe("with matchers", () => { + it("should delegate to matcher.check() in top-level position", () => { + const matcher: MockValueMatcher = { + [Symbol.for("SpectorMatcher")]: true as const, + check: (actual: any) => + actual === "matched" ? ok() : err(`expected "matched" but got "${actual}"`), + serialize: () => "raw", + toJSON: () => "raw", + } as any; + expectPass(matchValues("matched", matcher)); + expectFail(matchValues("not-matched", matcher)); + }); + + it("should handle matchers nested in objects", () => { + const expected = { + name: "test", + timestamp: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z"), + }; + expectPass(matchValues({ name: "test", timestamp: "2022-08-26T18:38:00Z" }, expected)); + }); + + it("should handle matchers nested in arrays", () => { + const expected = [match.dateTime.rfc3339("2022-08-26T18:38:00.000Z"), "plain"]; + expectPass(matchValues(["2022-08-26T18:38:00Z", "plain"], expected)); + }); + + it("should handle deeply nested matchers", () => { + const expected = { + data: { + items: [{ created: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z"), name: "item1" }], + }, + }; + const actual = { + data: { + items: [{ created: "2022-08-26T18:38:00.0000000Z", name: "item1" }], + }, + }; + expectPass(matchValues(actual, expected)); + }); + + it("should include path in matcher failure message", () => { + const expected = { + data: { timestamp: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z") }, + }; + const actual = { data: { timestamp: "not-rfc3339" } }; + const result = matchValues(actual, expected); + expectFail(result, "at $.data.timestamp:"); + expectFail(result, "rfc3339 format"); + }); + + it("should use localUrl matchers with config for exact URL check", () => { + const config: ResolverConfig = { baseUrl: "http://localhost:3000" }; + const expected = { link: match.localUrl("/next-page") }; + expectPass(matchValues({ link: "http://localhost:3000/next-page" }, expected, "$", config)); + expectFail( + matchValues({ link: "http://localhost:3000/other-page" }, expected, "$", config), + "match.localUrl", + ); + }); + }); +}); + +describe("integration with expandDyns", () => { + const config: ResolverConfig = { baseUrl: "http://localhost:3000" }; + + it("should resolve matchers to their plain values", () => { + const content = { value: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z") }; + const expanded = expandDyns(content, config); + expect(expanded.value).toBe("2022-08-26T18:38:00.000Z"); + }); + + it("should resolve matchers in arrays to their plain values", () => { + const content = { items: [match.dateTime.rfc3339("2022-08-26T18:38:00.000Z")] }; + const expanded = expandDyns(content, config); + expect(expanded.items[0]).toBe("2022-08-26T18:38:00.000Z"); + }); + + it("should resolve localUrl matchers to their full URL", () => { + const content = { next: match.localUrl("/next-page") }; + const expanded = expandDyns(content, config); + expect(expanded.next).toBe("http://localhost:3000/next-page"); + }); + + it("should resolve all matchers to their plain values", () => { + const content = { + timestamp: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z"), + next: match.localUrl("/next-page"), + }; + const expanded = expandDyns(content, config); + expect(expanded.timestamp).toBe("2022-08-26T18:38:00.000Z"); + expect(expanded.next).toBe("http://localhost:3000/next-page"); + }); +}); + +describe("integration with expandDyns({ resolveMatchers: false })", () => { + const config: ResolverConfig = { baseUrl: "http://localhost:3000" }; + + it("should preserve matcher objects instead of resolving them to plain strings", () => { + const content = { timestamp: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z") }; + const expanded = expandDyns(content, config, { resolveMatchers: false }); + // Matcher must survive as a matcher, not be converted to a plain string + expect(isMatcher(expanded.timestamp)).toBe(true); + }); + + it("should allow matchValues to do semantic datetime comparison after expandDyns with resolveMatchers:false", () => { + // Regression test: query params/headers with datetime matchers must use semantic comparison. + // Without resolveMatchers:false, expandDyns converts the matcher to the plain string + // "2022-08-26T18:38:00.000Z", and a strict === comparison against the actual value + // "2022-08-26T18:38:00Z" (no milliseconds) would fail even though they represent the + // same point in time. + const queryDef = { input: match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z") }; + const expanded = expandDyns(queryDef, config, { resolveMatchers: false }); + + // The actual query string received from an HTTP request (no milliseconds) + const actualQueryValue = "2022-08-26T18:38:00Z"; + + // Simulates what createHandler does: isMatcher → deepEqual → matchValues → matcher.check() + expect(isMatcher(expanded.input)).toBe(true); + expectPass(matchValues(actualQueryValue, expanded.input, "$", config)); + }); + + it("should allow matchValues to do semantic datetime comparison for header values after expandDyns with resolveMatchers:false", () => { + // Regression test: headers with datetime matchers must use semantic comparison, same as query params. + // Without resolveMatchers:false the matcher is serialized early and isMatcher() returns false, + // so the code falls through to containsHeader() with String(value) — a strict string equality + // that fails for semantically equivalent but format-different datetime strings. + const headerDef = { "x-ms-date": match.dateTime.rfc7231("Fri, 26 Aug 2022 18:38:00 GMT") }; + const expanded = expandDyns(headerDef, config, { resolveMatchers: false }); + + // isMatcher must still be true so createHandler routes through deepEqual / matchValues + expect(isMatcher(expanded["x-ms-date"])).toBe(true); + // Semantic check passes for the exact same RFC 7231 string + expectPass(matchValues("Fri, 26 Aug 2022 18:38:00 GMT", expanded["x-ms-date"], "$", config)); + }); + + it("should demonstrate why resolveMatchers:true (default) breaks semantic query param matching", () => { + // With the default resolveMatchers:true, the matcher is eagerly converted to a plain string. + // A strict string comparison then fails for semantically equivalent but format-different values. + const queryDef = { input: match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z") }; + const expandedWithResolve = expandDyns(queryDef, config); // resolveMatchers: true (default) + + // The matcher is gone — replaced by its serialized string + expect(isMatcher(expandedWithResolve.input)).toBe(false); + expect(expandedWithResolve.input).toBe("2022-08-26T18:38:00.000Z"); + + // Strict string comparison fails for an equivalent datetime without milliseconds + expect(expandedWithResolve.input === "2022-08-26T18:38:00Z").toBe(false); + }); +}); + +describe("integration with json() Resolver", () => { + const config: ResolverConfig = { baseUrl: "http://localhost:3000" }; + + it("should serialize matchers to their raw value via serialize()", () => { + const body = json({ value: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z") }); + const raw = (body.rawContent as any).serialize(config); + expect(raw).toBe('{"value":"2022-08-26T18:38:00.000Z"}'); + }); + + it("should preserve matchers via resolve()", () => { + const body = json({ value: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z") }); + const resolved = (body.rawContent as any).resolve(config) as Record; + expect(isMatcher(resolved.value)).toBe(true); + }); + + it("should serialize localUrl matchers to their full URL via serialize()", () => { + const body = json({ next: match.localUrl("/items/page2") }); + const raw = (body.rawContent as any).serialize(config); + expect(raw).toBe('{"next":"http://localhost:3000/items/page2"}'); + }); + + it("should preserve localUrl matchers via resolve()", () => { + const body = json({ next: match.localUrl("/items/page2") }); + const resolved = (body.rawContent as any).resolve(config) as Record; + expect(isMatcher(resolved.next)).toBe(true); + expectPass((resolved.next as any).check("http://localhost:3000/items/page2", config)); + }); +}); diff --git a/packages/spec-api/test/matchers/datetime.test.ts b/packages/spec-api/test/matchers/datetime.test.ts new file mode 100644 index 00000000000..2803984fbfd --- /dev/null +++ b/packages/spec-api/test/matchers/datetime.test.ts @@ -0,0 +1,232 @@ +import { describe, expect, it } from "vitest"; +import { match } from "../../src/matchers/index.js"; +import { expectFail, expectPass } from "./matcher-test-utils.js"; + +describe("match.dateTime.rfc3339()", () => { + it("should throw for invalid datetime", () => { + expect(() => match.dateTime.rfc3339("not-a-date")).toThrow("invalid datetime value"); + }); + + it("should throw for empty string", () => { + expect(() => match.dateTime.rfc3339("")).toThrow("invalid datetime value"); + }); + + describe("check()", () => { + const matcher = match.dateTime.rfc3339("2022-08-26T18:38:00.000Z"); + + it("should match exact same string", () => { + expectPass(matcher.check("2022-08-26T18:38:00.000Z")); + }); + + it("should match without fractional seconds", () => { + expectPass(matcher.check("2022-08-26T18:38:00Z")); + }); + + it("should match with extra precision", () => { + expectPass(matcher.check("2022-08-26T18:38:00.0000000Z")); + }); + + it("should match with 1 fractional digit", () => { + expectPass(matcher.check("2022-08-26T18:38:00.0Z")); + }); + + it("should match with 2 fractional digits", () => { + expectPass(matcher.check("2022-08-26T18:38:00.00Z")); + }); + + it("should match with +00:00 offset instead of Z", () => { + expectPass(matcher.check("2022-08-26T18:38:00.000+00:00")); + }); + + it("should match equivalent time in a different timezone offset", () => { + expectPass(matcher.check("2022-08-26T14:38:00.000-04:00")); + }); + + it("should reject RFC 7231 format even if same point in time", () => { + expectFail(matcher.check("Fri, 26 Aug 2022 18:38:00 GMT"), "rfc3339 format"); + }); + + it("should not match different time", () => { + expectFail(matcher.check("2022-08-26T18:39:00.000Z"), "timestamps differ"); + }); + + it("should not match off by one second", () => { + expectFail(matcher.check("2022-08-26T18:38:01.000Z"), "timestamps differ"); + }); + + it("should not match different date same time", () => { + expectFail(matcher.check("2022-08-27T18:38:00.000Z"), "timestamps differ"); + }); + + it("should not match non-string values", () => { + expectFail(matcher.check(12345), "expected a string but got number"); + expectFail(matcher.check(null), "expected a string but got object"); + expectFail(matcher.check(undefined), "expected a string but got undefined"); + expectFail(matcher.check(true), "expected a string but got boolean"); + expectFail(matcher.check({}), "expected a string but got object"); + expectFail(matcher.check([]), "expected a string but got object"); + }); + + it("should not match empty string", () => { + expectFail(matcher.check(""), "rfc3339 format"); + }); + + it("should not match invalid datetime strings", () => { + expectFail(matcher.check("not-a-date"), "rfc3339 format"); + }); + }); + + describe("with non-zero milliseconds", () => { + const matcher = match.dateTime.rfc3339("2022-08-26T18:38:00.123Z"); + + it("should match exact milliseconds", () => { + expectPass(matcher.check("2022-08-26T18:38:00.123Z")); + }); + + it("should match with trailing zeros", () => { + expectPass(matcher.check("2022-08-26T18:38:00.1230000Z")); + }); + + it("should not match truncated milliseconds", () => { + expectFail(matcher.check("2022-08-26T18:38:00Z"), "timestamps differ"); + }); + + it("should not match different milliseconds", () => { + expectFail(matcher.check("2022-08-26T18:38:00.124Z"), "timestamps differ"); + }); + }); + + describe("with midnight edge case", () => { + const matcher = match.dateTime.rfc3339("2022-08-26T00:00:00.000Z"); + + it("should match midnight", () => { + expectPass(matcher.check("2022-08-26T00:00:00Z")); + }); + + it("should match midnight with offset expressing previous day", () => { + expectPass(matcher.check("2022-08-25T20:00:00-04:00")); + }); + }); + + describe("serialize()", () => { + it("should return the original value", () => { + expect(match.dateTime.rfc3339("2022-08-26T18:38:00.000Z").serialize()).toBe( + "2022-08-26T18:38:00.000Z", + ); + }); + + it("should serialize correctly in JSON.stringify", () => { + const obj = { value: match.dateTime.rfc3339("2022-08-26T18:38:00.000Z") }; + expect(JSON.stringify(obj)).toBe('{"value":"2022-08-26T18:38:00.000Z"}'); + }); + }); + describe("toString()", () => { + it("should include rfc3339 in toString()", () => { + expect(match.dateTime.rfc3339("2022-08-26T18:38:00.000Z").toString()).toBe( + "match.dateTime.rfc3339(2022-08-26T18:38:00.000Z)", + ); + }); + }); +}); + +describe("match.dateTime.rfc7231()", () => { + it("should throw for invalid datetime", () => { + expect(() => match.dateTime.rfc7231("not-a-date")).toThrow("invalid datetime value"); + }); + + describe("check()", () => { + const matcher = match.dateTime.rfc7231("Fri, 26 Aug 2022 14:38:00 GMT"); + + it("should match exact same string", () => { + expectPass(matcher.check("Fri, 26 Aug 2022 14:38:00 GMT")); + }); + + it("should reject RFC 3339 format even if same point in time", () => { + expectFail(matcher.check("2022-08-26T14:38:00.000Z"), "rfc7231 format"); + }); + + it("should not match different time", () => { + expectFail(matcher.check("Fri, 26 Aug 2022 14:39:00 GMT"), "timestamps differ"); + }); + + it("should not match non-string values", () => { + expectFail(matcher.check(12345), "expected a string but got number"); + expectFail(matcher.check(null), "expected a string but got object"); + }); + }); + + describe("serialize()", () => { + it("should preserve RFC 7231 format", () => { + expect(match.dateTime.rfc7231("Fri, 26 Aug 2022 14:38:00 GMT").serialize()).toBe( + "Fri, 26 Aug 2022 14:38:00 GMT", + ); + }); + }); +}); + +describe("match.dateTime.utcRfc3339()", () => { + it("should throw for invalid datetime", () => { + expect(() => match.dateTime.utcRfc3339("not-a-date")).toThrow("invalid datetime value"); + }); + + it("should throw for empty string", () => { + expect(() => match.dateTime.utcRfc3339("")).toThrow("invalid datetime value"); + }); + + describe("check()", () => { + const matcher = match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z"); + + it("should match exact same string", () => { + expectPass(matcher.check("2022-08-26T18:38:00.000Z")); + }); + + it("should match without fractional seconds", () => { + expectPass(matcher.check("2022-08-26T18:38:00Z")); + }); + + it("should match with extra precision", () => { + expectPass(matcher.check("2022-08-26T18:38:00.0000000Z")); + }); + + it("should reject +00:00 offset even though equivalent to Z", () => { + expectFail(matcher.check("2022-08-26T18:38:00.000+00:00"), "utcRfc3339 format"); + }); + + it("should reject timezone offset", () => { + expectFail(matcher.check("2022-08-26T14:38:00.000-04:00"), "utcRfc3339 format"); + }); + + it("should reject positive timezone offset", () => { + expectFail(matcher.check("2022-08-26T20:38:00.000+02:00"), "utcRfc3339 format"); + }); + + it("should reject RFC 7231 format", () => { + expectFail(matcher.check("Fri, 26 Aug 2022 18:38:00 GMT"), "utcRfc3339 format"); + }); + + it("should not match different time", () => { + expectFail(matcher.check("2022-08-26T18:39:00.000Z"), "timestamps differ"); + }); + + it("should not match non-string values", () => { + expectFail(matcher.check(12345), "expected a string but got number"); + expectFail(matcher.check(null), "expected a string but got object"); + }); + }); + + describe("serialize()", () => { + it("should return the original value", () => { + expect(match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z").serialize()).toBe( + "2022-08-26T18:38:00.000Z", + ); + }); + }); + + describe("toString()", () => { + it("should include utcRfc3339 in toString()", () => { + expect(match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z").toString()).toBe( + "match.dateTime.utcRfc3339(2022-08-26T18:38:00.000Z)", + ); + }); + }); +}); diff --git a/packages/spec-api/test/matchers/local-url.test.ts b/packages/spec-api/test/matchers/local-url.test.ts new file mode 100644 index 00000000000..f576d418c0f --- /dev/null +++ b/packages/spec-api/test/matchers/local-url.test.ts @@ -0,0 +1,82 @@ +import { describe, expect, it } from "vitest"; +import { isMatcher, type MatcherConfig } from "../../src/match-engine.js"; +import { match } from "../../src/matchers/index.js"; +import { expectFail, expectPass } from "./matcher-test-utils.js"; + +const config: MatcherConfig = { baseUrl: "http://localhost:3000" }; + +describe("match.localUrl()", () => { + it("should be identified by isMatcher", () => { + expect(isMatcher(match.localUrl("/some/path"))).toBe(true); + }); + + describe("check()", () => { + const matcher = match.localUrl("/payload/pageable/next-page"); + + it("should match exact full URL", () => { + expectPass(matcher.check("http://localhost:3000/payload/pageable/next-page", config)); + }); + + it("should not match a different base URL", () => { + expectFail( + matcher.check("http://localhost:4000/payload/pageable/next-page", config), + "match.localUrl", + ); + }); + + it("should not match a different path", () => { + expectFail( + matcher.check("http://localhost:3000/payload/pageable/other-page", config), + "match.localUrl", + ); + }); + + it("should not match non-string values", () => { + expectFail(matcher.check(42, config), "expected a string but got number"); + expectFail(matcher.check(null, config), "expected a string but got object"); + expectFail(matcher.check(undefined, config), "expected a string but got undefined"); + }); + }); + + describe("serialize()", () => { + it("should return the full URL with config", () => { + expect(match.localUrl("/some/path").serialize(config)).toBe( + "http://localhost:3000/some/path", + ); + }); + + it("should serialize correctly in JSON.stringify", () => { + const obj = { nextLink: match.localUrl("/some/path") }; + // toJSON() uses empty config, so just the path + expect(JSON.stringify(obj)).toBe('{"nextLink":"/some/path"}'); + }); + }); + + describe("resolution with different base URLs", () => { + const matcher = match.localUrl("/api/items"); + + it("should resolve with localhost", () => { + expectPass( + matcher.check("http://localhost:3000/api/items", { baseUrl: "http://localhost:3000" }), + ); + }); + + it("should resolve with https URL", () => { + expectPass( + matcher.check("https://example.com/api/items", { baseUrl: "https://example.com" }), + ); + }); + + it("should resolve with URL including port", () => { + expectPass( + matcher.check("http://127.0.0.1:8080/api/items", { baseUrl: "http://127.0.0.1:8080" }), + ); + }); + }); + + describe("toString()", () => { + it("should return a descriptive string", () => { + expect(match.localUrl("/some/path").toString()).toBe('match.localUrl("/some/path")'); + }); + }); +}); diff --git a/packages/spec-api/test/matchers/matcher-test-utils.ts b/packages/spec-api/test/matchers/matcher-test-utils.ts new file mode 100644 index 00000000000..0067fbd8da3 --- /dev/null +++ b/packages/spec-api/test/matchers/matcher-test-utils.ts @@ -0,0 +1,17 @@ +import { expect } from "vitest"; +import { MatchResult } from "../../src/match-engine.js"; + +export function expectPass(result: MatchResult) { + expect(result).toEqual({ pass: true }); +} + +export function expectFail(result: MatchResult, messagePattern?: string | RegExp) { + expect(result.pass).toBe(false); + if (!result.pass && messagePattern) { + if (typeof messagePattern === "string") { + expect(result.message).toContain(messagePattern); + } else { + expect(result.message).toMatch(messagePattern); + } + } +} diff --git a/packages/spec-coverage-sdk/package.json b/packages/spec-coverage-sdk/package.json index fd47a16558f..d97a518d1cc 100644 --- a/packages/spec-coverage-sdk/package.json +++ b/packages/spec-coverage-sdk/package.json @@ -23,14 +23,14 @@ }, "homepage": "https://github.com/microsoft/typespec#readme", "dependencies": { - "@azure/identity": "~4.13.0", - "@azure/storage-blob": "~12.31.0", - "@types/node": "~25.3.0", - "@types/semver": "^7.5.8", - "semver": "^7.7.1" + "@azure/identity": "catalog:", + "@azure/storage-blob": "catalog:", + "@types/node": "catalog:", + "@types/semver": "catalog:", + "semver": "catalog:" }, "devDependencies": { - "rimraf": "~6.1.3", - "typescript": "~5.9.3" + "rimraf": "catalog:", + "typescript": "catalog:" } } diff --git a/packages/spec-dashboard/package.json b/packages/spec-dashboard/package.json index 392439fd8d7..d3c05800ba3 100644 --- a/packages/spec-dashboard/package.json +++ b/packages/spec-dashboard/package.json @@ -36,22 +36,22 @@ }, "homepage": "https://github.com/microsoft/typespec#readme", "dependencies": { - "@fluentui/react-components": "~9.73.1", - "@fluentui/react-icons": "^2.0.292", + "@fluentui/react-components": "catalog:", + "@fluentui/react-icons": "catalog:", "@typespec/spec-coverage-sdk": "workspace:^", - "react": "~19.2.3", - "react-dom": "~19.2.3", - "react-markdown": "^10.1.0" + "react": "catalog:", + "react-dom": "catalog:", + "react-markdown": "catalog:" }, "devDependencies": { - "@types/react": "~19.2.7", - "@types/react-dom": "~19.2.2", - "@vitejs/plugin-react": "~5.1.2", - "rimraf": "~6.1.3", - "rollup-plugin-visualizer": "6.0.4", - "typescript": "~5.9.3", - "vite": "^7.2.7", - "vite-plugin-checker": "^0.12.0", - "vite-plugin-dts": "4.5.4" + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@vitejs/plugin-react": "catalog:", + "rimraf": "catalog:", + "rollup-plugin-visualizer": "catalog:", + "typescript": "catalog:", + "vite": "catalog:", + "vite-plugin-checker": "catalog:", + "vite-plugin-dts": "catalog:" } } diff --git a/packages/spec-dashboard/vite.config.ts b/packages/spec-dashboard/vite.config.ts index 2b02df429c0..09ce4942da9 100644 --- a/packages/spec-dashboard/vite.config.ts +++ b/packages/spec-dashboard/vite.config.ts @@ -26,7 +26,7 @@ export default defineConfig({ }, rollupOptions: { - external: externals, + external: (id) => externals.some((x) => id.startsWith(x)), }, }, plugins: [ diff --git a/packages/spec/package.json b/packages/spec/package.json index a3fff608cc6..33387831e22 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -20,8 +20,8 @@ "watch": "node scripts/watch-spec.js" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/internal-build-utils": "workspace:^", - "ecmarkup": "~23.0.2" + "ecmarkup": "catalog:" } } diff --git a/packages/spector/CHANGELOG.md b/packages/spector/CHANGELOG.md index 471631a2d46..9bf08fc51e8 100644 --- a/packages/spector/CHANGELOG.md +++ b/packages/spector/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log - @typespec/spector +## 0.1.0-alpha.25 + +### Features + +- [#10011](https://github.com/microsoft/typespec/pull/10011) Add matcher framework for flexible value comparison in scenarios. `match.dateTime()` enables semantic datetime comparison that handles precision and timezone differences across languages. + +### Bug Fixes + +- [#10259](https://github.com/microsoft/typespec/pull/10259) Fix query parameter matcher handling: use `resolveMatchers: false` so matcher objects (e.g. `match.dateTime`) are checked semantically instead of being serialized to plain strings before comparison. + + ## 0.1.0-alpha.24 ### Bump dependencies diff --git a/packages/spector/package.json b/packages/spector/package.json index 8205aa33f28..b8a274b4b6a 100644 --- a/packages/spector/package.json +++ b/packages/spector/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/spector", - "version": "0.1.0-alpha.24", + "version": "0.1.0-alpha.25", "description": "Typespec Core Tool to validate, run mock api, collect coverage.", "exports": { ".": { @@ -35,39 +35,39 @@ }, "homepage": "https://github.com/microsoft/typespec#readme", "dependencies": { - "@azure/identity": "~4.13.0", + "@azure/identity": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/http": "workspace:^", "@typespec/rest": "workspace:^", "@typespec/spec-api": "workspace:^", "@typespec/spec-coverage-sdk": "workspace:^", "@typespec/versioning": "workspace:^", - "ajv": "~8.18.0", - "body-parser": "^2.2.0", - "deep-equal": "^2.2.0", - "express": "^5.2.1", - "globby": "~16.1.0", - "micromatch": "^4.0.8", - "morgan": "^1.10.0", - "multer": "^2.0.1", - "picocolors": "~1.1.1", - "source-map-support": "~0.5.21", - "xml2js": "^0.6.2", - "yaml": "~2.8.2", - "yargs": "~18.0.0" + "ajv": "catalog:", + "body-parser": "catalog:", + "deep-equal": "catalog:", + "express": "catalog:", + "globby": "catalog:", + "micromatch": "catalog:", + "morgan": "catalog:", + "multer": "catalog:", + "picocolors": "catalog:", + "source-map-support": "catalog:", + "xml2js": "catalog:", + "yaml": "catalog:", + "yargs": "catalog:" }, "devDependencies": { - "@types/body-parser": "^1.19.2", - "@types/deep-equal": "^1.0.1", - "@types/express": "^5.0.6", - "@types/micromatch": "^4.0.9", - "@types/morgan": "^1.9.9", - "@types/multer": "^2.0.0", - "@types/node": "~25.3.0", - "@types/xml2js": "^0.4.11", - "@types/yargs": "~17.0.33", + "@types/body-parser": "catalog:", + "@types/deep-equal": "catalog:", + "@types/express": "catalog:", + "@types/micromatch": "catalog:", + "@types/morgan": "catalog:", + "@types/multer": "catalog:", + "@types/node": "catalog:", + "@types/xml2js": "catalog:", + "@types/yargs": "catalog:", "@typespec/tspd": "workspace:^", - "rimraf": "~6.1.3", - "typescript": "~5.9.3" + "rimraf": "catalog:", + "typescript": "catalog:" } } diff --git a/packages/spector/src/actions/helper.ts b/packages/spector/src/actions/helper.ts index 14a855a95c6..7ce381abdc4 100644 --- a/packages/spector/src/actions/helper.ts +++ b/packages/spector/src/actions/helper.ts @@ -35,7 +35,7 @@ function renderMultipartRequest(body: MockMultipartBody) { return formData; } -function resolveUrl(request: ServiceRequest) { +function resolveUrl(request: ServiceRequest, config: ResolverConfig) { let endpoint = request.url; if (request.pathParams) { @@ -47,14 +47,15 @@ function resolveUrl(request: ServiceRequest) { endpoint = endpoint.replaceAll("\\:", ":"); if (request.query) { + const resolved = expandDyns(request.query, config); const query = new URLSearchParams(); - for (const [key, value] of Object.entries(request.query)) { + for (const [key, value] of Object.entries(resolved)) { if (Array.isArray(value)) { for (const v of value) { - query.append(key, v); + query.append(key, String(v)); } } else { - query.append(key, value as any); + query.append(key, String(value)); } } endpoint = `${endpoint}?${query.toString()}`; @@ -66,9 +67,9 @@ export async function makeServiceCall( request: ServiceRequest, config: ResolverConfig, ): Promise { - const url = resolveUrl(request); + const url = resolveUrl(request, config); let body; - let headers = expandDyns(request.headers, config) as Record; + let headers = expandDyns(request.headers, config) as Record | undefined; if (request.body) { if ("kind" in request.body) { const formData = renderMultipartRequest(request.body); diff --git a/packages/spector/src/actions/server-test.ts b/packages/spector/src/actions/server-test.ts index 6cd60ddbdf3..6bb41a9f1d3 100644 --- a/packages/spector/src/actions/server-test.ts +++ b/packages/spector/src/actions/server-test.ts @@ -1,11 +1,11 @@ import { expandDyns, + matchValues, MockApiDefinition, MockBody, ResolverConfig, ValidationError, } from "@typespec/spec-api"; -import deepEqual from "deep-equal"; import micromatch from "micromatch"; import { inspect } from "node:util"; import pc from "picocolors"; @@ -79,28 +79,44 @@ class ServerTestsGenerator { async #validateBody(response: Response, body: MockBody) { if (Buffer.isBuffer(body.rawContent)) { const responseData = Buffer.from(await response.arrayBuffer()); - if (!deepEqual(responseData, body.rawContent)) { - throw new ValidationError(`Raw body mismatch`, body.rawContent, responseData); + const result = matchValues(responseData, body.rawContent); + if (!result.pass) { + throw new ValidationError( + `Raw body mismatch: ${result.message}`, + body.rawContent, + responseData, + ); } } else { const responseData = await response.text(); - const raw = - typeof body.rawContent === "string" - ? body.rawContent - : body.rawContent?.serialize(this.resolverConfig); switch (body.contentType) { case "application/xml": - case "text/plain": - if (body.rawContent !== responseData) { + case "text/plain": { + const raw = + typeof body.rawContent === "string" + ? body.rawContent + : body.rawContent?.serialize(this.resolverConfig); + if (raw !== responseData) { throw new ValidationError("Response data mismatch", raw, responseData); } break; - case "application/json": - const expected = JSON.parse(raw as any); + } + case "application/json": { + const expected = + typeof body.rawContent === "string" + ? JSON.parse(body.rawContent) + : body.rawContent?.resolve(this.resolverConfig); const actual = JSON.parse(responseData); - if (!deepEqual(actual, expected, { strict: true })) { - throw new ValidationError("Response data mismatch", expected, actual); + const result = matchValues(actual, expected); + if (!result.pass) { + throw new ValidationError( + `Response data mismatch: ${result.message}`, + expected, + actual, + ); } + break; + } } } } diff --git a/packages/spector/src/app/app.ts b/packages/spector/src/app/app.ts index 329e08de767..a6b5cc2c62a 100644 --- a/packages/spector/src/app/app.ts +++ b/packages/spector/src/app/app.ts @@ -1,5 +1,6 @@ import { expandDyns, + isMatcher, MockApiDefinition, MockBody, MockMultipartBody, @@ -105,19 +106,31 @@ function validateBody( if (Buffer.isBuffer(body.rawContent)) { req.expect.rawBodyEquals(body.rawContent); } else { - const raw = - typeof body.rawContent === "string" ? body.rawContent : body.rawContent?.serialize(config); switch (body.contentType) { - case "application/json": - req.expect.coercedBodyEquals(JSON.parse(raw as any)); + case "application/json": { + const expected = + typeof body.rawContent === "string" + ? JSON.parse(body.rawContent) + : body.rawContent?.resolve(config); + req.expect.coercedBodyEquals(expected); break; - case "application/xml": - req.expect.xmlBodyEquals( - (raw as any).replace(``, ""), - ); + } + case "application/xml": { + if (typeof body.rawContent === "string") { + const xmlStr = body.rawContent.replace(``, ""); + req.expect.xmlBodyEquals(xmlStr); + } else if (body.rawContent) { + req.expect.xmlBodyEquals(body.rawContent, config); + } break; - default: + } + default: { + const raw = + typeof body.rawContent === "string" + ? body.rawContent + : body.rawContent?.serialize(config); req.expect.rawBodyEquals(raw); + } } } } @@ -133,10 +146,10 @@ function createHandler(apiDefinition: MockApiDefinition, config: ResolverConfig) // Validate headers if present in the request if (apiDefinition.request?.headers) { - const headers = expandDyns(apiDefinition.request.headers, config); + const headers = expandDyns(apiDefinition.request.headers, config, { resolveMatchers: false }); Object.entries(headers).forEach(([key, value]) => { if (key.toLowerCase() !== "content-type") { - if (Array.isArray(value)) { + if (isMatcher(value) || Array.isArray(value)) { req.expect.deepEqual(req.headers[key], value); } else { req.expect.containsHeader(key.toLowerCase(), String(value)); @@ -146,8 +159,9 @@ function createHandler(apiDefinition: MockApiDefinition, config: ResolverConfig) } if (apiDefinition.request?.query) { - Object.entries(apiDefinition.request.query).forEach(([key, value]) => { - if (Array.isArray(value)) { + const query = expandDyns(apiDefinition.request.query, config, { resolveMatchers: false }); + Object.entries(query).forEach(([key, value]) => { + if (isMatcher(value) || Array.isArray(value)) { req.expect.deepEqual(req.query[key], value); } else { req.expect.containsQueryParam(key, String(value)); diff --git a/packages/spector/test/xml-validation.test.ts b/packages/spector/test/xml-validation.test.ts new file mode 100644 index 00000000000..121725a02b4 --- /dev/null +++ b/packages/spector/test/xml-validation.test.ts @@ -0,0 +1,152 @@ +import { + createMatcher, + err, + match, + ok, + validateXmlBodyEquals, + xml, + type RequestExt, + type ResolverConfig, +} from "@typespec/spec-api"; +import { describe, expect, it } from "vitest"; + +const config: ResolverConfig = { baseUrl: "http://localhost:3000" }; + +function makeRequest(rawBody: string): RequestExt { + return { rawBody } as unknown as RequestExt; +} + +describe("validateXmlBodyEquals", () => { + describe("with plain string (no matchers)", () => { + it("should accept matching XML", () => { + expect(() => + validateXmlBodyEquals( + makeRequest(`
1`), + "1", + ), + ).not.toThrow(); + }); + + it("should reject mismatched XML", () => { + expect(() => + validateXmlBodyEquals( + makeRequest(`2`), + "1", + ), + ).toThrow("Body provided doesn't match expected body"); + }); + + it("should reject empty body", () => { + expect(() => validateXmlBodyEquals(makeRequest(""), "")).toThrow("Body should exists"); + }); + }); + + describe("with Resolver containing matchers", () => { + it("should use matcher check instead of strict equality", () => { + // A custom matcher that accepts any number + const anyNumber = createMatcher({ + check(actual) { + return typeof actual === "string" && /^\d+$/.test(actual) + ? ok() + : err("expected a number string"); + }, + serialize: () => "PLACEHOLDER", + }); + + const body = xml`${anyNumber}`; + + // "42" is a number string → should pass + expect(() => + validateXmlBodyEquals( + makeRequest(`42`), + body.rawContent as any, + config, + ), + ).not.toThrow(); + + // "abc" is not a number → should fail + expect(() => + validateXmlBodyEquals( + makeRequest(`abc`), + body.rawContent as any, + config, + ), + ).toThrow("Body provided doesn't match expected body"); + }); + + it("should validate plain elements strictly alongside matchers", () => { + const anyNumber = createMatcher({ + check(actual) { + return typeof actual === "string" && /^\d+$/.test(actual) + ? ok() + : err("expected a number string"); + }, + serialize: () => "0", + }); + + const body = xml`test${anyNumber}`; + + // Both correct + expect(() => + validateXmlBodyEquals( + makeRequest( + `test5`, + ), + body.rawContent as any, + config, + ), + ).not.toThrow(); + + // Plain element wrong + expect(() => + validateXmlBodyEquals( + makeRequest( + `wrong5`, + ), + body.rawContent as any, + config, + ), + ).toThrow("Body provided doesn't match expected body"); + }); + + it("should work with datetime matchers", () => { + const body = xml`${match.dateTime.rfc3339("2022-08-26T18:38:00.000Z")}`; + + // Without fractional seconds — same point in time + expect(() => + validateXmlBodyEquals( + makeRequest( + `2022-08-26T18:38:00Z`, + ), + body.rawContent as any, + config, + ), + ).not.toThrow(); + + // Different time + expect(() => + validateXmlBodyEquals( + makeRequest( + `2023-01-01T00:00:00Z`, + ), + body.rawContent as any, + config, + ), + ).toThrow("Body provided doesn't match expected body"); + }); + + it("should work with multiple matchers", () => { + const body = xml`${match.dateTime.utcRfc3339("2022-08-26T18:38:00.000Z")}${match.dateTime.rfc7231("Fri, 26 Aug 2022 14:38:00 GMT")}`; + + expect(() => + validateXmlBodyEquals( + makeRequest( + `2022-08-26T18:38:00.0000000ZFri, 26 Aug 2022 14:38:00 GMT`, + ), + body.rawContent as any, + config, + ), + ).not.toThrow(); + }); + }); +}); diff --git a/packages/sse/CHANGELOG.md b/packages/sse/CHANGELOG.md index b8566596f16..df08c693843 100644 --- a/packages/sse/CHANGELOG.md +++ b/packages/sse/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog - @typespec/sse +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/sse/package.json b/packages/sse/package.json index 1ef921bb947..5fd604493e1 100644 --- a/packages/sse/package.json +++ b/packages/sse/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/sse", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library providing server sent events bindings", "homepage": "https://typespec.io", @@ -55,18 +55,18 @@ "@typespec/streams": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/events": "workspace:^", "@typespec/http": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/streams": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/standalone/CHANGELOG.md b/packages/standalone/CHANGELOG.md index 64969169b0e..5e9479bcf44 100644 --- a/packages/standalone/CHANGELOG.md +++ b/packages/standalone/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog - @typespec/standalone-cli +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 No changes, version bump only. diff --git a/packages/standalone/package.json b/packages/standalone/package.json index 90a4b1e5cc8..322268d56df 100644 --- a/packages/standalone/package.json +++ b/packages/standalone/package.json @@ -1,7 +1,7 @@ { "name": "@typespec/standalone-cli", "private": true, - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec Standalone CLI", "homepage": "https://typespec.io", @@ -39,24 +39,24 @@ "!dist/test/**" ], "devDependencies": { - "@types/node": "~25.3.0", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "esbuild": "^0.27.0", - "execa": "^9.6.1", - "ora": "^9.0.0", - "postject": "1.0.0-alpha.6", - "rimraf": "~6.1.3", - "tsx": "^4.21.0", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@types/node": "catalog:", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "esbuild": "catalog:", + "execa": "catalog:", + "ora": "catalog:", + "postject": "catalog:", + "rimraf": "catalog:", + "tsx": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" }, "dependencies": { - "@yarnpkg/core": "^4.2.1", - "@yarnpkg/fslib": "^3.1.2", - "@yarnpkg/plugin-nm": "^4.0.6", - "@yarnpkg/plugin-npm": "^3.0.2", - "@yarnpkg/plugin-pnp": "^4.0.7" + "@yarnpkg/core": "catalog:", + "@yarnpkg/fslib": "catalog:", + "@yarnpkg/plugin-nm": "catalog:", + "@yarnpkg/plugin-npm": "catalog:", + "@yarnpkg/plugin-pnp": "catalog:" } } diff --git a/packages/streams/CHANGELOG.md b/packages/streams/CHANGELOG.md index 5c529933bc4..64ecf581323 100644 --- a/packages/streams/CHANGELOG.md +++ b/packages/streams/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog - @typespec/streams +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/streams/package.json b/packages/streams/package.json index df68e63ae19..5cc099832b2 100644 --- a/packages/streams/package.json +++ b/packages/streams/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/streams", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library providing stream bindings", "homepage": "https://typespec.io", @@ -56,15 +56,15 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/tmlanguage-generator/package.json b/packages/tmlanguage-generator/package.json index cb23aad94e6..b5eeaf4a6b7 100644 --- a/packages/tmlanguage-generator/package.json +++ b/packages/tmlanguage-generator/package.json @@ -33,13 +33,13 @@ "!dist/test/**" ], "dependencies": { - "onigasm": "~2.2.5", - "plist": "~3.1.0" + "onigasm": "catalog:", + "plist": "catalog:" }, "devDependencies": { - "@types/node": "~25.3.0", - "@types/plist": "~3.0.5", - "rimraf": "~6.1.3", - "typescript": "~5.9.3" + "@types/node": "catalog:", + "@types/plist": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:" } } diff --git a/packages/tsp-integration/package.json b/packages/tsp-integration/package.json index 00cb5f8bd1e..0acc71cd454 100644 --- a/packages/tsp-integration/package.json +++ b/packages/tsp-integration/package.json @@ -25,20 +25,20 @@ "test:watch": "vitest -w" }, "dependencies": { - "@pnpm/workspace.find-packages": "^1000.0.24", - "execa": "^9.6.1", - "globby": "~16.1.0", - "log-symbols": "^7.0.1", - "ora": "^9.0.0", - "pathe": "^2.0.3", - "picocolors": "~1.1.1", - "simple-git": "^3.28.0", - "tar": "^7.5.2", - "yaml": "~2.8.2" + "@pnpm/workspace.find-packages": "catalog:", + "execa": "catalog:", + "globby": "catalog:", + "log-symbols": "catalog:", + "ora": "catalog:", + "pathe": "catalog:", + "picocolors": "catalog:", + "simple-git": "catalog:", + "tar": "catalog:", + "yaml": "catalog:" }, "devDependencies": { - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "typescript": "catalog:", + "vitest": "catalog:" }, "bugs": "https://github.com/microsoft/typespec/issues" } diff --git a/packages/tspd/package.json b/packages/tspd/package.json index 5f3b2c5685a..20947c03336 100644 --- a/packages/tspd/package.json +++ b/packages/tspd/package.json @@ -55,34 +55,34 @@ "!dist/test/**" ], "dependencies": { - "@alloy-js/core": "^0.22.0", - "@alloy-js/markdown": "^0.22.0", - "@alloy-js/typescript": "^0.22.0", - "@microsoft/api-extractor": "^7.57.4", - "@microsoft/api-extractor-model": "^7.33.2", - "@microsoft/tsdoc": "^0.16.0", - "@microsoft/tsdoc-config": "^0.18.0", + "@alloy-js/core": "catalog:", + "@alloy-js/markdown": "catalog:", + "@alloy-js/typescript": "catalog:", + "@microsoft/api-extractor": "catalog:", + "@microsoft/api-extractor-model": "catalog:", + "@microsoft/tsdoc": "catalog:", + "@microsoft/tsdoc-config": "catalog:", "@typespec/compiler": "workspace:^", - "picocolors": "~1.1.1", - "prettier": "~3.8.0", - "typedoc": "^0.28.1", - "typedoc-plugin-markdown": "^4.5.2", - "yaml": "~2.8.2", - "yargs": "~18.0.0" + "picocolors": "catalog:", + "prettier": "catalog:", + "typedoc": "catalog:", + "typedoc-plugin-markdown": "catalog:", + "yaml": "catalog:", + "yargs": "catalog:" }, "devDependencies": { - "@alloy-js/cli": "^0.22.0", - "@alloy-js/rollup-plugin": "^0.1.0", - "@types/node": "~25.3.0", - "@types/yargs": "~17.0.33", + "@alloy-js/cli": "catalog:", + "@alloy-js/rollup-plugin": "catalog:", + "@types/node": "catalog:", + "@types/yargs": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/prettier-plugin-typespec": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "source-map-support": "~0.5.21", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "source-map-support": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/typespec-vs/CHANGELOG.md b/packages/typespec-vs/CHANGELOG.md index 08b51ac86c2..5f411ce5d2d 100644 --- a/packages/typespec-vs/CHANGELOG.md +++ b/packages/typespec-vs/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - typespec-vs +## 1.11.0 + +No changes, version bump only. + ## 1.10.0 No changes, version bump only. diff --git a/packages/typespec-vs/package.json b/packages/typespec-vs/package.json index 6d10c4db0b7..e1b61e9ed95 100644 --- a/packages/typespec-vs/package.json +++ b/packages/typespec-vs/package.json @@ -1,7 +1,7 @@ { "name": "typespec-vs", "author": "Microsoft Corporation", - "version": "1.10.0", + "version": "1.11.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 e97e78ec195..1ea2fa3a7d8 100644 --- a/packages/typespec-vscode/CHANGELOG.md +++ b/packages/typespec-vscode/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - typespec-vscode +## 1.11.0 + +No changes, version bump only. + ## 1.10.0 ### Bump dependencies diff --git a/packages/typespec-vscode/package.json b/packages/typespec-vscode/package.json index eebcca05761..b347e1e0c49 100644 --- a/packages/typespec-vscode/package.json +++ b/packages/typespec-vscode/package.json @@ -1,6 +1,6 @@ { "name": "typespec-vscode", - "version": "1.10.0", + "version": "1.11.0", "author": "Microsoft Corporation", "description": "TypeSpec language support for VS Code", "homepage": "https://typespec.io", @@ -26,7 +26,7 @@ "main": "./dist/src/extension.cjs", "browser": "./dist/src/web/extension.js", "engines": { - "vscode": "^1.109.0" + "vscode": "^1.110.0" }, "exports": { ".": { @@ -282,33 +282,31 @@ "test:extension": "vitest run --root test/extension" }, "devDependencies": { - "@types/cross-spawn": "~6.0.6", - "@types/mocha": "^10.0.9", - "@types/node": "~25.3.0", - "@types/semver": "^7.5.8", - "@types/vscode": "~1.109.0", - "@types/which": "^3.0.4", + "@types/cross-spawn": "catalog:", + "@types/node": "catalog:", + "@types/semver": "catalog:", + "@types/vscode": "~1.110.0", + "@types/which": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/internal-build-utils": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "@vscode/extension-telemetry": "^1.0.0", - "@vscode/test-electron": "^2.3.9", - "@vscode/test-web": "^0.0.79", - "@vscode/vsce": "~3.7.1", - "ajv": "~8.18.0", - "c8": "^11.0.0", - "cross-spawn": "^7.0.6", - "esbuild": "^0.27.0", - "mocha": "^11.1.0", - "playwright": "^1.57.0", - "rimraf": "~6.1.3", - "semver": "^7.7.1", - "swagger-ui-dist": "^5.20.1", - "typescript": "~5.9.3", - "vitest": "^4.0.18", - "vscode-languageclient": "~9.0.1", - "which": "^6.0.0", - "yaml": "~2.8.2" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "@vscode/extension-telemetry": "catalog:", + "@vscode/test-electron": "catalog:", + "@vscode/test-web": "catalog:", + "@vscode/vsce": "catalog:", + "ajv": "catalog:", + "c8": "catalog:", + "cross-spawn": "catalog:", + "esbuild": "catalog:", + "playwright": "catalog:", + "rimraf": "catalog:", + "semver": "catalog:", + "swagger-ui-dist": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:", + "vscode-languageclient": "catalog:", + "which": "catalog:", + "yaml": "catalog:" } } diff --git a/packages/typespec-vscode/test/extension/common/common-steps.ts b/packages/typespec-vscode/test/extension/common/common-steps.ts index fd4fffb580f..d05e2db33ee 100644 --- a/packages/typespec-vscode/test/extension/common/common-steps.ts +++ b/packages/typespec-vscode/test/extension/common/common-steps.ts @@ -26,7 +26,6 @@ export async function preContrastResult( await page.waitForSelector(`:text("${text}")`, { timeout }); } catch (e) { await cs.screenshot(page, "error"); - app.close(); throw new Error(`${errorMessage} - Timed out waiting for text: "${text}" - ${e}`, { cause: e }); } } diff --git a/packages/typespec-vscode/test/extension/common/mock-dialogs.ts b/packages/typespec-vscode/test/extension/common/mock-dialogs.ts index e8fd008ea2c..b06480d907e 100644 --- a/packages/typespec-vscode/test/extension/common/mock-dialogs.ts +++ b/packages/typespec-vscode/test/extension/common/mock-dialogs.ts @@ -37,7 +37,7 @@ export function stubDialog( return stubMultipleDialogs(app, [{ method, value }]); } -export function stubMultipleDialogs( +export async function stubMultipleDialogs( app: ElectronApplication, mocks: DialogMethodStubPartial[], ) { diff --git a/packages/typespec-vscode/test/extension/common/utils.ts b/packages/typespec-vscode/test/extension/common/utils.ts index 1624d8332bd..edd66d6ef9e 100644 --- a/packages/typespec-vscode/test/extension/common/utils.ts +++ b/packages/typespec-vscode/test/extension/common/utils.ts @@ -59,7 +59,18 @@ export const test = baseTest.extend<{ `--folder-uri=file:${path.resolve(workspacePath)}`, ].filter((v): v is string => !!v), }); + + // Ensure Electron is always closed on teardown, even if later steps fail. + teardowns.push(async () => { + try { + await app.close(); + } catch (error) {} + }); + const page = await app.firstWindow(); + // Wait for the page to fully load to reduce the chance of + // VS Code reloading the window and destroying the execution context. + await page.waitForLoadState("domcontentloaded"); const tracePath = join(projectRoot, "test-results", task.name, "trace.zip"); const artifactsDir = join(tempDir, "playwright-artifacts"); await fs.promises.mkdir(artifactsDir, { recursive: true }); // make sure the directory exists diff --git a/packages/typespec-vscode/test/extension/create-typespec.test.ts b/packages/typespec-vscode/test/extension/create-typespec.test.ts index cdbc7afefe5..c08dbefe414 100644 --- a/packages/typespec-vscode/test/extension/create-typespec.test.ts +++ b/packages/typespec-vscode/test/extension/create-typespec.test.ts @@ -69,6 +69,9 @@ describe.each(CreateCasesConfigList)("CreateTypespecProject", async (item) => { workspacePath: workspacePath, }); await cs.screenshot(page, "after_launch"); + // Wait for VS Code UI to be ready before mocking dialogs to avoid + // "Execution context was destroyed" errors from window reloads. + await page.waitForSelector(".explorer-viewlet", { timeout: 30000 }); await mockShowOpenDialog(app, [workspacePath]); await startWithCommandPalette(page, "Create Typespec Project", cs); await cs.screenshot(page, "after_start_command"); @@ -86,6 +89,5 @@ describe.each(CreateCasesConfigList)("CreateTypespecProject", async (item) => { app, ); await expectFilesInDir(expectedResults, workspacePath); - app.close(); }); }); diff --git a/packages/typespec-vscode/test/extension/emit-typespec.test.ts b/packages/typespec-vscode/test/extension/emit-typespec.test.ts index 5f4e9ad2ae4..6cffcf0d599 100644 --- a/packages/typespec-vscode/test/extension/emit-typespec.test.ts +++ b/packages/typespec-vscode/test/extension/emit-typespec.test.ts @@ -104,6 +104,5 @@ describe.each(EmitCasesConfigList)("EmitTypespecProject", async (item) => { } const resultFilePath = path.resolve(workspacePath, "./tsp-output/@typespec"); await expectFilesInDir(expectedResults, resultFilePath); - app.close(); }); }); diff --git a/packages/typespec-vscode/test/extension/import-typespec.test.ts b/packages/typespec-vscode/test/extension/import-typespec.test.ts index 3e4ea9a186d..1bc2cb2e653 100644 --- a/packages/typespec-vscode/test/extension/import-typespec.test.ts +++ b/packages/typespec-vscode/test/extension/import-typespec.test.ts @@ -99,6 +99,5 @@ describe.each(ImportCasesConfigList)("ImportTypespecFromOpenApi3", async (item) ); const resultFilePath = path.resolve(workspacePath, "./ImportTypespecProjectEmptyFolder"); await expectFilesInDir(expectedResults, resultFilePath); - app.close(); }); }); diff --git a/packages/typespec-vscode/test/extension/preview-typespec.test.ts b/packages/typespec-vscode/test/extension/preview-typespec.test.ts index 1e11cf61ace..587af2315d8 100644 --- a/packages/typespec-vscode/test/extension/preview-typespec.test.ts +++ b/packages/typespec-vscode/test/extension/preview-typespec.test.ts @@ -58,7 +58,7 @@ describe.each(PreviewCasesConfigList)("PreviewAPIDocument", async (item) => { test(caseName, async ({ launch }) => { const cs = new CaseScreenshot(caseName); const workspacePath = PreviewTypespecProjectFolderPath; - const { page, app } = await launch({ + const { page } = await launch({ workspacePath, }); await page.getByRole("treeitem", { name: "main.tsp" }).locator("a").click(); @@ -80,6 +80,5 @@ describe.each(PreviewCasesConfigList)("PreviewAPIDocument", async (item) => { cs, ); await rm(cs.caseDir, { recursive: true }); - app.close(); }); }); diff --git a/packages/typespec-vscode/test/web/suite.ts b/packages/typespec-vscode/test/web/suite.ts index 025ec99623f..9dfc2a0bc66 100644 --- a/packages/typespec-vscode/test/web/suite.ts +++ b/packages/typespec-vscode/test/web/suite.ts @@ -1,28 +1,4 @@ -// // imports mocha for the browser, defining the `mocha` global. -import "mocha/mocha"; - -mocha.setup({ - ui: "bdd", - reporter: undefined, - timeout: 20000, -}); - export async function run(): Promise { - await import("./web.test.js"); - return new Promise((c, e) => { - try { - // Run the mocha test - mocha.run((failures) => { - if (failures > 0) { - e(new Error(`${failures} tests failed.`)); - } else { - c(); - } - }); - } catch (err) { - // eslint-disable-next-line no-console - console.error(err); - e(err); - } - }); + const { runWebTests } = await import("./web.test.js"); + await runWebTests(); } diff --git a/packages/typespec-vscode/test/web/web.test.ts b/packages/typespec-vscode/test/web/web.test.ts index e5381170286..dfcb80b2d08 100644 --- a/packages/typespec-vscode/test/web/web.test.ts +++ b/packages/typespec-vscode/test/web/web.test.ts @@ -1,23 +1,16 @@ import * as vscode from "vscode"; -describe("Web Extension", () => { - vscode.window.showInformationMessage("Start all tests."); +export async function runWebTests(): Promise { + const ext = vscode.extensions.getExtension("typespec.typespec-vscode"); + if (!ext) { + throw new Error("Could not find extension!"); + } + await ext.activate(); - let basicUri: vscode.Uri; - before(async () => { - const ext = vscode.extensions.getExtension("typespec.typespec-vscode"); - if (!ext) { - throw new Error("Could not find extension!"); - } - await ext!.activate(); + const scheme = ext.extensionUri.scheme === "file" ? "file" : "vscode-test-web"; + const pathPrefix = scheme === "file" ? ext.extensionUri.fsPath + "/test" : ""; + const basicUri = vscode.Uri.from({ scheme, path: pathPrefix + "/basic.tsp" }); - const scheme = ext?.extensionUri.scheme === "file" ? "file" : "vscode-test-web"; - const pathPrefix = scheme === "file" ? ext?.extensionUri.fsPath + "/test" : ""; - - basicUri = vscode.Uri.from({ scheme, path: pathPrefix + "/basic.tsp" }); - }); - - it("open tsp file", async () => { - await vscode.workspace.openTextDocument(basicUri); - }); -}); + // Test: open tsp file + await vscode.workspace.openTextDocument(basicUri); +} diff --git a/packages/typespec-vscode/tsconfig.json b/packages/typespec-vscode/tsconfig.json index 71612145ff4..f8068cf9928 100644 --- a/packages/typespec-vscode/tsconfig.json +++ b/packages/typespec-vscode/tsconfig.json @@ -11,7 +11,7 @@ "noEmitOnError": true, "outDir": "dist", "skipLibCheck": true, - "types": ["mocha"], + "types": [], "rootDir": "." }, "exclude": ["dist", "temp", "templates", "vitest.config.ts"] diff --git a/packages/versioning/CHANGELOG.md b/packages/versioning/CHANGELOG.md index 5f10e5c68bf..d18f020a9b3 100644 --- a/packages/versioning/CHANGELOG.md +++ b/packages/versioning/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log - @typespec/versioning +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/versioning/package.json b/packages/versioning/package.json index 2783dcd21ab..40fdfdd2fbd 100644 --- a/packages/versioning/package.json +++ b/packages/versioning/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/versioning", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library for declaring and emitting versioned APIs", "homepage": "https://typespec.io", @@ -55,15 +55,15 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/versioning/test/mutations/apply-snapshot-versioning.test.ts b/packages/versioning/test/mutations/apply-snapshot-versioning.test.ts index 9c997ca69ea..7e0828f423a 100644 --- a/packages/versioning/test/mutations/apply-snapshot-versioning.test.ts +++ b/packages/versioning/test/mutations/apply-snapshot-versioning.test.ts @@ -1,4 +1,10 @@ -import type { Namespace, Scalar, Type } from "@typespec/compiler"; +import { + getMediaTypeHint, + type Namespace, + type Program, + type Scalar, + type Type, +} from "@typespec/compiler"; import { unsafe_mutateSubgraphWithNamespace } from "@typespec/compiler/experimental"; import { t } from "@typespec/compiler/testing"; import { strictEqual } from "assert"; @@ -15,7 +21,7 @@ const baseCode = ` `; async function testMutationLogic( code: string, -): Promise<{ v1: Namespace; v2: Namespace; v3: Namespace }> { +): Promise<{ program: Program; v1: Namespace; v2: Namespace; v3: Namespace }> { const runner = await Tester.createInstance(); const fullCode = baseCode + "\n" + code; const { Service } = await runner.compile(fullCode); @@ -25,7 +31,7 @@ async function testMutationLogic( (x) => unsafe_mutateSubgraphWithNamespace(runner.program, [x.mutator], Service as Namespace).type, ); - return { v1, v2, v3 } as any; + return { program: runner.program, v1, v2, v3 } as any; } async function itCanBeAddedRemovedAndRenamed( @@ -106,6 +112,19 @@ describe("models", () => { (ns) => ns.models, (decorators) => `${decorators} model A {}`, ); + + it("preserves @mediaTypeHint state on version snapshot clones", async () => { + const { program, v1, v2, v3 } = await testMutationLogic(` + @mediaTypeHint("application/merge-patch+json") + model PatchBody {} + `); + + for (const ns of [v1, v2, v3]) { + const model = ns.models.get("PatchBody"); + expect(model).toBeDefined(); + expect(getMediaTypeHint(program, model!)).toBe("application/merge-patch+json"); + } + }); }); describe("model properties", () => { diff --git a/packages/xml/CHANGELOG.md b/packages/xml/CHANGELOG.md index 0c921d23988..5400de3b713 100644 --- a/packages/xml/CHANGELOG.md +++ b/packages/xml/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog - @typespec/xml +## 0.81.0 + +No changes, version bump only. + ## 0.80.0 ### Bump dependencies diff --git a/packages/xml/package.json b/packages/xml/package.json index 43c5d52349c..a8fe32ef7a8 100644 --- a/packages/xml/package.json +++ b/packages/xml/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/xml", - "version": "0.80.0", + "version": "0.81.0", "author": "Microsoft Corporation", "description": "TypeSpec library providing xml bindings", "homepage": "https://typespec.io", @@ -53,15 +53,15 @@ "@typespec/compiler": "workspace:^" }, "devDependencies": { - "@types/node": "~25.3.0", + "@types/node": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/library-linter": "workspace:^", "@typespec/tspd": "workspace:^", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/ui": "^4.0.18", - "c8": "^11.0.0", - "rimraf": "~6.1.3", - "typescript": "~5.9.3", - "vitest": "^4.0.18" + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "c8": "catalog:", + "rimraf": "catalog:", + "typescript": "catalog:", + "vitest": "catalog:" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99e5c06ef65..f91e817d807 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,112 +4,654 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + '@alloy-js/cli': + specifier: ^0.22.0 + version: 0.22.0 + '@alloy-js/core': + specifier: ^0.22.0 + version: 0.22.0 + '@alloy-js/csharp': + specifier: ^0.22.0 + version: 0.22.0 + '@alloy-js/markdown': + specifier: ^0.22.0 + version: 0.22.0 + '@alloy-js/python': + specifier: ^0.3.0 + version: 0.3.0 + '@alloy-js/rollup-plugin': + specifier: ^0.1.0 + version: 0.1.0 + '@alloy-js/typescript': + specifier: ^0.22.0 + version: 0.22.0 + '@astrojs/check': + specifier: ^0.9.7 + version: 0.9.7 + '@astrojs/react': + specifier: ^5.0.0 + version: 5.0.0 + '@astrojs/starlight': + specifier: ^0.38.1 + version: 0.38.1 + '@azure/identity': + specifier: ~4.13.0 + version: 4.13.0 + '@azure/storage-blob': + specifier: ~12.31.0 + version: 12.31.0 + '@babel/code-frame': + specifier: ~7.29.0 + version: 7.29.0 + '@babel/core': + specifier: ^7.29.0 + version: 7.29.0 + '@chronus/chronus': + specifier: ^1.3.1 + version: 1.3.1 + '@chronus/github': + specifier: ^1.0.6 + version: 1.0.6 + '@chronus/github-pr-commenter': + specifier: ^1.0.6 + version: 1.0.6 + '@docsearch/css': + specifier: ^4.6.0 + version: 4.6.0 + '@docsearch/js': + specifier: ^4.6.0 + version: 4.6.0 + '@eslint/js': + specifier: ^10.0.1 + version: 10.0.1 + '@expressive-code/core': + specifier: ^0.41.7 + version: 0.41.7 + '@fluentui/react-components': + specifier: ~9.73.3 + version: 9.73.3 + '@fluentui/react-icons': + specifier: ^2.0.323 + version: 2.0.323 + '@fluentui/react-list': + specifier: ^9.6.12 + version: 9.6.12 + '@inquirer/prompts': + specifier: ^8.3.0 + version: 8.3.0 + '@microsoft/api-extractor': + specifier: ^7.57.7 + version: 7.57.7 + '@microsoft/api-extractor-model': + specifier: ^7.33.4 + version: 7.33.4 + '@microsoft/tsdoc': + specifier: ^0.16.0 + version: 0.16.0 + '@microsoft/tsdoc-config': + specifier: ^0.18.1 + version: 0.18.1 + '@octokit/core': + specifier: ^7.0.6 + version: 7.0.6 + '@octokit/plugin-paginate-graphql': + specifier: ^6.0.0 + version: 6.0.0 + '@octokit/plugin-rest-endpoint-methods': + specifier: ^17.0.0 + version: 17.0.0 + '@playwright/test': + specifier: ^1.58.2 + version: 1.58.2 + '@pnpm/workspace.find-packages': + specifier: ^1000.0.64 + version: 1000.0.64 + '@scalar/json-magic': + specifier: ^0.11.5 + version: 0.11.7 + '@scalar/openapi-parser': + specifier: ^0.24.1 + version: 0.24.17 + '@scalar/openapi-types': + specifier: ^0.5.0 + version: 0.5.4 + '@storybook/cli': + specifier: ^10.3.3 + version: 10.3.3 + '@storybook/react-vite': + specifier: ^10.3.3 + version: 10.3.3 + '@testing-library/dom': + specifier: ^10.4.1 + version: 10.4.1 + '@testing-library/jest-dom': + specifier: ^6.9.1 + version: 6.9.1 + '@testing-library/react': + specifier: ^16.3.2 + version: 16.3.2 + '@types/babel__code-frame': + specifier: ~7.27.0 + version: 7.27.0 + '@types/body-parser': + specifier: ^1.19.6 + version: 1.19.6 + '@types/cross-spawn': + specifier: ~6.0.6 + version: 6.0.6 + '@types/debounce': + specifier: ~1.2.4 + version: 1.2.4 + '@types/deep-equal': + specifier: ^1.0.4 + version: 1.0.4 + '@types/express': + specifier: ^5.0.6 + version: 5.0.6 + '@types/micromatch': + specifier: ^4.0.10 + version: 4.0.10 + '@types/morgan': + specifier: ^1.9.10 + version: 1.9.10 + '@types/multer': + specifier: ^2.1.0 + version: 2.1.0 + '@types/mustache': + specifier: ~4.2.6 + version: 4.2.6 + '@types/node': + specifier: ~25.5.0 + version: 25.5.0 + '@types/plist': + specifier: ~3.0.5 + version: 3.0.5 + '@types/react': + specifier: ~19.2.14 + version: 19.2.14 + '@types/react-dom': + specifier: ~19.2.3 + version: 19.2.3 + '@types/remark-heading-id': + specifier: ^1.0.0 + version: 1.0.0 + '@types/semver': + specifier: ^7.7.1 + version: 7.7.1 + '@types/swagger-ui': + specifier: ~5.32.0 + version: 5.32.0 + '@types/swagger-ui-dist': + specifier: ~3.30.6 + version: 3.30.6 + '@types/swagger-ui-express': + specifier: ^4.1.8 + version: 4.1.8 + '@types/which': + specifier: ^3.0.4 + version: 3.0.4 + '@types/xml2js': + specifier: ^0.4.14 + version: 0.4.14 + '@types/yargs': + specifier: ~17.0.35 + version: 17.0.35 + '@typescript-eslint/parser': + specifier: ^8.57.0 + version: 8.57.0 + '@typescript-eslint/rule-tester': + specifier: ^8.57.0 + version: 8.57.0 + '@typescript-eslint/types': + specifier: ^8.57.0 + version: 8.57.0 + '@typescript-eslint/utils': + specifier: ^8.57.0 + version: 8.57.0 + '@typespec/ts-http-runtime': + specifier: 0.3.4 + version: 0.3.4 + '@vitejs/plugin-react': + specifier: ~6.0.1 + version: 6.0.1 + '@vitest/coverage-v8': + specifier: ^4.1.0 + version: 4.1.0 + '@vitest/eslint-plugin': + specifier: ^1.6.12 + version: 1.6.12 + '@vitest/ui': + specifier: ^4.1.0 + version: 4.1.0 + '@vscode/extension-telemetry': + specifier: ^1.5.1 + version: 1.5.1 + '@vscode/test-electron': + specifier: ^2.5.2 + version: 2.5.2 + '@vscode/test-web': + specifier: ^0.0.80 + version: 0.0.80 + '@vscode/vsce': + specifier: ~3.7.1 + version: 3.7.1 + '@yarnpkg/core': + specifier: ^4.6.0 + version: 4.6.0 + '@yarnpkg/fslib': + specifier: ^3.1.4 + version: 3.1.5 + '@yarnpkg/plugin-nm': + specifier: ^4.0.8 + version: 4.0.8 + '@yarnpkg/plugin-npm': + specifier: ^3.4.0 + version: 3.4.1 + '@yarnpkg/plugin-pnp': + specifier: ^4.1.3 + version: 4.1.3 + ajv: + specifier: ~8.18.0 + version: 8.18.0 + ajv-formats: + specifier: ~3.0.1 + version: 3.0.1 + astro: + specifier: ^6.0.4 + version: 6.0.4 + astro-expressive-code: + specifier: ^0.41.7 + version: 0.41.7 + astro-rehype-relative-markdown-links: + specifier: ^0.18.1 + version: 0.18.1 + body-parser: + specifier: ^2.2.2 + version: 2.2.2 + c8: + specifier: ^11.0.0 + version: 11.0.0 + change-case: + specifier: ~5.4.4 + version: 5.4.4 + chokidar: + specifier: ~5.0.0 + version: 5.0.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + concurrently: + specifier: ^9.2.1 + version: 9.2.1 + cross-env: + specifier: ~10.1.0 + version: 10.1.0 + cross-spawn: + specifier: ^7.0.6 + version: 7.0.6 + cspell: + specifier: ^9.7.0 + version: 9.7.0 + date-fns: + specifier: ^4.1.0 + version: 4.1.0 + debounce: + specifier: ~3.0.0 + version: 3.0.0 + decimal.js: + specifier: ^10.6.0 + version: 10.6.0 + deep-equal: + specifier: ^2.2.3 + version: 2.2.3 + ecmarkup: + specifier: ~23.0.2 + version: 23.0.2 + env-paths: + specifier: ^4.0.0 + version: 4.0.0 + es-module-shims: + specifier: ~2.8.0 + version: 2.8.0 + esbuild: + specifier: ^0.27.4 + version: 0.27.4 + esbuild-plugins-node-modules-polyfill: + specifier: ^1.8.1 + version: 1.8.1 + eslint: + specifier: ^10.0.3 + version: 10.0.3 + eslint-plugin-react-hooks: + specifier: 7.0.1 + version: 7.0.1 + eslint-plugin-unicorn: + specifier: ^63.0.0 + version: 63.0.0 + execa: + specifier: ^9.6.1 + version: 9.6.1 + express: + specifier: ^5.2.1 + version: 5.2.1 + fs-extra: + specifier: ^11.3.4 + version: 11.3.4 + globby: + specifier: ~16.1.1 + version: 16.1.1 + grammarkdown: + specifier: ~3.3.2 + version: 3.3.2 + happy-dom: + specifier: ^20.8.9 + version: 20.8.9 + inquirer: + specifier: ^13.3.0 + version: 13.3.0 + is-unicode-supported: + specifier: ^2.1.0 + version: 2.1.0 + json5: + specifier: ^2.2.3 + version: 2.2.3 + log-symbols: + specifier: ^7.0.1 + version: 7.0.1 + lzutf8: + specifier: 0.6.3 + version: 0.6.3 + micromatch: + specifier: ^4.0.8 + version: 4.0.8 + monaco-editor: + specifier: ~0.55.1 + version: 0.55.1 + monaco-editor-core: + specifier: ^0.55.1 + version: 0.55.1 + morgan: + specifier: ^1.10.1 + version: 1.10.1 + multer: + specifier: ^2.1.1 + version: 2.1.1 + mustache: + specifier: ~4.2.0 + version: 4.2.0 + onigasm: + specifier: ~2.2.5 + version: 2.2.5 + ora: + specifier: ^9.3.0 + version: 9.3.0 + p-limit: + specifier: ^7.3.0 + version: 7.3.0 + pathe: + specifier: ^2.0.3 + version: 2.0.3 + picocolors: + specifier: ~1.1.1 + version: 1.1.1 + playwright: + specifier: ^1.58.2 + version: 1.58.2 + plist: + specifier: ~3.1.0 + version: 3.1.0 + postject: + specifier: 1.0.0-alpha.6 + version: 1.0.0-alpha.6 + prettier: + specifier: ~3.8.1 + version: 3.8.1 + prettier-plugin-astro: + specifier: ^0.14.1 + version: 0.14.1 + prettier-plugin-organize-imports: + specifier: ~4.3.0 + version: 4.3.0 + prettier-plugin-sh: + specifier: ^0.18.0 + version: 0.18.0 + prism-react-renderer: + specifier: ^2.4.1 + version: 2.4.1 + react: + specifier: ~19.2.4 + version: 19.2.4 + react-dom: + specifier: ~19.2.4 + version: 19.2.4 + react-error-boundary: + specifier: ^6.1.1 + version: 6.1.1 + react-hotkeys-hook: + specifier: ^5.2.4 + version: 5.2.4 + react-markdown: + specifier: ^10.1.0 + version: 10.1.0 + rehype-mermaid: + specifier: ^3.0.0 + version: 3.0.0 + remark-heading-id: + specifier: ^1.0.1 + version: 1.0.1 + rimraf: + specifier: ~6.1.3 + version: 6.1.3 + rollup-plugin-visualizer: + specifier: 6.0.4 + version: 6.0.4 + semver: + specifier: ^7.7.4 + version: 7.7.4 + sharp: + specifier: ^0.34.5 + version: 0.34.5 + simple-git: + specifier: ^3.33.0 + version: 3.33.0 + source-map-support: + specifier: ~0.5.21 + version: 0.5.21 + storybook: + specifier: ^10.3.3 + version: 10.3.3 + strip-json-comments: + specifier: ~5.0.3 + version: 5.0.3 + swagger-ui-dist: + specifier: ^5.32.0 + version: 5.32.0 + swagger-ui-express: + specifier: ^5.0.1 + version: 5.0.1 + tar: + specifier: ^7.5.11 + version: 7.5.11 + temporal-polyfill: + specifier: ^0.3.2 + version: 0.3.2 + tree-sitter-c-sharp: + specifier: ^0.23.1 + version: 0.23.1 + tree-sitter-java: + specifier: ^0.23.5 + version: 0.23.5 + tree-sitter-javascript: + specifier: ^0.25.0 + version: 0.25.0 + tree-sitter-python: + specifier: ^0.25.0 + version: 0.25.0 + tree-sitter-typescript: + specifier: ^0.23.2 + version: 0.23.2 + tsx: + specifier: ^4.21.0 + version: 4.21.0 + typedoc: + specifier: ^0.28.17 + version: 0.28.17 + typedoc-plugin-markdown: + specifier: ^4.10.0 + version: 4.10.0 + typescript: + specifier: ~5.9.3 + version: 5.9.3 + typescript-eslint: + specifier: ^8.57.0 + version: 8.57.0 + uri-template: + specifier: ^2.0.0 + version: 2.0.0 + vite: + specifier: ^8.0.1 + version: 8.0.1 + vite-plugin-checker: + specifier: ^0.12.0 + version: 0.12.0 + vite-plugin-dts: + specifier: 4.5.4 + version: 4.5.4 + vitest: + specifier: ^4.1.0 + version: 4.1.0 + vscode-languageclient: + specifier: ~9.0.1 + version: 9.0.1 + vscode-languageserver: + specifier: ~9.0.1 + version: 9.0.1 + vscode-languageserver-textdocument: + specifier: ~1.0.12 + version: 1.0.12 + vscode-oniguruma: + specifier: ~2.0.1 + version: 2.0.1 + vscode-textmate: + specifier: ~9.3.2 + version: 9.3.2 + web-tree-sitter: + specifier: ^0.26.7 + version: 0.26.7 + which: + specifier: ^6.0.1 + version: 6.0.1 + xml2js: + specifier: ^0.6.2 + version: 0.6.2 + yaml: + specifier: ~2.8.2 + version: 2.8.2 + yargs: + specifier: ~18.0.0 + version: 18.0.0 + overrides: - cross-spawn@>=7.0.0 <7.0.5: ^7.0.5 - rollup: 4.49.0 + dompurify: ^3.3.3 + cross-spawn@>=7.0.0 <7.0.5: '>=7.0.5' + diff@>=6.0.0 <8.0.3: '>=8.0.3' + yaml@>=2.0.0 <2.8.3: '>=2.8.3' importers: .: devDependencies: '@chronus/chronus': - specifier: ^1.0.1 - version: 1.3.0 + specifier: 'catalog:' + version: 1.3.1 '@chronus/github': - specifier: ^1.0.1 - version: 1.0.5 + specifier: 'catalog:' + version: 1.0.6 '@chronus/github-pr-commenter': - specifier: ^1.0.1 - version: 1.0.5 + specifier: 'catalog:' + version: 1.0.6 '@eslint/js': - specifier: ^10.0.1 - version: 10.0.1(eslint@10.0.2) + specifier: 'catalog:' + version: 10.0.1(eslint@10.0.3) '@microsoft/api-extractor': - specifier: ^7.57.4 - version: 7.57.6(@types/node@25.3.0) + specifier: 'catalog:' + version: 7.57.7(@types/node@25.5.0) '@octokit/core': - specifier: ^7.0.2 + specifier: 'catalog:' version: 7.0.6 '@octokit/plugin-paginate-graphql': - specifier: ^6.0.0 + specifier: 'catalog:' version: 6.0.0(@octokit/core@7.0.6) '@octokit/plugin-rest-endpoint-methods': - specifier: ^17.0.0 + specifier: 'catalog:' version: 17.0.0(@octokit/core@7.0.6) '@types/micromatch': - specifier: ^4.0.9 + specifier: 'catalog:' version: 4.0.10 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/eslint-plugin': - specifier: ^1.5.2 - version: 1.6.9(eslint@10.0.2)(typescript@5.9.3)(vitest@4.0.18) + specifier: 'catalog:' + version: 1.6.12(eslint@10.0.3)(typescript@5.9.3)(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 cspell: - specifier: ^9.4.0 + specifier: 'catalog:' version: 9.7.0 eslint: - specifier: ^10.0.2 - version: 10.0.2 - eslint-plugin-import: - specifier: ^2.31.0 - version: 2.32.0(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2) + specifier: 'catalog:' + version: 10.0.3 eslint-plugin-react-hooks: - specifier: 7.0.1 - version: 7.0.1(eslint@10.0.2) + specifier: 'catalog:' + version: 7.0.1(eslint@10.0.3) eslint-plugin-unicorn: - specifier: ^63.0.0 - version: 63.0.0(eslint@10.0.2) + specifier: 'catalog:' + version: 63.0.0(eslint@10.0.3) micromatch: - specifier: ^4.0.8 + specifier: 'catalog:' version: 4.0.8 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 playwright: - specifier: ^1.57.0 + specifier: 'catalog:' version: 1.58.2 prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 prettier-plugin-astro: - specifier: ^0.14.1 + specifier: 'catalog:' version: 0.14.1 prettier-plugin-organize-imports: - specifier: ~4.3.0 + specifier: 'catalog:' version: 4.3.0(prettier@3.8.1)(typescript@5.9.3) prettier-plugin-sh: - specifier: ^0.18.0 + specifier: 'catalog:' version: 0.18.0(prettier@3.8.1) rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 - syncpack: - specifier: ^13.0.3 - version: 13.0.4(typescript@5.9.3) tsx: - specifier: ^4.21.0 + specifier: 'catalog:' version: 4.21.0 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 typescript-eslint: - specifier: ^8.49.0 - version: 8.56.1(eslint@10.0.2)(typescript@5.9.3) - vite-plugin-node-polyfills: - specifier: ^0.25.0 - version: 0.25.0(rollup@4.49.0)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 8.57.0(eslint@10.0.3)(typescript@5.9.3) vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 e2e: {} @@ -117,139 +659,139 @@ importers: packages/asset-emitter: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/astro-utils: dependencies: '@astrojs/check': - specifier: ^0.9.4 - version: 0.9.6(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3) + specifier: 'catalog:' + version: 0.9.7(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3) '@astrojs/starlight': - specifier: ^0.37.0 - version: 0.37.6(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.38.1(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) '@expressive-code/core': - specifier: ^0.41.2 + specifier: 'catalog:' version: 0.41.7 '@typespec/playground': specifier: workspace:^ version: link:../playground astro-expressive-code: - specifier: ^0.41.2 - version: 0.41.7(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.41.7(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) pathe: - specifier: ^2.0.3 + specifier: 'catalog:' version: 2.0.3 react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 devDependencies: '@types/react': - specifier: ~19.2.7 + specifier: 'catalog:' version: 19.2.14 astro: - specifier: ^5.16.5 - version: 5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + specifier: 'catalog:' + version: 6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) packages/best-practices: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/bundle-uploader: dependencies: '@azure/identity': - specifier: ~4.13.0 + specifier: 'catalog:' version: 4.13.0 '@azure/storage-blob': - specifier: ~12.31.0 + specifier: 'catalog:' version: 12.31.0 '@pnpm/workspace.find-packages': - specifier: ^1000.0.24 - version: 1000.0.62(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + specifier: 'catalog:' + version: 1000.0.64(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@typespec/bundler': specifier: workspace:^ version: link:../bundler json5: - specifier: ^2.2.3 + specifier: 'catalog:' version: 2.2.3 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 semver: - specifier: ^7.7.1 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/semver': - specifier: ^7.5.8 + specifier: 'catalog:' version: 7.7.1 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/bundler: dependencies: @@ -257,261 +799,258 @@ importers: specifier: workspace:^ version: link:../compiler esbuild: - specifier: ^0.27.0 - version: 0.27.3 + specifier: 'catalog:' + version: 0.27.4 esbuild-plugins-node-modules-polyfill: - specifier: ^1.7.0 - version: 1.8.1(esbuild@0.27.3) - node-stdlib-browser: - specifier: ~1.3.1 - version: 1.3.1 + specifier: 'catalog:' + version: 1.8.1(esbuild@0.27.4) picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vite: - specifier: ^7.2.7 - version: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/compiler: dependencies: '@babel/code-frame': - specifier: ~7.29.0 + specifier: 'catalog:' version: 7.29.0 '@inquirer/prompts': - specifier: ^8.0.1 - version: 8.3.0(@types/node@25.3.0) + specifier: 'catalog:' + version: 8.3.0(@types/node@25.5.0) ajv: - specifier: ~8.18.0 + specifier: 'catalog:' version: 8.18.0 change-case: - specifier: ~5.4.4 + specifier: 'catalog:' version: 5.4.4 env-paths: - specifier: ^4.0.0 + specifier: 'catalog:' version: 4.0.0 globby: - specifier: ~16.1.0 + specifier: 'catalog:' version: 16.1.1 is-unicode-supported: - specifier: ^2.1.0 + specifier: 'catalog:' version: 2.1.0 mustache: - specifier: ~4.2.0 + specifier: 'catalog:' version: 4.2.0 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 semver: - specifier: ^7.7.1 + specifier: 'catalog:' version: 7.7.4 tar: - specifier: ^7.5.2 - version: 7.5.9 + specifier: 'catalog:' + version: 7.5.11 temporal-polyfill: - specifier: ^0.3.0 - version: 0.3.0 + specifier: 'catalog:' + version: 0.3.2 vscode-languageserver: - specifier: ~9.0.1 + specifier: 'catalog:' version: 9.0.1 vscode-languageserver-textdocument: - specifier: ~1.0.12 + specifier: 'catalog:' version: 1.0.12 yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 devDependencies: '@types/babel__code-frame': - specifier: ~7.27.0 + specifier: 'catalog:' version: 7.27.0 '@types/mustache': - specifier: ~4.2.5 + specifier: 'catalog:' version: 4.2.6 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/semver': - specifier: ^7.5.8 + specifier: 'catalog:' version: 7.7.1 '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@typespec/internal-build-utils': specifier: workspace:^ version: link:../internal-build-utils '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 grammarkdown: - specifier: ~3.3.2 + specifier: 'catalog:' version: 3.3.2 pathe: - specifier: ^2.0.3 + specifier: 'catalog:' version: 2.0.3 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 source-map-support: - specifier: ~0.5.21 + specifier: 'catalog:' version: 0.5.21 tmlanguage-generator: specifier: workspace:^ version: link:../tmlanguage-generator typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) vscode-oniguruma: - specifier: ~2.0.1 + specifier: 'catalog:' version: 2.0.1 vscode-textmate: - specifier: ~9.3.0 + specifier: 'catalog:' version: 9.3.2 packages/emitter-framework: dependencies: '@alloy-js/csharp': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 devDependencies: '@alloy-js/cli': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/core': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/python': - specifier: ^0.3.0 + specifier: 'catalog:' version: 0.3.0 '@alloy-js/rollup-plugin': - specifier: ^0.1.0 - version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.49.0) + specifier: 'catalog:' + version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.0) '@alloy-js/typescript': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler concurrently: - specifier: ^9.1.2 + specifier: 'catalog:' version: 9.2.1 pathe: - specifier: ^2.0.3 + specifier: 'catalog:' version: 2.0.3 prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 tree-sitter-c-sharp: - specifier: ^0.23.0 + specifier: 'catalog:' version: 0.23.1 tree-sitter-java: - specifier: ^0.23.2 + specifier: 'catalog:' version: 0.23.5 tree-sitter-javascript: - specifier: ^0.25.0 + specifier: 'catalog:' version: 0.25.0 tree-sitter-python: - specifier: ^0.25.0 + specifier: 'catalog:' version: 0.25.0 tree-sitter-typescript: - specifier: ^0.23.0 + specifier: 'catalog:' version: 0.23.2 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) web-tree-sitter: - specifier: ^0.26.3 - version: 0.26.6 + specifier: 'catalog:' + version: 0.26.7 packages/eslint-plugin-typespec: dependencies: '@typescript-eslint/utils': - specifier: ^8.27.0 - version: 8.56.1(eslint@10.0.2)(typescript@5.9.3) + specifier: 'catalog:' + version: 8.57.0(eslint@10.0.3)(typescript@5.9.3) devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typescript-eslint/parser': - specifier: ^8.49.0 - version: 8.56.1(eslint@10.0.2)(typescript@5.9.3) + specifier: 'catalog:' + version: 8.57.0(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/rule-tester': - specifier: ^8.49.0 - version: 8.56.1(eslint@10.0.2)(typescript@5.9.3) + specifier: 'catalog:' + version: 8.57.0(eslint@10.0.3)(typescript@5.9.3) '@typescript-eslint/types': - specifier: ^8.49.0 - version: 8.56.1 + specifier: 'catalog:' + version: 8.57.0 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 eslint: - specifier: ^10.0.2 - version: 10.0.2 + specifier: 'catalog:' + version: 10.0.3 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/events: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -522,65 +1061,65 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/html-program-viewer: dependencies: '@fluentui/react-components': - specifier: ~9.73.1 - version: 9.73.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + specifier: 'catalog:' + version: 9.73.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-icons': - specifier: ^2.0.292 - version: 2.0.319(react@19.2.4) + specifier: 'catalog:' + version: 2.0.323(react@19.2.4) '@fluentui/react-list': - specifier: ^9.1.2 - version: 9.6.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + specifier: 'catalog:' + version: 9.6.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) react-hotkeys-hook: - specifier: ^5.1.0 + specifier: 'catalog:' version: 5.2.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) devDependencies: '@babel/core': - specifier: ^7.26.10 + specifier: 'catalog:' version: 7.29.0 '@testing-library/dom': - specifier: ^10.4.0 + specifier: 'catalog:' version: 10.4.1 '@testing-library/jest-dom': - specifier: ^6.6.3 + specifier: 'catalog:' version: 6.9.1 '@testing-library/react': - specifier: ^16.2.0 + specifier: 'catalog:' version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/react': - specifier: ~19.2.7 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ~19.2.2 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@typespec/compiler': specifier: workspace:^ @@ -589,44 +1128,41 @@ importers: specifier: workspace:^ version: link:../react-components '@vitejs/plugin-react': - specifier: ~5.1.2 - version: 5.1.4(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 6.0.1(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vite: - specifier: ^7.2.7 - version: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-checker: - specifier: ^0.12.0 - version: 0.12.0(eslint@10.0.2)(optionator@0.9.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.12.0(eslint@10.0.3)(optionator@0.9.4)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.3.0)(rollup@4.49.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) - vite-plugin-node-polyfills: - specifier: ^0.25.0 - version: 0.25.0(rollup@4.49.0)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 4.5.4(@types/node@25.5.0)(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/http: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -640,23 +1176,23 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/http-canonicalization: dependencies: @@ -674,32 +1210,32 @@ importers: version: link:../mutator-framework devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 concurrently: - specifier: ^9.1.2 + specifier: 'catalog:' version: 9.2.1 prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 packages/http-client: devDependencies: '@alloy-js/cli': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/core': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/rollup-plugin': - specifier: ^0.1.0 - version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.49.0) + specifier: 'catalog:' + version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.0) '@alloy-js/typescript': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -716,19 +1252,19 @@ importers: specifier: workspace:^ version: link:../tspd typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/http-client-js: dependencies: '@alloy-js/core': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/typescript': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@typespec/compiler': specifier: workspace:^ @@ -743,17 +1279,17 @@ importers: specifier: workspace:^ version: link:../rest prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 devDependencies: '@alloy-js/cli': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/rollup-plugin': - specifier: ^0.1.0 - version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.49.0) + specifier: 'catalog:' + version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.0) '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@typespec/http': specifier: workspace:^ @@ -765,8 +1301,8 @@ importers: specifier: workspace:^ version: link:../spector '@typespec/ts-http-runtime': - specifier: 0.3.3 - version: 0.3.3 + specifier: 'catalog:' + version: 0.3.4 '@typespec/tspd': specifier: workspace:^ version: link:../tspd @@ -774,49 +1310,49 @@ importers: specifier: workspace:^ version: link:../versioning '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) change-case: - specifier: ~5.4.4 + specifier: 'catalog:' version: 5.4.4 concurrently: - specifier: ^9.1.2 + specifier: 'catalog:' version: 9.2.1 cross-env: - specifier: ~10.1.0 + specifier: 'catalog:' version: 10.1.0 execa: - specifier: ^9.6.1 + specifier: 'catalog:' version: 9.6.1 fs-extra: - specifier: ^11.2.0 - version: 11.3.3 + specifier: 'catalog:' + version: 11.3.4 globby: - specifier: ~16.1.0 + specifier: 'catalog:' version: 16.1.1 inquirer: - specifier: ^13.1.0 - version: 13.3.0(@types/node@25.3.0) + specifier: 'catalog:' + version: 13.3.0(@types/node@25.5.0) ora: - specifier: ^9.0.0 + specifier: 'catalog:' version: 9.3.0 p-limit: - specifier: ^7.1.1 + specifier: 'catalog:' version: 7.3.0 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 uri-template: - specifier: ^2.0.0 + specifier: 'catalog:' version: 2.0.0 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 packages/http-server-csharp: @@ -825,29 +1361,29 @@ importers: specifier: workspace:^ version: link:../asset-emitter change-case: - specifier: ~5.4.4 + specifier: 'catalog:' version: 5.4.4 cross-spawn: - specifier: ^7.0.6 + specifier: 'catalog:' version: 7.0.6 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 devDependencies: '@types/cross-spawn': - specifier: ~6.0.6 + specifier: 'catalog:' version: 6.0.6 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@typespec/compiler': specifier: workspace:^ @@ -883,56 +1419,56 @@ importers: specifier: workspace:^ version: link:../versioning '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) fs-extra: - specifier: ^11.2.0 - version: 11.3.3 + specifier: 'catalog:' + version: 11.3.4 globby: - specifier: ~16.1.0 + specifier: 'catalog:' version: 16.1.1 inquirer: - specifier: ^13.1.0 - version: 13.3.0(@types/node@25.3.0) + specifier: 'catalog:' + version: 13.3.0(@types/node@25.5.0) ora: - specifier: ^9.0.0 + specifier: 'catalog:' version: 9.3.0 p-limit: - specifier: ^7.1.1 + specifier: 'catalog:' version: 7.3.0 pathe: - specifier: ^2.0.3 + specifier: 'catalog:' version: 2.0.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) packages/http-server-js: dependencies: prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 devDependencies: '@types/express': - specifier: ^5.0.6 + specifier: 'catalog:' version: 5.0.6 '@types/morgan': - specifier: ^1.9.9 + specifier: 'catalog:' version: 1.9.10 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/swagger-ui-express': - specifier: ^4.1.8 + specifier: 'catalog:' version: 4.1.8 '@typespec/compiler': specifier: workspace:^ @@ -956,58 +1492,58 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) decimal.js: - specifier: ^10.5.0 + specifier: 'catalog:' version: 10.6.0 express: - specifier: ^5.2.1 + specifier: 'catalog:' version: 5.2.1 fs-extra: - specifier: ^11.2.0 - version: 11.3.3 + specifier: 'catalog:' + version: 11.3.4 globby: - specifier: ~16.1.0 + specifier: 'catalog:' version: 16.1.1 inquirer: - specifier: ^13.1.0 - version: 13.3.0(@types/node@25.3.0) + specifier: 'catalog:' + version: 13.3.0(@types/node@25.5.0) morgan: - specifier: ^1.10.0 + specifier: 'catalog:' version: 1.10.1 ora: - specifier: ^9.0.0 + specifier: 'catalog:' version: 9.3.0 p-limit: - specifier: ^7.1.1 + specifier: 'catalog:' version: 7.3.0 pathe: - specifier: ^2.0.3 + specifier: 'catalog:' version: 2.0.3 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 swagger-ui-express: - specifier: ^5.0.1 + specifier: 'catalog:' version: 5.0.1(express@5.2.1) temporal-polyfill: - specifier: ^0.3.0 - version: 0.3.0 + specifier: 'catalog:' + version: 0.3.2 tsx: - specifier: ^4.21.0 + specifier: 'catalog:' version: 4.21.0 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 packages/http-specs: @@ -1034,18 +1570,18 @@ importers: specifier: workspace:^ version: link:../xml deep-equal: - specifier: ^2.2.0 + specifier: 'catalog:' version: 2.2.3 devDependencies: '@types/deep-equal': - specifier: ^1.0.1 + specifier: 'catalog:' version: 1.0.4 '@types/multer': - specifier: ^2.0.0 - version: 2.0.0 + specifier: 'catalog:' + version: 2.1.0 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/json-schema': specifier: workspace:^ version: link:../json-schema @@ -1056,69 +1592,69 @@ importers: specifier: workspace:^ version: link:../openapi3 concurrently: - specifier: ^9.1.2 + specifier: 'catalog:' version: 9.2.1 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 packages/internal-build-utils: dependencies: '@pnpm/workspace.find-packages': - specifier: ^1000.0.24 - version: 1000.0.62(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + specifier: 'catalog:' + version: 1000.0.64(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) cross-spawn: - specifier: ^7.0.6 + specifier: 'catalog:' version: 7.0.6 cspell: - specifier: ^9.4.0 + specifier: 'catalog:' version: 9.7.0 semver: - specifier: ^7.7.1 + specifier: 'catalog:' version: 7.7.4 strip-json-comments: - specifier: ~5.0.1 + specifier: 'catalog:' version: 5.0.3 yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 devDependencies: '@types/cross-spawn': - specifier: ~6.0.6 + specifier: 'catalog:' version: 6.0.6 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/semver': - specifier: ^7.5.8 + specifier: 'catalog:' version: 7.7.1 '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 chokidar: - specifier: ~5.0.0 + specifier: 'catalog:' version: 5.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/json-schema: dependencies: @@ -1126,12 +1662,12 @@ importers: specifier: workspace:^ version: link:../asset-emitter yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -1145,108 +1681,108 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) ajv: - specifier: ~8.18.0 + specifier: 'catalog:' version: 8.18.0 ajv-formats: - specifier: ~3.0.1 + specifier: 'catalog:' version: 3.0.1(ajv@8.18.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) packages/library-linter: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/monarch: dependencies: monaco-editor-core: - specifier: ^0.55.0 + specifier: 'catalog:' version: 0.55.1 devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 happy-dom: - specifier: ^20.0.11 - version: 20.7.0 + specifier: 'catalog:' + version: 20.8.9 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/mutator-framework: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler concurrently: - specifier: ^9.1.2 + specifier: 'catalog:' version: 9.2.1 prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 packages/openapi: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -1263,47 +1799,47 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/openapi3: dependencies: '@scalar/json-magic': - specifier: ^0.11.5 - version: 0.11.5 + specifier: 'catalog:' + version: 0.11.7 '@scalar/openapi-parser': - specifier: ^0.24.1 - version: 0.24.14 + specifier: 'catalog:' + version: 0.24.17 '@scalar/openapi-types': - specifier: ^0.5.0 - version: 0.5.3 + specifier: 'catalog:' + version: 0.5.4 '@typespec/asset-emitter': specifier: workspace:^ version: link:../asset-emitter yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@typespec/compiler': specifier: workspace:^ @@ -1342,26 +1878,26 @@ importers: specifier: workspace:^ version: link:../xml '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 cross-env: - specifier: ~10.1.0 + specifier: 'catalog:' version: 10.1.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) packages/pack: dependencies: @@ -1369,45 +1905,45 @@ importers: specifier: workspace:^ version: link:../compiler picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 source-map-support: - specifier: ~0.5.21 + specifier: 'catalog:' version: 0.5.21 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vite: - specifier: ^7.2.7 - version: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/playground: dependencies: '@fluentui/react-components': - specifier: ~9.73.1 - version: 9.73.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + specifier: 'catalog:' + version: 9.73.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-icons': - specifier: ^2.0.292 - version: 2.0.319(react@19.2.4) + specifier: 'catalog:' + version: 2.0.323(react@19.2.4) '@typespec/bundler': specifier: workspace:^ version: link:../bundler @@ -1436,108 +1972,120 @@ importers: specifier: workspace:^ version: link:../versioning clsx: - specifier: ^2.1.1 + specifier: 'catalog:' version: 2.1.1 debounce: - specifier: ~3.0.0 + specifier: 'catalog:' version: 3.0.0 lzutf8: - specifier: 0.6.3 + specifier: 'catalog:' version: 0.6.3 monaco-editor: - specifier: ~0.55.0 + specifier: 'catalog:' version: 0.55.1 react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) react-error-boundary: - specifier: ^6.0.0 + specifier: 'catalog:' version: 6.1.1(react@19.2.4) swagger-ui-dist: - specifier: ^5.20.1 - version: 5.31.2 + specifier: 'catalog:' + version: 5.32.0 vscode-languageserver: - specifier: ~9.0.1 + specifier: 'catalog:' version: 9.0.1 vscode-languageserver-textdocument: - specifier: ~1.0.12 + specifier: 'catalog:' version: 1.0.12 yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 devDependencies: '@babel/core': - specifier: ^7.26.10 + specifier: 'catalog:' version: 7.29.0 '@playwright/test': - specifier: ^1.57.0 + specifier: 'catalog:' version: 1.58.2 '@storybook/cli': - specifier: ^10.1.8 - version: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 'catalog:' + version: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@storybook/react-vite': - specifier: ^10.1.8 - version: 10.2.12(esbuild@0.27.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.49.0)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 10.3.3(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.60.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) + '@testing-library/dom': + specifier: 'catalog:' + version: 10.4.1 + '@testing-library/jest-dom': + specifier: 'catalog:' + version: 6.9.1 + '@testing-library/react': + specifier: 'catalog:' + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/debounce': - specifier: ~1.2.4 + specifier: 'catalog:' version: 1.2.4 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/react': - specifier: ~19.2.7 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ~19.2.2 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@types/swagger-ui-dist': - specifier: ~3.30.5 + specifier: 'catalog:' version: 3.30.6 '@typespec/react-components': specifier: workspace:^ version: link:../react-components '@vitejs/plugin-react': - specifier: ~5.1.2 - version: 5.1.4(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 6.0.1(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 cross-env: - specifier: ~10.1.0 + specifier: 'catalog:' version: 10.1.0 es-module-shims: - specifier: ~2.8.0 + specifier: 'catalog:' version: 2.8.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 storybook: - specifier: ^10.1.8 - version: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 'catalog:' + version: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vite: - specifier: ^7.2.7 - version: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-checker: - specifier: ^0.12.0 - version: 0.12.0(eslint@10.0.2)(optionator@0.9.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.12.0(eslint@10.0.3)(optionator@0.9.4)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.3.0)(rollup@4.49.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 4.5.4(@types/node@25.5.0)(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) + vitest: + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) packages/playground-website: dependencies: '@fluentui/react-components': - specifier: ~9.73.1 - version: 9.73.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + specifier: 'catalog:' + version: 9.73.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-icons': - specifier: ^2.0.292 - version: 2.0.319(react@19.2.4) + specifier: 'catalog:' + version: 2.0.323(react@19.2.4) '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -1584,77 +2132,74 @@ importers: specifier: workspace:^ version: link:../xml es-module-shims: - specifier: ~2.8.0 + specifier: 'catalog:' version: 2.8.0 react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) devDependencies: '@babel/core': - specifier: ^7.26.10 + specifier: 'catalog:' version: 7.29.0 '@playwright/test': - specifier: ^1.57.0 + specifier: 'catalog:' version: 1.58.2 '@types/debounce': - specifier: ~1.2.4 + specifier: 'catalog:' version: 1.2.4 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/react': - specifier: ~19.2.7 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ~19.2.2 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@types/swagger-ui': - specifier: ~5.21.1 - version: 5.21.1 + specifier: 'catalog:' + version: 5.32.0 '@vitejs/plugin-react': - specifier: ~5.1.2 - version: 5.1.4(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 6.0.1(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 cross-env: - specifier: ~10.1.0 + specifier: 'catalog:' version: 10.1.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 rollup-plugin-visualizer: - specifier: 6.0.4 - version: 6.0.4(rollup@4.49.0) + specifier: 'catalog:' + version: 6.0.4(rolldown@1.0.0-rc.10)(rollup@4.60.0) typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vite: - specifier: ^7.2.7 - version: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.3.0)(rollup@4.49.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) - vite-plugin-node-polyfills: - specifier: ^0.25.0 - version: 0.25.0(rollup@4.49.0)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 4.5.4(@types/node@25.5.0)(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/prettier-plugin-typespec: dependencies: prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 devDependencies: '@typespec/compiler': @@ -1664,20 +2209,20 @@ importers: specifier: workspace:^ version: link:../internal-build-utils esbuild: - specifier: ^0.27.0 - version: 0.27.3 + specifier: 'catalog:' + version: 0.27.4 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/protobuf: devDependencies: '@types/micromatch': - specifier: ^4.0.9 + specifier: 'catalog:' version: 4.0.10 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -1685,99 +2230,99 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 micromatch: - specifier: ^4.0.8 + specifier: 'catalog:' version: 4.0.8 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/react-components: dependencies: '@fluentui/react-components': - specifier: ~9.73.1 - version: 9.73.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + specifier: 'catalog:' + version: 9.73.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-icons': - specifier: ^2.0.292 - version: 2.0.319(react@19.2.4) + specifier: 'catalog:' + version: 2.0.323(react@19.2.4) react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) devDependencies: '@babel/core': - specifier: ^7.26.10 + specifier: 'catalog:' version: 7.29.0 '@testing-library/dom': - specifier: ^10.4.0 + specifier: 'catalog:' version: 10.4.1 '@testing-library/jest-dom': - specifier: ^6.6.3 + specifier: 'catalog:' version: 6.9.1 '@testing-library/react': - specifier: ^16.2.0 + specifier: 'catalog:' version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/react': - specifier: ~19.2.7 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ~19.2.2 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ~5.1.2 - version: 5.1.4(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 6.0.1(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vite: - specifier: ^7.2.7 - version: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-checker: - specifier: ^0.12.0 - version: 0.12.0(eslint@10.0.2)(optionator@0.9.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.12.0(eslint@10.0.3)(optionator@0.9.4)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.3.0)(rollup@4.49.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 4.5.4(@types/node@25.5.0)(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/rest: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -1791,23 +2336,23 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/samples: dependencies: @@ -1858,163 +2403,163 @@ importers: version: link:../versioning devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/internal-build-utils': specifier: workspace:^ version: link:../internal-build-utils '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) cross-env: - specifier: ~10.1.0 + specifier: 'catalog:' version: 10.1.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/spec: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/internal-build-utils': specifier: workspace:^ version: link:../internal-build-utils ecmarkup: - specifier: ~23.0.2 + specifier: 'catalog:' version: 23.0.2 packages/spec-api: dependencies: deep-equal: - specifier: ^2.2.0 + specifier: 'catalog:' version: 2.2.3 express: - specifier: ^5.2.1 + specifier: 'catalog:' version: 5.2.1 xml2js: - specifier: ^0.6.2 + specifier: 'catalog:' version: 0.6.2 devDependencies: '@types/deep-equal': - specifier: ^1.0.1 + specifier: 'catalog:' version: 1.0.4 '@types/express': - specifier: ^5.0.6 + specifier: 'catalog:' version: 5.0.6 '@types/multer': - specifier: ^2.0.0 - version: 2.0.0 + specifier: 'catalog:' + version: 2.1.0 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/xml2js': - specifier: ^0.4.11 + specifier: 'catalog:' version: 0.4.14 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/spec-coverage-sdk: dependencies: '@azure/identity': - specifier: ~4.13.0 + specifier: 'catalog:' version: 4.13.0 '@azure/storage-blob': - specifier: ~12.31.0 + specifier: 'catalog:' version: 12.31.0 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/semver': - specifier: ^7.5.8 + specifier: 'catalog:' version: 7.7.1 semver: - specifier: ^7.7.1 + specifier: 'catalog:' version: 7.7.4 devDependencies: rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 packages/spec-dashboard: dependencies: '@fluentui/react-components': - specifier: ~9.73.1 - version: 9.73.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + specifier: 'catalog:' + version: 9.73.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-icons': - specifier: ^2.0.292 - version: 2.0.319(react@19.2.4) + specifier: 'catalog:' + version: 2.0.323(react@19.2.4) '@typespec/spec-coverage-sdk': specifier: workspace:^ version: link:../spec-coverage-sdk react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) react-markdown: - specifier: ^10.1.0 + specifier: 'catalog:' version: 10.1.0(@types/react@19.2.14)(react@19.2.4) devDependencies: '@types/react': - specifier: ~19.2.7 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ~19.2.2 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ~5.1.2 - version: 5.1.4(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 6.0.1(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 rollup-plugin-visualizer: - specifier: 6.0.4 - version: 6.0.4(rollup@4.49.0) + specifier: 'catalog:' + version: 6.0.4(rolldown@1.0.0-rc.10)(rollup@4.60.0) typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vite: - specifier: ^7.2.7 - version: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-checker: - specifier: ^0.12.0 - version: 0.12.0(eslint@10.0.2)(optionator@0.9.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.12.0(eslint@10.0.3)(optionator@0.9.4)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-dts: - specifier: 4.5.4 - version: 4.5.4(@types/node@25.3.0)(rollup@4.49.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + specifier: 'catalog:' + version: 4.5.4(@types/node@25.5.0)(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/spector: dependencies: '@azure/identity': - specifier: ~4.13.0 + specifier: 'catalog:' version: 4.13.0 '@typespec/compiler': specifier: workspace:^ @@ -2035,87 +2580,87 @@ importers: specifier: workspace:^ version: link:../versioning ajv: - specifier: ~8.18.0 + specifier: 'catalog:' version: 8.18.0 body-parser: - specifier: ^2.2.0 + specifier: 'catalog:' version: 2.2.2 deep-equal: - specifier: ^2.2.0 + specifier: 'catalog:' version: 2.2.3 express: - specifier: ^5.2.1 + specifier: 'catalog:' version: 5.2.1 globby: - specifier: ~16.1.0 + specifier: 'catalog:' version: 16.1.1 micromatch: - specifier: ^4.0.8 + specifier: 'catalog:' version: 4.0.8 morgan: - specifier: ^1.10.0 + specifier: 'catalog:' version: 1.10.1 multer: - specifier: ^2.0.1 - version: 2.0.2 + specifier: 'catalog:' + version: 2.1.1 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 source-map-support: - specifier: ~0.5.21 + specifier: 'catalog:' version: 0.5.21 xml2js: - specifier: ^0.6.2 + specifier: 'catalog:' version: 0.6.2 yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 devDependencies: '@types/body-parser': - specifier: ^1.19.2 + specifier: 'catalog:' version: 1.19.6 '@types/deep-equal': - specifier: ^1.0.1 + specifier: 'catalog:' version: 1.0.4 '@types/express': - specifier: ^5.0.6 + specifier: 'catalog:' version: 5.0.6 '@types/micromatch': - specifier: ^4.0.9 + specifier: 'catalog:' version: 4.0.10 '@types/morgan': - specifier: ^1.9.9 + specifier: 'catalog:' version: 1.9.10 '@types/multer': - specifier: ^2.0.0 - version: 2.0.0 + specifier: 'catalog:' + version: 2.1.0 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/xml2js': - specifier: ^0.4.11 + specifier: 'catalog:' version: 0.4.14 '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@typespec/tspd': specifier: workspace:^ version: link:../tspd rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 packages/sse: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -2135,84 +2680,84 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/standalone: dependencies: '@yarnpkg/core': - specifier: ^4.2.1 - version: 4.5.0(typanion@3.14.0) + specifier: 'catalog:' + version: 4.6.0(typanion@3.14.0) '@yarnpkg/fslib': - specifier: ^3.1.2 - version: 3.1.4 + specifier: 'catalog:' + version: 3.1.5 '@yarnpkg/plugin-nm': - specifier: ^4.0.6 - version: 4.0.8(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + specifier: 'catalog:' + version: 4.0.8(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) '@yarnpkg/plugin-npm': - specifier: ^3.0.2 - version: 3.4.0(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) + specifier: 'catalog:' + version: 3.4.1(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) '@yarnpkg/plugin-pnp': - specifier: ^4.0.7 - version: 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + specifier: 'catalog:' + version: 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 esbuild: - specifier: ^0.27.0 - version: 0.27.3 + specifier: 'catalog:' + version: 0.27.4 execa: - specifier: ^9.6.1 + specifier: 'catalog:' version: 9.6.1 ora: - specifier: ^9.0.0 + specifier: 'catalog:' version: 9.3.0 postject: - specifier: 1.0.0-alpha.6 + specifier: 'catalog:' version: 1.0.0-alpha.6 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 tsx: - specifier: ^4.21.0 + specifier: 'catalog:' version: 4.21.0 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/streams: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -2223,167 +2768,167 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/tmlanguage-generator: dependencies: onigasm: - specifier: ~2.2.5 + specifier: 'catalog:' version: 2.2.5 plist: - specifier: ~3.1.0 + specifier: 'catalog:' version: 3.1.0 devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/plist': - specifier: ~3.0.5 + specifier: 'catalog:' version: 3.0.5 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 packages/tsp-integration: dependencies: '@pnpm/workspace.find-packages': - specifier: ^1000.0.24 - version: 1000.0.62(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + specifier: 'catalog:' + version: 1000.0.64(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) execa: - specifier: ^9.6.1 + specifier: 'catalog:' version: 9.6.1 globby: - specifier: ~16.1.0 + specifier: 'catalog:' version: 16.1.1 log-symbols: - specifier: ^7.0.1 + specifier: 'catalog:' version: 7.0.1 ora: - specifier: ^9.0.0 + specifier: 'catalog:' version: 9.3.0 pathe: - specifier: ^2.0.3 + specifier: 'catalog:' version: 2.0.3 picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 simple-git: - specifier: ^3.28.0 - version: 3.32.2 + specifier: 'catalog:' + version: 3.33.0 tar: - specifier: ^7.5.2 - version: 7.5.9 + specifier: 'catalog:' + version: 7.5.11 yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 devDependencies: typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) packages/tspd: dependencies: '@alloy-js/core': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/markdown': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/typescript': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@microsoft/api-extractor': - specifier: ^7.57.4 - version: 7.57.6(@types/node@25.3.0) + specifier: 'catalog:' + version: 7.57.7(@types/node@25.5.0) '@microsoft/api-extractor-model': - specifier: ^7.33.2 - version: 7.33.4(@types/node@25.3.0) + specifier: 'catalog:' + version: 7.33.4(@types/node@25.5.0) '@microsoft/tsdoc': - specifier: ^0.16.0 + specifier: 'catalog:' version: 0.16.0 '@microsoft/tsdoc-config': - specifier: ^0.18.0 + specifier: 'catalog:' version: 0.18.1 '@typespec/compiler': specifier: workspace:^ version: link:../compiler picocolors: - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.1 prettier: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.1 typedoc: - specifier: ^0.28.1 + specifier: 'catalog:' version: 0.28.17(typescript@5.9.3) typedoc-plugin-markdown: - specifier: ^4.5.2 + specifier: 'catalog:' version: 4.10.0(typedoc@0.28.17(typescript@5.9.3)) yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 yargs: - specifier: ~18.0.0 + specifier: 'catalog:' version: 18.0.0 devDependencies: '@alloy-js/cli': - specifier: ^0.22.0 + specifier: 'catalog:' version: 0.22.0 '@alloy-js/rollup-plugin': - specifier: ^0.1.0 - version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.49.0) + specifier: 'catalog:' + version: 0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.0) '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/yargs': - specifier: ~17.0.33 + specifier: 'catalog:' version: 17.0.35 '@typespec/prettier-plugin-typespec': specifier: workspace:^ version: link:../prettier-plugin-typespec '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 source-map-support: - specifier: ~0.5.21 + specifier: 'catalog:' version: 0.5.21 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) packages/typespec-vs: devDependencies: @@ -2397,22 +2942,19 @@ importers: packages/typespec-vscode: devDependencies: '@types/cross-spawn': - specifier: ~6.0.6 + specifier: 'catalog:' version: 6.0.6 - '@types/mocha': - specifier: ^10.0.9 - version: 10.0.10 '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@types/semver': - specifier: ^7.5.8 + specifier: 'catalog:' version: 7.7.1 '@types/vscode': - specifier: ~1.109.0 - version: 1.109.0 + specifier: ~1.110.0 + version: 1.110.0 '@types/which': - specifier: ^3.0.4 + specifier: 'catalog:' version: 3.0.4 '@typespec/compiler': specifier: workspace:^ @@ -2421,71 +2963,68 @@ importers: specifier: workspace:^ version: link:../internal-build-utils '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vscode/extension-telemetry': - specifier: ^1.0.0 - version: 1.5.0(tslib@2.8.1) + specifier: 'catalog:' + version: 1.5.1(tslib@2.8.1) '@vscode/test-electron': - specifier: ^2.3.9 + specifier: 'catalog:' version: 2.5.2 '@vscode/test-web': - specifier: ^0.0.79 - version: 0.0.79 + specifier: 'catalog:' + version: 0.0.80 '@vscode/vsce': - specifier: ~3.7.1 + specifier: 'catalog:' version: 3.7.1 ajv: - specifier: ~8.18.0 + specifier: 'catalog:' version: 8.18.0 c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 cross-spawn: - specifier: ^7.0.6 + specifier: 'catalog:' version: 7.0.6 esbuild: - specifier: ^0.27.0 - version: 0.27.3 - mocha: - specifier: ^11.1.0 - version: 11.7.5 + specifier: 'catalog:' + version: 0.27.4 playwright: - specifier: ^1.57.0 + specifier: 'catalog:' version: 1.58.2 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 semver: - specifier: ^7.7.1 + specifier: 'catalog:' version: 7.7.4 swagger-ui-dist: - specifier: ^5.20.1 - version: 5.31.2 + specifier: 'catalog:' + version: 5.32.0 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) vscode-languageclient: - specifier: ~9.0.1 + specifier: 'catalog:' version: 9.0.1 which: - specifier: ^6.0.0 + specifier: 'catalog:' version: 6.0.1 yaml: - specifier: ~2.8.2 + specifier: 'catalog:' version: 2.8.2 packages/versioning: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -2496,29 +3035,29 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) packages/xml: devDependencies: '@types/node': - specifier: ~25.3.0 - version: 25.3.0 + specifier: 'catalog:' + version: 25.5.0 '@typespec/compiler': specifier: workspace:^ version: link:../compiler @@ -2529,50 +3068,50 @@ importers: specifier: workspace:^ version: link:../tspd '@vitest/coverage-v8': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) '@vitest/ui': - specifier: ^4.0.18 - version: 4.0.18(vitest@4.0.18) + specifier: 'catalog:' + version: 4.1.0(vitest@4.1.0) c8: - specifier: ^11.0.0 + specifier: 'catalog:' version: 11.0.0 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 vitest: - specifier: ^4.0.18 - version: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) website: dependencies: '@astrojs/check': - specifier: ^0.9.4 - version: 0.9.6(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3) + specifier: 'catalog:' + version: 0.9.7(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3) '@astrojs/react': - specifier: ^4.4.2 - version: 4.4.2(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2) + specifier: 'catalog:' + version: 5.0.0(@types/node@25.5.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.3) '@astrojs/starlight': - specifier: ^0.37.0 - version: 0.37.6(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.38.1(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) '@docsearch/css': - specifier: ^4.3.2 + specifier: 'catalog:' version: 4.6.0 '@docsearch/js': - specifier: ^4.3.2 + specifier: 'catalog:' version: 4.6.0 '@expressive-code/core': - specifier: ^0.41.2 + specifier: 'catalog:' version: 0.41.7 '@fluentui/react-components': - specifier: ~9.73.1 - version: 9.73.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + specifier: 'catalog:' + version: 9.73.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-icons': - specifier: ^2.0.292 - version: 2.0.319(react@19.2.4) + specifier: 'catalog:' + version: 2.0.323(react@19.2.4) '@typespec/compiler': specifier: workspace:^ version: link:../packages/compiler @@ -2580,47 +3119,47 @@ importers: specifier: workspace:^ version: link:../packages/playground astro: - specifier: ^5.16.5 - version: 5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + specifier: 'catalog:' + version: 6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) astro-rehype-relative-markdown-links: - specifier: ^0.18.1 - version: 0.18.1(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.18.1(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) clsx: - specifier: ^2.1.1 + specifier: 'catalog:' version: 2.1.1 date-fns: - specifier: ^4.1.0 + specifier: 'catalog:' version: 4.1.0 es-module-shims: - specifier: ~2.8.0 + specifier: 'catalog:' version: 2.8.0 pathe: - specifier: ^2.0.3 + specifier: 'catalog:' version: 2.0.3 prism-react-renderer: - specifier: ^2.4.1 + specifier: 'catalog:' version: 2.4.1(react@19.2.4) react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) sharp: - specifier: ^0.34.2 + specifier: 'catalog:' version: 0.34.5 typescript: - specifier: ~5.9.3 + specifier: 'catalog:' version: 5.9.3 devDependencies: '@types/react': - specifier: ~19.2.7 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ~19.2.2 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@types/remark-heading-id': - specifier: ^1.0.0 + specifier: 'catalog:' version: 1.0.0 '@typespec/astro-utils': specifier: workspace:^ @@ -2680,20 +3219,17 @@ importers: specifier: workspace:^ version: link:../packages/xml astro-expressive-code: - specifier: ^0.41.2 - version: 0.41.7(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) + specifier: 'catalog:' + version: 0.41.7(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) rehype-mermaid: - specifier: ^3.0.0 + specifier: 'catalog:' version: 3.0.0(playwright@1.58.2) remark-heading-id: - specifier: ^1.0.1 + specifier: 'catalog:' version: 1.0.1 rimraf: - specifier: ~6.1.3 + specifier: 'catalog:' version: 6.1.3 - vite-plugin-node-polyfills: - specifier: ^0.25.0 - version: 0.25.0(rollup@4.49.0)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) packages: @@ -2794,8 +3330,8 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} - '@astrojs/check@0.9.6': - resolution: {integrity: sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==} + '@astrojs/check@0.9.7': + resolution: {integrity: sha512-dA7U5/OFg8/xaMUb2vUOOJuuJXnMpHy6F0BM8ZhL7WT5OkTBwJ0GoW38n4fC4CXt+lT9mLWL0y8Pa74tFByBpQ==} hasBin: true peerDependencies: typescript: ^5.0.0 @@ -2803,11 +3339,14 @@ packages: '@astrojs/compiler@2.13.1': resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} - '@astrojs/internal-helpers@0.7.5': - resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==} + '@astrojs/compiler@3.0.0': + resolution: {integrity: sha512-MwAbDE5mawZ1SS+D8qWiHdprdME5Tlj2e0YjxnEICvcOpbSukNS7Sa7hA5PK+6RrmUr/t6Gi5YgrdZKjbO/WPQ==} + + '@astrojs/internal-helpers@0.8.0': + resolution: {integrity: sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w==} - '@astrojs/language-server@2.16.3': - resolution: {integrity: sha512-yO5K7RYCMXUfeDlnU6UnmtnoXzpuQc0yhlaCNZ67k1C/MiwwwvMZz+LGa+H35c49w5QBfvtr4w4Zcf5PcH8uYA==} + '@astrojs/language-server@2.16.4': + resolution: {integrity: sha512-42oqz9uX+hU1/rFniJvtYW9FbfZJ6syM2fYZFi7Ub71/kOvF1GSeMS8sA3Ogs3iOeNUWefk/ImwBiiHeNmJfSA==} hasBin: true peerDependencies: prettier: ^3.0.0 @@ -2818,42 +3357,42 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@6.3.10': - resolution: {integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==} + '@astrojs/markdown-remark@7.0.0': + resolution: {integrity: sha512-jTAXHPy45L7o1ljH4jYV+ShtOHtyQUa1mGp3a5fJp1soX8lInuTJQ6ihmldHzVM4Q7QptU4SzIDIcKbBJO7sXQ==} - '@astrojs/mdx@4.3.13': - resolution: {integrity: sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==} - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@astrojs/mdx@5.0.0': + resolution: {integrity: sha512-J4rW6eT+qgVw7+RXdBYO4vYyWGeXXQp8wop9dXsOlLzIsVSxyttMCgkGCWvIR2ogBqKqeYgI6YDW93PaDHkCaA==} + engines: {node: ^20.19.1 || >=22.12.0} peerDependencies: - astro: ^5.0.0 + astro: ^6.0.0-alpha.0 - '@astrojs/prism@3.3.0': - resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@astrojs/prism@4.0.0': + resolution: {integrity: sha512-NndtNPpxaGinRpRytljGBvYHpTOwHycSZ/c+lQi5cHvkqqrHKWdkPEhImlODBNmbuB+vyQUNUDXyjzt66CihJg==} + engines: {node: ^20.19.1 || >=22.12.0} - '@astrojs/react@4.4.2': - resolution: {integrity: sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==} - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@astrojs/react@5.0.0': + resolution: {integrity: sha512-OuM+0QFsoPkvv8ZB57kVLxKOqvR+84GR/Em9lh/tAL4fV4CnpBPDxc++0vd1CipH4o99Is7GribuTHFy3doF6g==} + engines: {node: ^20.19.1 || >=22.12.0} peerDependencies: '@types/react': ^17.0.50 || ^18.0.21 || ^19.0.0 '@types/react-dom': ^17.0.17 || ^18.0.6 || ^19.0.0 react: ^17.0.2 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0 - '@astrojs/sitemap@3.7.0': - resolution: {integrity: sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA==} + '@astrojs/sitemap@3.7.1': + resolution: {integrity: sha512-IzQqdTeskaMX+QDZCzMuJIp8A8C1vgzMBp/NmHNnadepHYNHcxQdGLQZYfkbd2EbRXUfOS+UDIKx8sKg0oWVdw==} - '@astrojs/starlight@0.37.6': - resolution: {integrity: sha512-wQrKwH431q+8FsLBnNQeG+R36TMtEGxTQ2AuiVpcx9APcazvL3n7wVW8mMmYyxX0POjTnxlcWPkdMGR3Yj1L+w==} + '@astrojs/starlight@0.38.1': + resolution: {integrity: sha512-CATPH4Dy44OYAJhoyUHh6NqpColWEVufanGVwnM0l/bcaNMo5V/rypwL0Vu0Edp+ZIXE7/1DA9CrNj5jmCVSLQ==} peerDependencies: - astro: ^5.5.0 + astro: ^6.0.0 '@astrojs/telemetry@3.3.0': resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@astrojs/yaml2ts@0.2.2': - resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} + '@astrojs/yaml2ts@0.2.3': + resolution: {integrity: sha512-PJzRmgQzUxI2uwpdX2lXSHtP4G8ocp24/t+bZyf5Fy0SZLSF9f9KXZoMlFM/XCGue+B0nH/2IZ7FpBYQATBsCg==} '@azu/format-text@1.0.2': resolution: {integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==} @@ -2888,8 +3427,8 @@ packages: resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} - '@azure/core-rest-pipeline@1.22.2': - resolution: {integrity: sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==} + '@azure/core-rest-pipeline@1.23.0': + resolution: {integrity: sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==} engines: {node: '>=20.0.0'} '@azure/core-tracing@1.3.1': @@ -2912,16 +3451,16 @@ packages: resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} engines: {node: '>=20.0.0'} - '@azure/msal-browser@4.29.0': - resolution: {integrity: sha512-/f3eHkSNUTl6DLQHm+bKecjBKcRQxbd/XLx8lvSYp8Nl/HRyPuIPOijt9Dt0sH50/SxOwQ62RnFCmFlGK+bR/w==} + '@azure/msal-browser@4.29.1': + resolution: {integrity: sha512-1Vrt27du1cl4QHkzLc6L4aeXqliPIDIs5l/1I4hWWMXkXccY/EznJT1+pBdoVze0azTAI8sCyq5B4cBVYG1t9w==} engines: {node: '>=0.8.0'} - '@azure/msal-common@15.15.0': - resolution: {integrity: sha512-/n+bN0AKlVa+AOcETkJSKj38+bvFs78BaP4rNtv3MJCmPH0YrHiskMRe74OhyZ5DZjGISlFyxqvf9/4QVEi2tw==} + '@azure/msal-common@15.16.1': + resolution: {integrity: sha512-qxUG9TCl+TVSSX58onVDHDWrvT5CE0+NeeUAbkQqaESpSm79u5IePLnPWMMjCUnUR2zJd4+Bt9vioVRzLmJb2g==} engines: {node: '>=0.8.0'} - '@azure/msal-node@3.8.8': - resolution: {integrity: sha512-+f1VrJH1iI517t4zgmuhqORja0bL6LDQXfBqkjuMmfTYXTQQnh1EvwwxO3UbKLT05N0obF72SRHFrC1RBDv5Gg==} + '@azure/msal-node@3.8.9': + resolution: {integrity: sha512-jZ0pw/BbdEUWGhomCaAiVDfXRI/9K56m5hTNqB/CzcbZEYhXm5qpK1cDngN1iXfwSfmUMorOUQ2FC0dyuQ9uRg==} engines: {node: '>=16'} '@azure/storage-blob@12.31.0': @@ -3147,36 +3686,42 @@ packages: resolution: {integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==} engines: {node: '>=18'} - '@chevrotain/cst-dts-gen@11.1.1': - resolution: {integrity: sha512-fRHyv6/f542qQqiRGalrfJl/evD39mAvbJLCekPazhiextEatq1Jx1K/i9gSd5NNO0ds03ek0Cbo/4uVKmOBcw==} + '@chevrotain/cst-dts-gen@11.1.2': + resolution: {integrity: sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==} - '@chevrotain/gast@11.1.1': - resolution: {integrity: sha512-Ko/5vPEYy1vn5CbCjjvnSO4U7GgxyGm+dfUZZJIWTlQFkXkyym0jFYrWEU10hyCjrA7rQtiHtBr0EaZqvHFZvg==} + '@chevrotain/gast@11.1.2': + resolution: {integrity: sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==} - '@chevrotain/regexp-to-ast@11.1.1': - resolution: {integrity: sha512-ctRw1OKSXkOrR8VTvOxrQ5USEc4sNrfwXHa1NuTcR7wre4YbjPcKw+82C2uylg/TEwFRgwLmbhlln4qkmDyteg==} + '@chevrotain/regexp-to-ast@11.1.2': + resolution: {integrity: sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==} - '@chevrotain/types@11.1.1': - resolution: {integrity: sha512-wb2ToxG8LkgPYnKe9FH8oGn3TMCBdnwiuNC5l5y+CtlaVRbCytU0kbVsk6CGrqTL4ZN4ksJa0TXOYbxpbthtqw==} + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} - '@chevrotain/utils@11.1.1': - resolution: {integrity: sha512-71eTYMzYXYSFPrbg/ZwftSaSDld7UYlS8OQa3lNnn9jzNtpFbaReRRyghzqS7rI3CDaorqpPJJcXGHK+FE1TVQ==} + '@chevrotain/utils@11.1.2': + resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==} - '@chronus/chronus@1.3.0': - resolution: {integrity: sha512-av5K5Yq+46bBrixvSQQOCkMeJCqqVxAPl35tDoiXzx1c05Zonj586ZRlBbgsERqdfCJsQM2lZDfHt1fvtTB1sw==} + '@chronus/chronus@1.3.1': + resolution: {integrity: sha512-qSrHpXL/LlOlvW0TPCxIkZnvTdXEFW0cHoyS9lsq6CIIondtgcm4y/VEMK4wnGHyuHLvmuYASAjVSVbgMvmHTQ==} engines: {node: '>=20.0.0'} hasBin: true - '@chronus/github-pr-commenter@1.0.5': - resolution: {integrity: sha512-l3Z6jj1XvkxMG2x903/g6VnVcqLTUAGLeJSaMj21O+B/bfplpNtI+BdZyZIaPrgWIWR93D5ZGkgkS+nCUcz/rw==} + '@chronus/github-pr-commenter@1.0.6': + resolution: {integrity: sha512-X+H97VyV1OBldr+t7pSORtGLMGj8xyD8ugUbLhXj8KvuD3Y0piDH+G50D2tgjtakgEYIms9DLQtRQoJDz1Snzw==} engines: {node: '>=20.0.0'} hasBin: true - '@chronus/github@1.0.5': - resolution: {integrity: sha512-IfaeqpZ7JfagCNycEGniPKyPmMIQSdYrdyDwEJ23QHTfnGaWrFnRKRZM46iQnyWyllYASWgNiksQBQm0cH8HyQ==} + '@chronus/github@1.0.6': + resolution: {integrity: sha512-5nFaUByDwsAMcbZskoSgGEBSyYEZPgjXNx7EfLtDE4avISaky+fTQoHGTMiL6RVjmpOLG/+aED5VJ89J234qaw==} engines: {node: '>=20.0.0'} hasBin: true + '@clack/core@1.1.0': + resolution: {integrity: sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA==} + + '@clack/prompts@1.1.0': + resolution: {integrity: sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -3225,8 +3770,8 @@ packages: '@cspell/dict-bash@4.2.2': resolution: {integrity: sha512-kyWbwtX3TsCf5l49gGQIZkRLaB/P8g73GDRm41Zu8Mv51kjl2H7Au0TsEvHv7jzcsRLS6aUYaZv6Zsvk1fOz+Q==} - '@cspell/dict-companies@3.2.10': - resolution: {integrity: sha512-bJ1qnO1DkTn7JYGXvxp8FRQc4yq6tRXnrII+jbP8hHmq5TX5o1Wu+rdfpoUQaMWTl6balRvcMYiINDesnpR9Bw==} + '@cspell/dict-companies@3.2.11': + resolution: {integrity: sha512-0cmafbcz2pTHXLd59eLR1gvDvN6aWAOM0+cIL4LLF9GX9yB2iKDNrKsvs4tJRqutoaTdwNFBbV0FYv+6iCtebQ==} '@cspell/dict-cpp@7.0.2': resolution: {integrity: sha512-dfbeERiVNeqmo/npivdR6rDiBCqZi3QtjH2Z0HFcXwpdj6i97dX1xaKyK2GUsO/p4u1TOv63Dmj5Vm48haDpuA==} @@ -3237,8 +3782,8 @@ packages: '@cspell/dict-csharp@4.0.8': resolution: {integrity: sha512-qmk45pKFHSxckl5mSlbHxmDitSsGMlk/XzFgt7emeTJWLNSTUK//MbYAkBNRtfzB4uD7pAFiKgpKgtJrTMRnrQ==} - '@cspell/dict-css@4.0.19': - resolution: {integrity: sha512-VYHtPnZt/Zd/ATbW3rtexWpBnHUohUrQOHff/2JBhsVgxOrksAxJnLAO43Q1ayLJBJUUwNVo+RU0sx0aaysZfg==} + '@cspell/dict-css@4.1.1': + resolution: {integrity: sha512-y/Vgo6qY08e1t9OqR56qjoFLBCpi4QfWMf2qzD1l9omRZwvSMQGRPz4x0bxkkkU4oocMAeztjzCsmLew//c/8w==} '@cspell/dict-dart@2.3.2': resolution: {integrity: sha512-sUiLW56t9gfZcu8iR/5EUg+KYyRD83Cjl3yjDEA2ApVuJvK1HhX+vn4e4k4YfjpUQMag8XO2AaRhARE09+/rqw==} @@ -3261,20 +3806,20 @@ packages: '@cspell/dict-en-common-misspellings@2.1.12': resolution: {integrity: sha512-14Eu6QGqyksqOd4fYPuRb58lK1Va7FQK9XxFsRKnZU8LhL3N+kj7YKDW+7aIaAN/0WGEqslGP6lGbQzNti8Akw==} - '@cspell/dict-en-gb-mit@3.1.18': - resolution: {integrity: sha512-AXaMzbaxhSc32MSzKX0cpwT+Thv1vPfxQz1nTly1VHw3wQcwPqVFSqrLOYwa8VNqAPR45583nnhD6iqJ9YESoQ==} + '@cspell/dict-en-gb-mit@3.1.20': + resolution: {integrity: sha512-rcWEKb1mwgK13CSHu6GwwFA/sWLRkB0twTzSfPxUOULJkhcUrL93ixohk416SBa0BVxixub+lOpTXKcCTbTXsA==} - '@cspell/dict-en_us@4.4.29': - resolution: {integrity: sha512-G3B27++9ziRdgbrY/G/QZdFAnMzzx17u8nCb2Xyd4q6luLpzViRM/CW3jA+Mb/cGT5zR/9N+Yz9SrGu1s0bq7g==} + '@cspell/dict-en_us@4.4.31': + resolution: {integrity: sha512-MdV6mbrSkyIqn9+6F5poCyHIPqWB3H/wlDL9LXfjgAxNFBdYRE767xJtIYunzUqhUiJHSJgZajEFdTtMDw441Q==} - '@cspell/dict-filetypes@3.0.16': - resolution: {integrity: sha512-SyrtuK2/sx+cr94jOp2/uOAb43ngZEVISUTRj4SR6SfoGULVV1iJS7Drqn7Ul9HJ731QDttwWlOUgcQ+yMRblg==} + '@cspell/dict-filetypes@3.0.17': + resolution: {integrity: sha512-6f1gZf9o60fGQXGi/fZaryISUNDRmmJwGyr4QU1UvgUgOdpDHLVJtv/0wSL9q5F0wAkYhbXo/fNG8CcUTaf7Ww==} '@cspell/dict-flutter@1.1.1': resolution: {integrity: sha512-UlOzRcH2tNbFhZmHJN48Za/2/MEdRHl2BMkCWZBYs+30b91mWvBfzaN4IJQU7dUZtowKayVIF9FzvLZtZokc5A==} - '@cspell/dict-fonts@4.0.5': - resolution: {integrity: sha512-BbpkX10DUX/xzHs6lb7yzDf/LPjwYIBJHJlUXSBXDtK/1HaeS+Wqol4Mlm2+NAgZ7ikIE5DQMViTgBUY3ezNoQ==} + '@cspell/dict-fonts@4.0.6': + resolution: {integrity: sha512-aR/0csY01dNb0A1tw/UmN9rKgHruUxsYsvXu6YlSBJFu60s26SKr/k1o4LavpHTQ+lznlYMqAvuxGkE4Flliqw==} '@cspell/dict-fsharp@1.1.1': resolution: {integrity: sha512-imhs0u87wEA4/cYjgzS0tAyaJpwG7vwtC8UyMFbwpmtw+/bgss+osNfyqhYRyS/ehVCWL17Ewx2UPkexjKyaBA==} @@ -3300,8 +3845,8 @@ packages: '@cspell/dict-html-symbol-entities@4.0.5': resolution: {integrity: sha512-429alTD4cE0FIwpMucvSN35Ld87HCyuM8mF731KU5Rm4Je2SG6hmVx7nkBsLyrmH3sQukTcr1GaiZsiEg8svPA==} - '@cspell/dict-html@4.0.14': - resolution: {integrity: sha512-2bf7n+kS92g+cMKV0wr9o/Oq9n8JzU7CcrB96gIh2GHgnF+0xDOqO2W/1KeFAqOfqosoOVE48t+4dnEMkkoJ2Q==} + '@cspell/dict-html@4.0.15': + resolution: {integrity: sha512-GJYnYKoD9fmo2OI0aySEGZOjThnx3upSUvV7mmqUu8oG+mGgzqm82P/f7OqsuvTaInZZwZbo+PwJQd/yHcyFIw==} '@cspell/dict-java@5.0.12': resolution: {integrity: sha512-qPSNhTcl7LGJ5Qp6VN71H8zqvRQK04S08T67knMq9hTA8U7G1sTKzLmBaDOFhq17vNX/+rT+rbRYp+B5Nwza1A==} @@ -3327,11 +3872,11 @@ packages: '@cspell/dict-makefile@1.0.5': resolution: {integrity: sha512-4vrVt7bGiK8Rx98tfRbYo42Xo2IstJkAF4tLLDMNQLkQ86msDlYSKG1ZCk8Abg+EdNcFAjNhXIiNO+w4KflGAQ==} - '@cspell/dict-markdown@2.0.14': - resolution: {integrity: sha512-uLKPNJsUcumMQTsZZgAK9RgDLyQhUz/uvbQTEkvF/Q4XfC1i/BnA8XrOrd0+Vp6+tPOKyA+omI5LRWfMu5K/Lw==} + '@cspell/dict-markdown@2.0.16': + resolution: {integrity: sha512-976RRqKv6cwhrxdFCQP2DdnBVB86BF57oQtPHy4Zbf4jF/i2Oy29MCrxirnOBalS1W6KQeto7NdfDXRAwkK4PQ==} peerDependencies: - '@cspell/dict-css': ^4.0.19 - '@cspell/dict-html': ^4.0.14 + '@cspell/dict-css': ^4.1.1 + '@cspell/dict-html': ^4.0.15 '@cspell/dict-html-symbol-entities': ^4.0.5 '@cspell/dict-typescript': ^3.2.3 @@ -3341,8 +3886,8 @@ packages: '@cspell/dict-node@5.0.9': resolution: {integrity: sha512-hO+ga+uYZ/WA4OtiMEyKt5rDUlUyu3nXMf8KVEeqq2msYvAPdldKBGH7lGONg6R/rPhv53Rb+0Y1SLdoK1+7wQ==} - '@cspell/dict-npm@5.2.35': - resolution: {integrity: sha512-w0VIDUvzHSTt4S9pfvSatApxtCesLMFrDUYD0Wjtw91EBRkB2wVw/RV3q1Ni9Nzpx6pCFpcB7c1xBY8l22cyiQ==} + '@cspell/dict-npm@5.2.37': + resolution: {integrity: sha512-dYKrD0bI08YgebJcbjsIDpTMK6EH0wTkEyQLsaH0T4tmsLJE95coTYb3eE7giRRGJADvBqrjH4fz5+INd85QqQ==} '@cspell/dict-php@4.1.1': resolution: {integrity: sha512-EXelI+4AftmdIGtA8HL8kr4WlUE11OqCSVlnIgZekmTkEGSZdYnkFdiJ5IANSALtlQ1mghKjz+OFqVs6yowgWA==} @@ -3359,8 +3904,8 @@ packages: '@cspell/dict-r@2.1.1': resolution: {integrity: sha512-71Ka+yKfG4ZHEMEmDxc6+blFkeTTvgKbKAbwiwQAuKl3zpqs1Y0vUtwW2N4b3LgmSPhV3ODVY0y4m5ofqDuKMw==} - '@cspell/dict-ruby@5.1.0': - resolution: {integrity: sha512-9PJQB3cfkBULrMLp5kSAcFPpzf8oz9vFN+QYZABhQwWkGbuzCIXSorHrmWSASlx4yejt3brjaWS57zZ/YL5ZQQ==} + '@cspell/dict-ruby@5.1.1': + resolution: {integrity: sha512-LHrp84oEV6q1ZxPPyj4z+FdKyq1XAKYPtmGptrd+uwHbrF/Ns5+fy6gtSi7pS+uc0zk3JdO9w/tPK+8N1/7WUA==} '@cspell/dict-rust@4.1.2': resolution: {integrity: sha512-O1FHrumYcO+HZti3dHfBPUdnDFkI+nbYK3pxYmiM1sr+G0ebOd6qchmswS0Wsc6ZdEVNiPYJY/gZQR6jfW3uOg==} @@ -3371,8 +3916,8 @@ packages: '@cspell/dict-shell@1.1.2': resolution: {integrity: sha512-WqOUvnwcHK1X61wAfwyXq04cn7KYyskg90j4lLg3sGGKMW9Sq13hs91pqrjC44Q+lQLgCobrTkMDw9Wyl9nRFA==} - '@cspell/dict-software-terms@5.1.22': - resolution: {integrity: sha512-ELi8wqyDAreDpo17Pu45AuKvcrhqPCkGeL+DMuSVxEimBwEqPB+KeQ89DkVap6QDJHl3LCth0pjv8uOgS1dtdQ==} + '@cspell/dict-software-terms@5.2.0': + resolution: {integrity: sha512-jyucc8KKxH5ClC4FPICISgcKAZU7UwgFdPkuuuK5nYIw0+l1umnUSn9IKCcOaurvXujvVP6mBfclXpUtmT6Vrw==} '@cspell/dict-sql@2.2.1': resolution: {integrity: sha512-qDHF8MpAYCf4pWU8NKbnVGzkoxMNrFqBHyG/dgrlic5EQiKANCLELYtGlX5auIMDLmTf1inA0eNtv74tyRJ/vg==} @@ -3478,8 +4023,14 @@ packages: '@emmetio/stream-reader@2.2.0': resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} - '@emnapi/runtime@1.8.1': - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + '@emnapi/core@1.9.1': + resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} + + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} @@ -3487,314 +4038,158 @@ packages: '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} - '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -3821,16 +4216,16 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.2': - resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} + '@eslint/config-array@0.23.3': + resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.2': - resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + '@eslint/config-helpers@0.5.3': + resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/core@1.1.0': - resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + '@eslint/core@1.1.1': + resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/js@10.0.1': @@ -3842,12 +4237,12 @@ packages: eslint: optional: true - '@eslint/object-schema@3.0.2': - resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} + '@eslint/object-schema@3.0.3': + resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.0': - resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + '@eslint/plugin-kit@0.6.1': + resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@expressive-code/core@0.41.7': @@ -3862,19 +4257,19 @@ packages: '@expressive-code/plugin-text-markers@0.41.7': resolution: {integrity: sha512-Ewpwuc5t6eFdZmWlFyeuy3e1PTQC0jFvw2Q+2bpcWXbOZhPLsT7+h8lsSIJxb5mS7wZko7cKyQ2RLYDyK6Fpmw==} - '@floating-ui/core@1.7.4': - resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} + '@floating-ui/core@1.7.5': + resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} '@floating-ui/devtools@0.2.3': resolution: {integrity: sha512-ZTcxTvgo9CRlP7vJV62yCxdqmahHTGpSTi5QaTDgGoyQq0OyjaVZhUhXv/qdkQFOI3Sxlfmz0XGG4HaZMsDf8Q==} peerDependencies: '@floating-ui/dom': ^1.0.0 - '@floating-ui/dom@1.7.5': - resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} + '@floating-ui/dom@1.7.6': + resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} - '@floating-ui/utils@0.2.10': - resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + '@floating-ui/utils@0.2.11': + resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} '@fluentui/keyboard-keys@9.0.8': resolution: {integrity: sha512-iUSJUUHAyTosnXK8O2Ilbfxma+ZyZPMua5vB028Ys96z80v+LFwntoehlFsdH3rMuPsA8GaC1RE7LMezwPBPdw==} @@ -3882,16 +4277,16 @@ packages: '@fluentui/priority-overflow@9.3.0': resolution: {integrity: sha512-yaBC0R4e+4ZlCWDulB5S+xBrlnLwfzdg68GaarCqQO8OHjLg7Ah05xTj7PsAYcoHeEg/9vYeBwGXBpRO8+Tjqw==} - '@fluentui/react-accordion@9.9.1': - resolution: {integrity: sha512-gM7okIjOd3HaCMt7wTN7pnsMzXT6r/M5rVlCZbOtmkzBEJPHRoNeO+cYWS7ttvlcdpvP2nQzbFyb3Vt7HYzmWg==} + '@fluentui/react-accordion@9.9.2': + resolution: {integrity: sha512-Mmi5nVKfQrBiBiD1JPVtCmIMrR1CpCy8hsWZLwv/pHt+uHHyW9HyrPXwiOitj3ookA5ec1kXyl34BN8RUi7DGQ==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-alert@9.0.0-beta.134': - resolution: {integrity: sha512-uXAEL8KkjHE7SYyr2GM1H8t5pe9FYfjUcWt6odX135e9SvHwD0w8dd0wVToyvABi5PsKaRHAWY3JHsfnam4r4w==} + '@fluentui/react-alert@9.0.0-beta.135': + resolution: {integrity: sha512-Qkr89e6tl4q0fhzfx9Wzb3ltiqbFtZj7AhT+CHZdW0I6KtpfGmJnvzaqvz0KXMdrKROTgvkA1Ny3Epf9ortc0Q==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -3906,8 +4301,8 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-avatar@9.10.1': - resolution: {integrity: sha512-rrb4v7impHzpohwWnqOemRO6WC16RbfAMwarc6TwJVC1NXC92YOlkpCDhgHqQHY51oM49fVIIPgAqi44jKZipw==} + '@fluentui/react-avatar@9.10.2': + resolution: {integrity: sha512-0qy3U1S80c2Z0A8O/3Ko8XmG4d/NCof1XZ1jclbneKLDT0PeoX3BUlDDgCalOEwb0s1x6TjLabam5FtY4E30cg==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -3946,16 +4341,24 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-carousel@9.9.3': - resolution: {integrity: sha512-qcVJAEg6f8ZQD3afaksZ2mo5Uyue4IJan4cUhWPLYCrkqgOS4WsvJ+7CyH3k3KLi2mR6x9Y/7OE2OwqaN4ASew==} + '@fluentui/react-carousel@9.9.4': + resolution: {integrity: sha512-mzGZUOe3tB+86/WPsQTgppYRoqeM1vl8LswISl7FVrxk7PREnzZLW4BEZnFOKuP29dThcjJNzF0mM/5kq1lKug==} + peerDependencies: + '@types/react': '>=16.14.0 <20.0.0' + '@types/react-dom': '>=16.9.0 <20.0.0' + react: '>=16.14.0 <20.0.0' + react-dom: '>=16.14.0 <20.0.0' + + '@fluentui/react-checkbox@9.5.16': + resolution: {integrity: sha512-jjbj5RTy78OzFT95zj6SI7RMV1JF7FLT1CiYIL13bFTsL9tiPyAqXRcdXGJOnt/EuyD3uKs2nyOu4M3QFVy0ng==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-checkbox@9.5.15': - resolution: {integrity: sha512-ZXvuZo8HvBLvsd74foI/p/YkxKRmruQLhleeQRMqyNKMbytFcYZ8rHmAN492tNMjmWxGIfZHv5Oh7Ds6poNmJg==} + '@fluentui/react-checkbox@9.5.17': + resolution: {integrity: sha512-40uRrCnWBMiWyVF2ZN9Ep2nnl/onYrSaa8fNnLBn6Tunhuk9flCxWZygkO5h9Da2QP6DasyGG8WZld1nrR9GUg==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -3970,16 +4373,16 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-combobox@9.16.16': - resolution: {integrity: sha512-CeAC2di3xiTRB5h5XpyF+blLc6NR5VHPG+rHLRNoLjQhn9frQK3HdHGxpBVYCzx9BUU6V2IhvIcPAGgz97XHIQ==} + '@fluentui/react-combobox@9.16.18': + resolution: {integrity: sha512-nmyleswOSS9O/3gn8AWQ9Uuyis0WTHO1zZnDVapFUdgd2+hAcUSjJXPQv6NGftuUB5bgS2qAx9prRJg17ZrZvA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-components@9.73.1': - resolution: {integrity: sha512-Ss323tSsAErf+dAk8rEt8aPClNRqRdK8AKyhrkz9OG6kHJbT/ST7+2rRT6e5lFl0XKc4EOAEalNrIAZIs4teSw==} + '@fluentui/react-components@9.73.3': + resolution: {integrity: sha512-8JqxJuQmcBungWH8KxgBjiNe4sP5UXiiVWTqQGJ8l23gua3SC8uHufoOEKneEDWULR4HHJThscbqDLsGpkcJaw==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -3995,8 +4398,8 @@ packages: react-dom: '>=16.14.0 <20.0.0' scheduler: '>=0.19.0' - '@fluentui/react-dialog@9.17.1': - resolution: {integrity: sha512-7jFcSceAqGw5nU/Fjq3s+yZJFqCY5YUI3XKKwhcqq9XwmgXvwNnh6FYCBdbcv69IXqxYsugBcCPC78C/cUDb8A==} + '@fluentui/react-dialog@9.17.2': + resolution: {integrity: sha512-mZdKylSvh2fRf0e3wMX3ZNccb9DahsOE7A5Y9LG97ghYvndMBVG2YwScIzUFVvLS206ari6HMOl0lC5JRB1bKA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4011,24 +4414,24 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-drawer@9.11.4': - resolution: {integrity: sha512-9+xPxdHj9Bfe2Oq4juBGzHRjMaMSpK/4nMysgpmne9nJ+xju8dQxBEbOCklpXOUOToY+Y6IBrhDkBXz4arbPsg==} + '@fluentui/react-drawer@9.11.5': + resolution: {integrity: sha512-eoZY+jKZwbJo1PUsb7Ico7u/8aObHL4BhPP6hd+HHNzB7seTpN7rLd0DpASLZsxJUy5yvch4QF2TrjOu6V8kRA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-field@9.4.15': - resolution: {integrity: sha512-hKdl+ncnT1C3vX8zQ4LqNGUk6TiatDOAW49dr18RkONcScg2staAaDme977Iozj6+AW7AJsDfkNxq/lwHhe/pg==} + '@fluentui/react-field@9.4.16': + resolution: {integrity: sha512-2mfuYGldeqr9Llt8QSfwdj1hQofScvNQ/1Rns9TE4QUP6cdqs3cPX2+FZNJzpgO9vq5bk0hJpKqo7lvXZdyEzw==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-icons@2.0.319': - resolution: {integrity: sha512-4yN0ovAxlOXL5jM3ULuYu6pAwvMWm1MjojDXn5tVKDkXQwlLpXCUFwf5Vgzp5jU6jJXrENj4v64MN6w7FJjotw==} + '@fluentui/react-icons@2.0.323': + resolution: {integrity: sha512-BWFvdg8Er3668fri7o5RVqdfDO3jIg0OvJmUl5EWg6lO7TeC8A+OTggjzqO+J062ONaHPHpQ9IHbnYQ+QXGwXg==} peerDependencies: react: '>=16.8.0 <20.0.0' @@ -4040,24 +4443,24 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-infobutton@9.0.0-beta.111': - resolution: {integrity: sha512-rPQUY+FzRfXiY/0If9Bp57/ZdpBeR7u4NWcRWnfOmvkc1YVIYXagYzrAhMnNHQ2o418XNYZr5gG3aE+LLbTbJQ==} + '@fluentui/react-infobutton@9.0.0-beta.112': + resolution: {integrity: sha512-Fhqoc6b1MQtHW+Mm5sBhfa5ZrRdOV4azuUa5WyBvwD4Ozq/z2pBOC/wi/A/WCjKMnGoMlQ2CggoLaMhQmenzAQ==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-infolabel@9.4.16': - resolution: {integrity: sha512-/VykpbidhS0G5t2PGXmGbXXgCiOmeIxlQCqfpKZF2ZWx3fQpqriMGXBMSsVDsqTasLmUDdmz3/OWI/rp/Wy+GQ==} + '@fluentui/react-infolabel@9.4.17': + resolution: {integrity: sha512-zLw52jn2wAuEKWFzaNj3aKhuB4BAEI8LqblryCg0LKPKHcv/z9d9RllCqcVz+ngdK1tQGtCIPH/wxNlZXx/I3Q==} peerDependencies: '@types/react': '>=16.8.0 <20.0.0' '@types/react-dom': '>=16.8.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.8.0 <20.0.0' - '@fluentui/react-input@9.7.15': - resolution: {integrity: sha512-pzGF1mOenV03RhIy+km8GrqCfahDSLm6YG7wxpE1m2q2fY73cyLZPuMbK7Kz27oaoyUI37v4Pa4612zl12228A==} + '@fluentui/react-input@9.7.16': + resolution: {integrity: sha512-dr6tBWbyDiP2KR7LDvJlxFwxucWfeFETumFo3fAtUSpjbTHMG0ZShh3cq0/c7Gqvq/ypl12jVB1Tj6E4RimV8g==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4086,48 +4489,48 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-list@9.6.10': - resolution: {integrity: sha512-NTAWYL8Z4h9N9N1b39H9xqfTyhfGkhlNTc3higpoIS/6jgEf6GMNF8iwvAyhB++hFdjBd27c+NbDl4MCwHhGiA==} + '@fluentui/react-list@9.6.12': + resolution: {integrity: sha512-vFeqP4r3rjqtd/p9p7woma/j2U3UlcirfqGje26ppBMzDs/0MWQiUmjTkQTMLnPeh72knnqwsF43dRSKSdTSng==} peerDependencies: '@types/react': '>=16.8.0 <20.0.0' '@types/react-dom': '>=16.8.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.8.0 <20.0.0' - '@fluentui/react-menu@9.21.2': - resolution: {integrity: sha512-n/GmEppa1h7FWn3iKDWFK7Oj7ww65e+FKyvQb7BtqkTRJXtcQ1eTR7upFOhoEf5AE5PN/5hL19/BDf+f+3GMqw==} + '@fluentui/react-menu@9.22.0': + resolution: {integrity: sha512-RPZvqHsxMDEArsz80mJabs1fVGPlCrhMntzM/wt3Bga+fyPv4yEuDdN5FB8JqUpIAjRZneiW0RLC0Mr3WqmatA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-message-bar@9.6.19': - resolution: {integrity: sha512-NgWLLUfulxwF+WF8jFqIV3n/2bv3ZG23n9zVp+3Vejmu7XfIVJ+5dhh/l4Y/hSlKuRgNieq8nu/EMLbRLn2zKQ==} + '@fluentui/react-message-bar@9.6.21': + resolution: {integrity: sha512-Vba3+7+TuzH2Ma6YB/Sd5dy+dm4DWwacZc0a78CetVqCzYZ4u/5opdmiBs8JY1Qr8uYW38siHLbY8kLnu6OOjA==} peerDependencies: '@types/react': '>=16.8.0 <20.0.0' '@types/react-dom': '>=16.8.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.8.0 <20.0.0' - '@fluentui/react-motion-components-preview@0.15.1': - resolution: {integrity: sha512-JA1CfznIme/YD5axU3iqYCoCpBqNDbql0k6CSB6niZ2YNo5md8J+/0qHjB9B5KmA1X35+0qmSSgu4G1SOqSvfw==} + '@fluentui/react-motion-components-preview@0.15.2': + resolution: {integrity: sha512-KqHRV8lLmVwOWiHBdpUFA+TwMbuYu9cyzNvmhbMFLVKzZyr3MPgN+97Tf+6QYPf22o99SMT0BPySDv/HiNYanA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-motion@9.12.0': - resolution: {integrity: sha512-+SBpgKLj4nXLqaulqa7LNP1bRsGO6zNesCs7ixHANFn/bGMOzET8Y3w0o522jVGZpzabEYQN7GotQy2QjT2IJg==} + '@fluentui/react-motion@9.13.0': + resolution: {integrity: sha512-YdOpW6e7qfvzoWKcqh8hReCqwYEoiEmNBcCprGaupKjWOi9jBbF/JESM1AHI9nOjPd8aY90WUG2+ahvrqfL9LA==} peerDependencies: '@types/react': '>=16.8.0 <20.0.0' '@types/react-dom': '>=16.8.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.8.0 <20.0.0' - '@fluentui/react-nav@9.3.19': - resolution: {integrity: sha512-nEoHY/lMvWhiz6Udj7Hxvoz/R3WEafwQoedJqjeiLm+4vfoVaEEzGcC81jgbefnYdtRX19s90WIBkbcwWp/T4g==} + '@fluentui/react-nav@9.3.20': + resolution: {integrity: sha512-YIObOcR92Nz4OUePrDhRdLQ5m9ph0y+U7U9NYgE/XFrLtWl+uqUS7u36m3NJl9QGgZVpUHO4nbNjizGLkncCCA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4142,16 +4545,16 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-persona@9.6.1': - resolution: {integrity: sha512-KQqtvd+IVdf/XsAU8e4WcOJaHBhe6Oj83w7ZVq/7xpXzbHZsTvBPUhdcnbo9/hjSf2UYh6Duu2mnOuH8ksjfdw==} + '@fluentui/react-persona@9.6.2': + resolution: {integrity: sha512-60kOmljlYjUiySWDN1bZh1FB4C7jbJS2dobtBJQh5agnKg34p3egO+6MwsBHRcwaGhVMh4T8XcbE6t2hw+iqyQ==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-popover@9.13.2': - resolution: {integrity: sha512-FtAesk3RecprQAgmh4raFP0GICWl250itCfB3AUb75b+1onPfTsZcdhfOiumRmU6smQy0N9w7HG2ZxHgl5jvSA==} + '@fluentui/react-popover@9.14.0': + resolution: {integrity: sha512-XrZlSfSYhA12j5bna4Sq8N/If2vul7gl8woVrN8U3iQUjdaHB6OAMZ/WMNUdMm35Z+4e4rHClAZxU2dUsbHrmw==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4166,16 +4569,16 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-positioning@9.21.0': - resolution: {integrity: sha512-1hkzaEQszS3ZTAIL8m/tV6c8sFaLBjp0EFo1UO+RvF/JmIrg64RagsIcc5k/SZ0d6oBp04zJlNN8gNPnxFJUpQ==} + '@fluentui/react-positioning@9.22.0': + resolution: {integrity: sha512-i3DLC4jd4MoYSZMYLKQNUTpkjKAJ0snIcihvkrjt2jpvv34CifKJhqVtjFQ470pRW4XNx/pBBX07vdXpA3poxA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-progress@9.4.15': - resolution: {integrity: sha512-U2dqtEtov7FoeIGSAEqdFV2O2pjx3gFzbCWpPkpuLCshOSGjCPPeLV3iiTGP1WFrGCcpwFoz5O2YmsnA3wf4oQ==} + '@fluentui/react-progress@9.4.16': + resolution: {integrity: sha512-IWVuD1hQoyIBK+RIGOCTc3HUPkdtOQghJPZ5uGwRrUlxGgpUV1h7rdAApiuQTWitrFfN6bP4PrsJmHT2DM2OFw==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4190,8 +4593,8 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-radio@9.5.15': - resolution: {integrity: sha512-47Zhe1Ec02QXczoPNLTFwcvCQFGoXInEiXhsQYF0tD+XAX6Q675j/z6gsIItc8V+avvD0IITsDPpqQ09wfNYkQ==} + '@fluentui/react-radio@9.5.16': + resolution: {integrity: sha512-xHRqm+MTkIf6JLEz/dMLlHSL9X+ysXAkig+VOV5QTPZwDIr3SqfJVvBmLNUVmtzf+cmWsRKrrIbVGpFGo/CvxA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4206,16 +4609,16 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.8.0 <20.0.0' - '@fluentui/react-search@9.3.15': - resolution: {integrity: sha512-xm9YveJM4aXAn/XjG3GMHpXxLO53Nz2mmuJpc80WXaYqQwesGSS0YfMSTbjM04RkvMsjmQM/dwWcudV9JQ0//g==} + '@fluentui/react-search@9.3.16': + resolution: {integrity: sha512-7dKzGqIXzfhYxIKI1arGARkUDyQHYfwArlR6jKrhmYppXJh7U174xsjkMH62B78rDdNVer3G38MXXjpQ5MvNAQ==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-select@9.4.15': - resolution: {integrity: sha512-NWoDzf3H7mu8fXBCR3YIlumMb7lDElsbmcCSIlUz70n2cPTNXcNEQm4ERWiGAmxf8xoAfgfDWc5rYnRWAFi2fA==} + '@fluentui/react-select@9.4.16': + resolution: {integrity: sha512-YsHMZsiKxH8suBtNTBXhtsvjM0u9UUXH641cEumgtjUz7SzeKNc/cWToLVyNz7GIoANL49rvubkByTeAQVCo2g==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4228,24 +4631,24 @@ packages: '@types/react': '>=16.14.0 <20.0.0' react: '>=16.14.0 <20.0.0' - '@fluentui/react-skeleton@9.4.15': - resolution: {integrity: sha512-QUVxZ5pYbIprCY1G5sJYDGvuvM1TNFl3vPkME8r/nD7pKXwxaZYJoob2L0DQ9OdnOeHgO8yTOgOgZEU+Km89dA==} + '@fluentui/react-skeleton@9.5.0': + resolution: {integrity: sha512-hYmtzFV47HezmW+v6EcHJOz560uuBahn3iZQpUrfyOmKFMM5Ou1Hc1lq62vuxuA9pybEqwZsaMRydGP3Ms23YQ==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-slider@9.5.15': - resolution: {integrity: sha512-lFDkyYYAUUGwbg1UJqjsuQ2tQUBFjxzv2Bpyr1StyAoS91q8skTUDyZxamJTJ0K6Ox/nhkfg+Wzz2aVg9kkF4Q==} + '@fluentui/react-slider@9.5.16': + resolution: {integrity: sha512-IgFdKcnX1KXLpfaB9/CYPgAmC7lfJ0FGEl1Y1uHYiL2YV6Dc+4yoAsCBABC1/KcEeafqCiaFTdNhS62QRK7Tbg==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-spinbutton@9.5.15': - resolution: {integrity: sha512-0NNfaXm8TJWHlillg6FPgJ1Ph7iO9ez+Gz4TSFYm1u+zF8RNsSGoplCf40U6gcKX8GkAHBwQ5vBZUbBK7syDng==} + '@fluentui/react-spinbutton@9.5.16': + resolution: {integrity: sha512-V4U9PSJM26BXrFqJ9K/VYYQeusBf8ldx5KOlZZ7hRamPsKTS5hyytWrF39lTLqCRlGckXPCLNzJpb1DLB+ID1g==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4260,24 +4663,24 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-swatch-picker@9.4.15': - resolution: {integrity: sha512-jeYSEDwLbQAW/UoTP15EZpVm2Z+UpPSjkgJaKk73UxX1+rD/JIzpxrN3FfEfkn3/uTZUQkd/SE4NQrilu1OMZQ==} + '@fluentui/react-swatch-picker@9.5.0': + resolution: {integrity: sha512-sl7MifqQGR4QGDhhgBIYc25YgPuFQW7+BOfNRMO5DYPq33lX5xHNcczhXywcBESAVHrjM0MC1lsE7glv6gU8RA==} peerDependencies: '@types/react': '>=16.8.0 <20.0.0' '@types/react-dom': '>=16.8.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.8.0 <20.0.0' - '@fluentui/react-switch@9.5.4': - resolution: {integrity: sha512-h5EosIApoz4bwgX6yKzKSf2ewTI21ghRZwyOhWOBmMc3g6Kt4kJU7gOyOtiRkoBcTE6tCpSKcrkhqeTM8G08IA==} + '@fluentui/react-switch@9.6.1': + resolution: {integrity: sha512-UVHJViXSR5jrNyjtU3yqhr1F14TbY8V59wMw9N1vP027ztrLx3Q30sEt0xG1TXv5BoAERnXhHws9HVIxBpRvEA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-table@9.19.9': - resolution: {integrity: sha512-CatOI+zE1/xGfhxSlYPklLwVgUQqvOhTNaqL3l8Wpe5omre/v+D5nQdTA9x9xKD+c2J4IZl3r4btOttwYJsDtA==} + '@fluentui/react-table@9.19.11': + resolution: {integrity: sha512-0ivIFR2JAp3HYlPnDrV5axBaOH06wtsQArBSOw6HXbQEz9JQ8Gi9SqEhQo6DBQ1/pcY3XeZjP+3r2HoFZXGaqA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4300,24 +4703,24 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-tag-picker@9.8.0': - resolution: {integrity: sha512-LQk+BFfKHYqVFCgIPbMtcQFpceeeF2Dk2HLTLnzlgt9AjavqevpWUgbjvjOHLMJ5rkn8y5un/bnD0iXiRVutgQ==} + '@fluentui/react-tag-picker@9.8.2': + resolution: {integrity: sha512-j8a9X3jychd9KQ7uhzjoyDT8hcAH40d+ZeHXCLQ8PcYfDdoZSDWcmLNc+xCGmlf+UkhWQU1Ks7hdWqBjGpr0MA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-tags@9.7.16': - resolution: {integrity: sha512-EgxFGG7nFtBJq3EbQyzhhxtZSSFckcHPeC9fiT9hY3GhfDwr/SYwh3jt4FiW/MY3hRjaU9EeRjkGNaVVQpA5tw==} + '@fluentui/react-tags@9.7.17': + resolution: {integrity: sha512-LCJJqoXIiN+aNqFHC/5nddsQJqh56xzrywwpMbMrQYI/dbIk5UYlmZ6arIPhQ9HVKat3YzGKAvOGlhFhEHIwDg==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-teaching-popover@9.6.17': - resolution: {integrity: sha512-1edb0zk6AuK9OrUVmFOIbZb0yzuMpcSmasfXDxdMiNP/q/44iD/4Ab0LfGYChaLDHk3Vx9x0MMrzD9nX+ImRUQ==} + '@fluentui/react-teaching-popover@9.6.18': + resolution: {integrity: sha512-cf76vSRZs40geZEw/RChfQvu6ioMyFKR0qvPc52QstPDC/cgGkOg+45G7SZo11IpYwBdkpUVWasnWUWSxTMiHw==} peerDependencies: '@types/react': '>=16.8.0 <20.0.0' '@types/react-dom': '>=16.8.0 <20.0.0' @@ -4332,8 +4735,8 @@ packages: react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-textarea@9.6.15': - resolution: {integrity: sha512-yGYW3d+t21qJXlVsbAHz07RR/YxVw5b56483nFAbqGP3RpPG8ert8q9Ci2mldI9LpjYTG5deXUHqfcVGJ7qDAg==} + '@fluentui/react-textarea@9.6.16': + resolution: {integrity: sha512-d72Ufs//9T+X7lIrY1D28/9BiVqtKSjZ5hHVgBnJJwuPSFAKn5b4jlysXkNKHEdMjJz57kYMK4Ieneyz+Xkhrw==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4343,32 +4746,32 @@ packages: '@fluentui/react-theme@9.2.1': resolution: {integrity: sha512-lJxfz7LmmglFz+c9C41qmMqaRRZZUPtPPl9DWQ79vH+JwZd4dkN7eA78OTRwcGCOTPEKoLTX72R+EFaWEDlX+w==} - '@fluentui/react-toast@9.7.13': - resolution: {integrity: sha512-mUJExTNcaeJkVugiMObfHb313y3Qntdzmhbf2R6x0q9lVp7oleYi8KLxmZRHD713q0KpAI4o0ZjIbo0c+9EvzQ==} + '@fluentui/react-toast@9.7.15': + resolution: {integrity: sha512-iuk4rf/WumpGrNIpRVLNamlPBY0rT9BhI4qTnVmzXqz5pY+8GmAq/TKUPER9/withtQW8V9srj91FWblxzpHRg==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-toolbar@9.7.3': - resolution: {integrity: sha512-h9mXLrQ55SFd2YXJXQOtpC+MJ3SckyGB5lWqFkQxqExFZkkeCL1u1bRf2/YFjNj8gbivVMwKmozzWeccexPeyQ==} + '@fluentui/react-toolbar@9.7.4': + resolution: {integrity: sha512-cpr+vJAzHJckN4S+JFSIeH4cg6q8pQuLVldH3ETrtNnWKERHeiY9ljAq3fbi/fU7ohgDit0DZnWUACrNu0pQQA==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-tooltip@9.9.2': - resolution: {integrity: sha512-LcYQyOqUxAq/FZX4BzMMVA2aX5wkyEZGzoIguehedZClIwQFZT/DeQ2RPNIXOfpmDTs0hcb4MFb3gknFPHigBA==} + '@fluentui/react-tooltip@9.9.3': + resolution: {integrity: sha512-a351JFoaBAOn0SnQ76tzuNv2ieHzAS+VO8Ncy4m9/emrIs5lvBBfKX8fvA4/efVxY+683XEQdoL1LuApuJuTWw==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' react: '>=16.14.0 <20.0.0' react-dom: '>=16.14.0 <20.0.0' - '@fluentui/react-tree@9.15.11': - resolution: {integrity: sha512-bQBa+MTAr04LIRVHsRiaG3q4DPVdyMx4VvnpiKT09eGTsVfNysXi+t65qdGfUMW7+Ppp4RlXZ6hWI3kdbWRdyw==} + '@fluentui/react-tree@9.15.13': + resolution: {integrity: sha512-ITT8SlYXfG+Wi0FYPJOqwROTa6Po2VZEtolUq9jPjMy5/q+Vto++fdHyWaVn3a5Joq6w576RDP1ZnlS7qoFPgg==} peerDependencies: '@types/react': '>=16.14.0 <20.0.0' '@types/react-dom': '>=16.9.0 <20.0.0' @@ -4403,16 +4806,16 @@ packages: '@gerrit0/mini-shiki@3.23.0': resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} - '@griffel/core@1.19.2': - resolution: {integrity: sha512-WkB/QQkjy9dE4vrNYGhQvRRUHFkYVOuaznVOMNTDT4pS9aTJ9XPrMTXXlkpcwaf0D3vNKoerj4zAwnU2lBzbOg==} + '@griffel/core@1.20.1': + resolution: {integrity: sha512-ld1mX04zpmeHn8agx4slSEh8kJ+8or3Y0x9gsJNKSKn6GdCkZBSiGUh+oBXCBn8RKzz8l60TA9IhVSStnyKekA==} - '@griffel/react@1.5.32': - resolution: {integrity: sha512-jN3SmSwAUcWFUQuQ9jlhqZ5ELtKY21foaUR0q1mJtiAeSErVgjkpKJyMLRYpvaFGWrDql0Uz23nXUogXbsS2wQ==} + '@griffel/react@1.6.1': + resolution: {integrity: sha512-mNM4/+dIXzqeHboWpVZ1/jiwTAYNc5/8y/V/HasnQ2QXnV6gSUYpeUk/0n6IFU3NJmVJly9JrLSfNo0hM/IFeA==} peerDependencies: react: '>=16.8.0 <20.0.0' - '@griffel/style-types@1.3.0': - resolution: {integrity: sha512-bHwD3sUE84Xwv4dH011gOKe1jul77M1S6ZFN9Tnq8pvZ48UMdY//vtES6fv7GRS5wXYT4iqxQPBluAiYAfkpmw==} + '@griffel/style-types@1.4.0': + resolution: {integrity: sha512-vNDfOGV7RN/XkA7vxgf7Z5HgW8eiBm5cHT9wQPhsKB4pxWom5u6eQ9CkYE5mCCTSPl9H6Nd1NBai04d4P6BD7Q==} '@gwhitney/detect-indent@7.0.1': resolution: {integrity: sha512-7bQW+gkKa2kKZPeJf6+c6gFK9ARxQfn+FKy9ScTBppyKRWH2KzsmweXUoklqeEiHiNVWaeP5csIdsNq6w7QhzA==} @@ -4440,8 +4843,8 @@ packages: '@iconify/utils@3.1.0': resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} - '@img/colour@1.0.0': - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} '@img/sharp-darwin-arm64@0.34.5': @@ -4775,8 +5178,8 @@ packages: resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} engines: {node: '>= 14.0.0'} - '@koa/router@15.3.0': - resolution: {integrity: sha512-s87hWJjFYky2Z97u8jzah73sSHp4IZivD/2PZCuspHRvcKU69OPLoBIbKigVlBmS50yFTh9GHFfr1hDag4+wXw==} + '@koa/router@15.3.1': + resolution: {integrity: sha512-n7UgxsPmgKtEsrguz8a0d6BNx3lO2x52Z4UqkGsGwJculk4TlzZf3btd3QZMq1r1M+bSxUkBbyul4mDhysIVaQ==} engines: {node: '>= 20'} peerDependencies: koa: ^2.0.0 || ^3.0.0 @@ -4790,8 +5193,8 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mermaid-js/parser@1.0.0': - resolution: {integrity: sha512-vvK0Hi/VWndxoh03Mmz6wa1KDriSPjS2XMZL/1l19HFwygiObEEoEwSDxOqyLzzAI6J2PU3261JjTMTO7x+BPw==} + '@mermaid-js/parser@1.0.1': + resolution: {integrity: sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==} '@microsoft/1ds-core-js@4.3.11': resolution: {integrity: sha512-QyQE/YzFYB+31WEpX9hvDoXZOIXA7308Z5uuL1mSsyDSkNPl24hBWz9O3vZL+/p9shy756eKLI2nFLwwIAhXyw==} @@ -4802,8 +5205,8 @@ packages: '@microsoft/api-extractor-model@7.33.4': resolution: {integrity: sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==} - '@microsoft/api-extractor@7.57.6': - resolution: {integrity: sha512-0rFv/D8Grzw1Mjs2+8NGUR+o4h9LVm5zKRtMeWnpdB5IMJF4TeHCL1zR5LMCIudkOvyvjbhMG5Wjs0B5nqsrRQ==} + '@microsoft/api-extractor@7.57.7': + resolution: {integrity: sha512-kmnmVs32MFWbV5X6BInC1/TfCs7y1ugwxv1xHsAIj/DyUfoe7vtO0alRUgbQa57+yRGHBBjlNcEk33SCAt5/dA==} hasBin: true '@microsoft/applicationinsights-channel-js@3.3.11': @@ -4838,11 +5241,14 @@ packages: '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@nevware21/ts-async@0.5.5': resolution: {integrity: sha512-vwqaL05iJPjLeh5igPi8MeeAu10i+Aq7xko1fbo9F5Si6MnVN5505qaV7AhSdk5MCBJVT/UYMk3kgInNjDb4Ig==} - '@nevware21/ts-utils@0.12.6': - resolution: {integrity: sha512-UsS1hbgr/V/x8dT7hVHvr/PwHzASi8/Itis1+L8ykLiqsUXdfzrB1maL0vMmKbDEJpmGARsoC/7RIswi+n248Q==} + '@nevware21/ts-utils@0.13.0': + resolution: {integrity: sha512-F3mD+DsUn9OiZmZc5tg0oKqrJCtiCstwx+wE+DNzFYh2cCRUuzTYdK9zGGP/au2BWvbOQ6Tqlbjr2+dT1P3AlQ==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -4897,8 +5303,8 @@ packages: resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} engines: {node: ^20.17.0 || >=22.9.0} - '@npmcli/run-script@10.0.3': - resolution: {integrity: sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==} + '@npmcli/run-script@10.0.4': + resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==} engines: {node: ^20.17.0 || >=22.9.0} '@octokit/app@16.1.2': @@ -5021,6 +5427,9 @@ packages: '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + '@oxc-project/types@0.120.0': + resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} + '@pagefind/darwin-arm64@1.4.0': resolution: {integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==} cpu: [arm64] @@ -5087,22 +5496,22 @@ packages: resolution: {integrity: sha512-qD1hvOZktx7zs9L5J/4tkMNoaLJ3PqSLDH/nXzpS0DtNa/Ok7/evsncM2pr6IFto566fZ02Oumdy9IdiR7r7EQ==} engines: {node: '>=18.12'} - '@pnpm/cli-utils@1001.3.7': - resolution: {integrity: sha512-NOPaGfceJm1kjar6mvHVzjlCnyO2bidV8IDZZZLBb0yKMs6wHchJZqrZiNoX+Fcy5JruUy1ZD59CrcK3X4DMdQ==} + '@pnpm/cli-utils@1001.3.9': + resolution: {integrity: sha512-AEOavMZKKZOfd3B+qJoDDnJAeRB/004sr7+jfDEwq1GbVh/iXGu1VZfLJ6s3GxLV7FPiDSmaZeS/pN9ax5Q41w==} engines: {node: '>=18.12'} peerDependencies: - '@pnpm/logger': '>=1001.0.0 <1002.0.0' + '@pnpm/logger': ^1001.0.1 - '@pnpm/client@1001.1.21': - resolution: {integrity: sha512-wuQkvMLWFR8CzUZ+AsY9pkJF72mk6D21SJibyWsRWMXdVv5YHDFbu4TTuA2rr3Bl5AG71Vau118qWysozr7t5g==} + '@pnpm/client@1001.1.23': + resolution: {integrity: sha512-2OYGiE+SQbx+zp+I6yuefykTcSiLZ5xnMjNVYxoUUDddaCiOJMyMVV8BeajOSxZhnMnJM+u/qhPKMndW70XxGQ==} engines: {node: '>=18.12'} - '@pnpm/config.config-writer@1000.1.1': - resolution: {integrity: sha512-ZQewE8xplwBUyjJloolXmWgTlw1qOEqihI7fBxwiggFJyJuG9f6nGreh/Lr+cJdE5fjyoEkboI5Jln0ZOz9LQQ==} + '@pnpm/config.config-writer@1000.1.2': + resolution: {integrity: sha512-iIAdVA+RBuVbp7GnfaA62ja/DtiQsrZPCoKX5rTYTtuIq7PcnFNd1ZYC5Y94oWjh3pSPHlCMM1NxMuXUNJsORw==} engines: {node: '>=18.12'} - '@pnpm/config.deps-installer@1000.1.3': - resolution: {integrity: sha512-3QhXUpN8azmL95hRlUfcygeZHa0DX6TH7iWRLwCtlAYF3pjjnNnCYL2UCCeUAK+9wsDa2NkMqtatWgwCFJNzNA==} + '@pnpm/config.deps-installer@1000.1.4': + resolution: {integrity: sha512-UeV5dmKsrh8bivRnZlqqt478/SFDalIBZLhvHh2BICM8NRzAcrtVVcKKFRRuE5rv7r4EoxQDUGZ7Hhm08vvvuA==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' @@ -5119,11 +5528,11 @@ packages: resolution: {integrity: sha512-03d2l21gAyzGVr9SR6rS5pvCTnZ4HaNdi8jB2Y/UGvszzrNbA+AJVObVw6SulNQ1Eah3SHB9wCezJwtP+jYIcA==} engines: {node: '>=18.12'} - '@pnpm/config@1004.10.2': - resolution: {integrity: sha512-ou47rL3nFTygnsvVjZlNP26qSnWUIP7ix+BBSKHPP9ux6z+e1ga/cDs9pdVf4L6SIpd0H6XVBPSd+HkgRXi4yQ==} + '@pnpm/config@1004.10.4': + resolution: {integrity: sha512-iUCtLSTy59dEvrY3e15cT5lzBsQ5NOx0z4n3rWczTVfVbSwc5j916eSONJ+HbnHmqxzPm4iCtmdzP1Uu2qqeig==} engines: {node: '>=18.12'} peerDependencies: - '@pnpm/logger': '>=1001.0.0 <1002.0.0' + '@pnpm/logger': ^1001.0.1 '@pnpm/constants@1001.3.1': resolution: {integrity: sha512-2hf0s4pVrVEH8RvdJJ7YRKjQdiG8m0iAT26TTqXnCbK30kKwJW69VLmP5tED5zstmDRXcOeH5eRcrpkdwczQ9g==} @@ -5135,8 +5544,8 @@ packages: peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@pnpm/create-cafs-store@1000.0.31': - resolution: {integrity: sha512-UOrXGszVzR8bXmSmsZHq6WheamGpOOd0t8tOPtHVnW3G2BQPwHd0DczbJd2Gr2E4NyGdGtdg+cZHrHZT3ky9Nw==} + '@pnpm/create-cafs-store@1000.0.32': + resolution: {integrity: sha512-TQtVkMGHd9mwlx7eR1P6iHSx0UR2OPeYWAF7bI6ie72/D79r6xAIC2i8RDjzok93/wL0lRK863WIgTi89M+yiw==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' @@ -5161,14 +5570,14 @@ packages: resolution: {integrity: sha512-+d8Q576BxRZgt03O+JZXK3C1xVJeAr4Hs35Y8SCl01KpQ0Z7xzfJWahpee7iFc5jELiwjCQg2sISTwtZZQFltA==} engines: {node: '>=18.12'} - '@pnpm/default-reporter@1002.1.11': - resolution: {integrity: sha512-2dU4nbSxzyXFb96JY6eyo+a3aD0j3s+vOyuDGRs1+8jKmyf1rOaiBPl2MTTbFhFsFlTFsInxca02KtgEw+ym9A==} + '@pnpm/default-reporter@1002.1.13': + resolution: {integrity: sha512-OS+R1UorQsMSJZG0w2V6Tu1+mfGO7wvrwhCg3DiOH9TaZOM4S9eISzyPPuydmdcqDQVNIlZ+R17BBWo2JrH9fg==} engines: {node: '>=18.12'} peerDependencies: - '@pnpm/logger': '>=1001.0.0 <1002.0.0' + '@pnpm/logger': ^1001.0.1 - '@pnpm/default-resolver@1002.3.5': - resolution: {integrity: sha512-yg4ihuMRAsmePU4BkaXcLsJM81wbd2Ug0m8mI3l+Hsnv4hut8fS9NL/dEvimILpNtoVKA8/brY4coRnY7it0ZA==} + '@pnpm/default-resolver@1002.3.7': + resolution: {integrity: sha512-P4KQO9L/gap6l02wMU6rN5c/kDYajQ724DnRt6Lvzmru7hdPmbgSRN44DtUGY+6UQqO6inHq9rcg+RJ1yCJGrw==} engines: {node: '>=18.12'} '@pnpm/dependency-path@1001.1.10': @@ -5223,8 +5632,8 @@ packages: peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@pnpm/fs.indexed-pkg-importer@1000.1.24': - resolution: {integrity: sha512-U7qHF9uOAPM2HNAnvlkHVxN6qFScX0ElsCQvxa+z2nmv5qbdK2a6Z6Q98gwMo7QnXnCnHY0Urs+5oxv5TykYVw==} + '@pnpm/fs.indexed-pkg-importer@1000.1.25': + resolution: {integrity: sha512-G8fZHO2llFeo4r4/Pdxzocrxxu0Ew0RXEp3BMyRGaOkDP+sXR7/v2fz7qPP0Lr4r6dlHx1RaRa27CvRqWM9adQ==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' @@ -5320,12 +5729,12 @@ packages: resolution: {integrity: sha512-eYwrzhKUBGFdq78rJStGjaHTUHA2VH+Avr//CVx/T+EJkI7hnFmOy6YghvcB2clj8HpO4V8tXRNuFNfRX08ayw==} engines: {node: ^10.17 || >=12.3} - '@pnpm/node.fetcher@1001.0.24': - resolution: {integrity: sha512-sT5dl2TqZEtFwpuXPN9sKQ04v5nVjBzhNA99oKJA0PuAMv8h1BMf0Q7lKtCygvS8BwRFY/Bpl/ggBPObry4Etg==} + '@pnpm/node.fetcher@1001.0.26': + resolution: {integrity: sha512-9IptQjAqrTKQC8ImVIqgLWxSzKax2jZNk2+XOuSAB5UDiNxFNzlGc/EApJQ53+p0CiIJLZXRH72Wq9EJJQmR+g==} engines: {node: '>=18.12'} - '@pnpm/node.resolver@1001.0.20': - resolution: {integrity: sha512-z69mACqwYJuXa+/RoGLo2P5kWczc/atwu/cbDZUENEzcvWugPW8+EYSixhs9p/9yJj56rn+HDK+VKyIrGotIzA==} + '@pnpm/node.resolver@1001.0.22': + resolution: {integrity: sha512-mu58AxResjqwKkrYbHrSXALEj8/wRZW61Krjek/ELvM/0Bl2HimWgOAp3upOUs8gVzZPRRIb/Sz6u/2luRZhcg==} engines: {node: '>=18.12'} '@pnpm/npm-conf@3.0.2': @@ -5336,8 +5745,8 @@ packages: resolution: {integrity: sha512-5jW/GNLdZMiw+PJ8FYSvOghoApSjsORNIro2fj8j6NHAqJxJjcHekC5/NsKaawoI5LAkU/XDDVjNC71Yz+uS1w==} engines: {node: '>=18.12'} - '@pnpm/npm-resolver@1005.2.1': - resolution: {integrity: sha512-1ON+1LUVjw8d3n/AeZ2xCssGuHOTnl1gumwHf5nrGR42eLMEPBd2QRvQ80xMx0LunjdbkIR/d48PfKNfoSOr5w==} + '@pnpm/npm-resolver@1005.2.2': + resolution: {integrity: sha512-+msICPF2Amtm9IAFc4m1iniguOdzAVtb677ijDVan9fRf+3QmPB3Pj48ihLPKZBToo2+KvmTsVsap2VxsGsgZQ==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' @@ -5363,12 +5772,12 @@ packages: '@pnpm/logger': '>=1001.0.0 <1002.0.0' '@pnpm/worker': ^1000.6.5 - '@pnpm/package-store@1007.1.4': - resolution: {integrity: sha512-bLCYkPBFtg+VHItj/CA9iezOr5mXK9Wig8f/nA6WnKHBkSh/a71EBwsN340Z1B9hvD21CbbKqNkKjLMubvcRVg==} + '@pnpm/package-store@1007.1.5': + resolution: {integrity: sha512-b1kpa9o2BIRTALsg0+0lrbTUCYrZngsFaml5W68EeYKDe7J4XOl+SaDmGSvOaIx0dWsxrOEi0RTqJ2lUm5eCdw==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@pnpm/worker': ^1000.6.5 + '@pnpm/worker': ^1000.6.6 '@pnpm/parse-wanted-dependency@1001.0.0': resolution: {integrity: sha512-cIZao+Jdu/4znu76d3ttAWBycDj6GWKiDVNlx1GVgqYgS/Qn7ak3Lm0FGIMAIHr5oOnX63jwzKIhW35AHNaTjQ==} @@ -5435,17 +5844,17 @@ packages: resolution: {integrity: sha512-47zGgACkbZWLOmM61kaE0nkqxiYx63C6DJ4wzDsdj0iXDZJ9SJEl+T035pkhquHe8XEh3YxvwMg2BRyZSgmZ9Q==} engines: {node: '>=18.12'} - '@pnpm/resolving.bun-resolver@1005.0.8': - resolution: {integrity: sha512-09wYnB12gwNAEYsYuHrlh+uxcS/47g4P3rAgVJoOVg3XJVeTwQb5HZewinNmXkgcuuOHntvQ7LPknbtrybQBAQ==} + '@pnpm/resolving.bun-resolver@1005.0.10': + resolution: {integrity: sha512-YbtHjqombwINiW1kLRVK/DbEjjoJWAVXZYv90o9rWapzaAM8wvsrj79KEIvYMowOPGtkbFYvusga0pO4Orp3ZQ==} engines: {node: '>=18.12'} peerDependencies: - '@pnpm/worker': ^1000.6.5 + '@pnpm/worker': ^1000.6.6 - '@pnpm/resolving.deno-resolver@1005.0.8': - resolution: {integrity: sha512-V/Xhf36i6XD+Cm87PQv4Eq99iW+/0EE0A1BcrPMyIKor/qjTChQmMw4EcxEW93y47V6/AVo3nia+MAJRw1ri6w==} + '@pnpm/resolving.deno-resolver@1005.0.10': + resolution: {integrity: sha512-KEBLNSUfZFikxR7bptmb08FpCLT6CCsOMLRrkt0eJtPt97+tP79uNzxiMbReHM5NIKunY9RtrbnX85MenHkGuQ==} engines: {node: '>=18.12'} peerDependencies: - '@pnpm/worker': ^1000.6.5 + '@pnpm/worker': ^1000.6.6 '@pnpm/resolving.jsr-specifier-parser@1000.0.3': resolution: {integrity: sha512-VaGXRwSez71iZ65nOat/B0oPViWyLzAdgAfNJjmt1eDoNZ0Npu+9lrI0ZNRVZ0NDH3U+TQ8LVesCZOdvr0+5SQ==} @@ -5461,11 +5870,11 @@ packages: peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@pnpm/store-connection-manager@1002.3.16': - resolution: {integrity: sha512-5FS8WDunT7nD0SxNCMfq2rmxrsaQRpGrFbSnsQwS3af5Qssfx18V/n9V8g8QdSG8OqcIyeGb0K7zAfN71ZYLvQ==} + '@pnpm/store-connection-manager@1002.3.18': + resolution: {integrity: sha512-05CF8QsRFeIuNIp5Hsr9xJqRy/Qw8miQPH0TWE9nr/9eUb+s2RYO51mT3QTcMvKDhtByi0RTmO/yOOPnyMCoEQ==} engines: {node: '>=18.12'} peerDependencies: - '@pnpm/logger': '>=1001.0.0 <1002.0.0' + '@pnpm/logger': ^1001.0.1 '@pnpm/store-controller-types@1004.5.1': resolution: {integrity: sha512-UT6UpPIuebGhYEldceeprZZn3/NWS4CGOvObxbrfRRVPoBhJTYZwC9rg5rPooTpPH+LiSGLRHc34lPMIQzn7NQ==} @@ -5517,24 +5926,24 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true - '@pnpm/worker@1000.6.5': - resolution: {integrity: sha512-xood4PKhLQUtRCpaVxMfuap1DpmVOP5PDN2arx1CKR9JnBuE0bQvBOGZDUf6lp7qccq+8iYryLoigibr5YMVVw==} + '@pnpm/worker@1000.6.6': + resolution: {integrity: sha512-yIO8jiT5hbeox/DE3ZmO7TVyCys0eMi3EaBzMOOMgEdPY/AOVJxkBL+zxUvVB6xEXmg3Y+WD1WPH9Y4mhfv+9w==} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': '>=1001.0.0 <1002.0.0' - '@pnpm/workspace.find-packages@1000.0.62': - resolution: {integrity: sha512-V2UJSUu7NzmhRo3YwzDDNBJORDI9Dhf8r7x5uDchiNYHQSc3BZkIGqYjosgOETP8wcmDfL+b0WKTep2ejT9GoA==} + '@pnpm/workspace.find-packages@1000.0.64': + resolution: {integrity: sha512-zH+3N4Bl8qfcTZluBG+gHgao1fea+A/7W/QZWt+ZeIwDKubQn0ZE6uOAZv5HPxnIUdP/Lr6jRpxurVZFpjkSQA==} engines: {node: '>=18.12'} peerDependencies: - '@pnpm/logger': '>=1001.0.0 <1002.0.0' + '@pnpm/logger': ^1001.0.1 - '@pnpm/workspace.manifest-writer@1001.2.0': - resolution: {integrity: sha512-YUuHA9yZ8lgctjMHwbxllCXAT5TsifQ1/8K1hmBIvzd7T4aLoitG9niVg2Af8IaECtpMq5RaPYUHStsCXSxMAA==} + '@pnpm/workspace.manifest-writer@1001.3.0': + resolution: {integrity: sha512-WlEnAekdAGUr8gOodboao1aCpUYDYieSiwHwfO1H9WnOL7v45KoBNvAC5h2O9noC8Acwb2bzJDHRpmKBHWN5aw==} engines: {node: '>=18.12'} - '@pnpm/workspace.read-manifest@1000.2.10': - resolution: {integrity: sha512-SnKM53rRYwpgrNI/LQ/4wa0BP9hkc29kQt2c9bBE1daDQP89z61v3LCkchnthgdE1s530JmaJRAf9tHtqRQ0jA==} + '@pnpm/workspace.read-manifest@1000.3.0': + resolution: {integrity: sha512-aBTT6pViHvR+ARJYpMpxbs5+OcIq/9HKQLvYxyTm6ozoRoVgrNogWTRNDnnQptc02h1EvdVSoR36cCB+aoKkLw==} engines: {node: '>=18.12'} '@pnpm/workspace.spec-parser@1000.0.0': @@ -5545,6 +5954,10 @@ packages: resolution: {integrity: sha512-zG68fk03ryot7TWUl9S/ShQ91uHWzIL9sVr2aQCuNHJo8G9kjsG6S0p58Zj/voahdDQeakZYYBSJ0mjNZeiJnw==} engines: {node: '>=18.12'} + '@pnpm/yaml.document-sync@1000.0.0': + resolution: {integrity: sha512-aEmCtfPJejq9I/q7pIYNo3Q0ryPrUoR57noCJbU+f0zNmg8JKG5YVVfCVvo5KNnG3LlN/MDyWvSHTeqy+HCoWA==} + engines: {node: '>=18.12'} + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -5608,162 +6021,275 @@ packages: resolution: {integrity: sha512-Tb5wIMvBf/nLejTQ61krK644/CEMB/cpiaIFXqGApfGqO3GwcR3qnI0DbmkFVCl2OyEp8LnLX3EkucoL0+tbFg==} engines: {node: ^v12.20.0 || ^14.13.0 || >=16.0.0} - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rolldown/binding-android-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.10': + resolution: {integrity: sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.10': + resolution: {integrity: sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': + resolution: {integrity: sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': + resolution: {integrity: sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': + resolution: {integrity: sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': + resolution: {integrity: sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': + resolution: {integrity: sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': + resolution: {integrity: sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.10': + resolution: {integrity: sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==} '@rolldown/pluginutils@1.0.0-rc.3': resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + '@rollup/plugin-babel@6.1.0': resolution: {integrity: sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==} engines: {node: '>=14.0.0'} peerDependencies: '@babel/core': ^7.0.0 '@types/babel__core': ^7.1.9 - rollup: 4.49.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: '@types/babel__core': optional: true rollup: optional: true - '@rollup/plugin-inject@5.0.5': - resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: 4.49.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: 4.49.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.49.0': - resolution: {integrity: sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA==} + '@rollup/rollup-android-arm-eabi@4.60.0': + resolution: {integrity: sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.49.0': - resolution: {integrity: sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w==} + '@rollup/rollup-android-arm64@4.60.0': + resolution: {integrity: sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.49.0': - resolution: {integrity: sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw==} + '@rollup/rollup-darwin-arm64@4.60.0': + resolution: {integrity: sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.49.0': - resolution: {integrity: sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg==} + '@rollup/rollup-darwin-x64@4.60.0': + resolution: {integrity: sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.49.0': - resolution: {integrity: sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA==} + '@rollup/rollup-freebsd-arm64@4.60.0': + resolution: {integrity: sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.49.0': - resolution: {integrity: sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w==} + '@rollup/rollup-freebsd-x64@4.60.0': + resolution: {integrity: sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.49.0': - resolution: {integrity: sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.0': + resolution: {integrity: sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.49.0': - resolution: {integrity: sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA==} + '@rollup/rollup-linux-arm-musleabihf@4.60.0': + resolution: {integrity: sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.49.0': - resolution: {integrity: sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg==} + '@rollup/rollup-linux-arm64-gnu@4.60.0': + resolution: {integrity: sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.49.0': - resolution: {integrity: sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg==} + '@rollup/rollup-linux-arm64-musl@4.60.0': + resolution: {integrity: sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loongarch64-gnu@4.49.0': - resolution: {integrity: sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ==} + '@rollup/rollup-linux-loong64-gnu@4.60.0': + resolution: {integrity: sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.49.0': - resolution: {integrity: sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g==} + '@rollup/rollup-linux-loong64-musl@4.60.0': + resolution: {integrity: sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.60.0': + resolution: {integrity: sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.49.0': - resolution: {integrity: sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw==} + '@rollup/rollup-linux-ppc64-musl@4.60.0': + resolution: {integrity: sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.60.0': + resolution: {integrity: sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.49.0': - resolution: {integrity: sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw==} + '@rollup/rollup-linux-riscv64-musl@4.60.0': + resolution: {integrity: sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.49.0': - resolution: {integrity: sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A==} + '@rollup/rollup-linux-s390x-gnu@4.60.0': + resolution: {integrity: sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.49.0': - resolution: {integrity: sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + '@rollup/rollup-linux-x64-gnu@4.60.0': + resolution: {integrity: sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.49.0': - resolution: {integrity: sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg==} + '@rollup/rollup-linux-x64-musl@4.60.0': + resolution: {integrity: sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-win32-arm64-msvc@4.49.0': - resolution: {integrity: sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA==} + '@rollup/rollup-openbsd-x64@4.60.0': + resolution: {integrity: sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.0': + resolution: {integrity: sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.0': + resolution: {integrity: sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.49.0': - resolution: {integrity: sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA==} + '@rollup/rollup-win32-ia32-msvc@4.60.0': + resolution: {integrity: sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.49.0': - resolution: {integrity: sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg==} + '@rollup/rollup-win32-x64-gnu@4.60.0': + resolution: {integrity: sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==} cpu: [x64] os: [win32] - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@rollup/rollup-win32-x64-msvc@4.60.0': + resolution: {integrity: sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==} + cpu: [x64] + os: [win32] '@rushstack/node-core-library@5.20.3': resolution: {integrity: sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==} @@ -5803,24 +6329,24 @@ packages: '@types/node': optional: true - '@scalar/helpers@0.2.16': - resolution: {integrity: sha512-JlDUKdmwAHdcFUdTngNtx/uhLKTBACXlgvri7iKb6Jx6ImRIBgHwxZNAqlil1L047+QBrKh97lnezNpzNQAffQ==} + '@scalar/helpers@0.2.18': + resolution: {integrity: sha512-w1d4tpNEVZ293oB2BAgLrS0kVPUtG3eByNmOCJA5eK9vcT4D3cmsGtWjUaaqit0BQCsBFHK51rasGvSWnApYTw==} engines: {node: '>=20'} - '@scalar/json-magic@0.11.5': - resolution: {integrity: sha512-WhNsLzjaCwa0hdYVezHnNmlOkX8PMPbyljeBfHtkmxMSf8W5Ht1LePQzfWzMc9SFwN6n7LcR4XVQvUwwNIyUUg==} + '@scalar/json-magic@0.11.7': + resolution: {integrity: sha512-GVz9E0vXu+ecypkdn0biK1gbQVkK4QTTX1Hq3eMgxlLQC91wwiqWfCqwfhuX0LRu+Z5OmYhLhufDJEEh56rVgA==} engines: {node: '>=20'} - '@scalar/openapi-parser@0.24.14': - resolution: {integrity: sha512-C3PBhS1TNJY+nCoUnrLiyKgLIty9Iu0QVvj2XhU0uMFJNwtMS18xdvTiQ1Svtu2YZF08T6K9UPbViBKwSMFcbg==} + '@scalar/openapi-parser@0.24.17': + resolution: {integrity: sha512-aM9UVrzlMreC3X/sZbyj+7XDZmat3ecGC3RpU8dqEO/HIH+CEX0xMLuP+41DhePCYg5+9TtDomSfWuMq4x1Z1A==} engines: {node: '>=20'} - '@scalar/openapi-types@0.5.3': - resolution: {integrity: sha512-m4n/Su3K01d15dmdWO1LlqecdSPKuNjuokrJLdiQ485kW/hRHbXW1QP6tJL75myhw/XhX5YhYAR+jrwnGjXiMw==} + '@scalar/openapi-types@0.5.4': + resolution: {integrity: sha512-2pEbhprh8lLGDfUI6mNm9EV104pjb3+aJsXrFaqfgOSre7r6NlgM5HcSbsLjzDAnTikjJhJ3IMal1Rz8WVwiOw==} engines: {node: '>=20'} - '@scalar/openapi-upgrader@0.1.8': - resolution: {integrity: sha512-2xuYLLs0fBadLIk4I1ObjMiCnOyLPEMPf24A1HtHQvhKGDnGlvT63F2rU2Xw8lxCjgHnzveMPnOJEbwIy64RCg==} + '@scalar/openapi-upgrader@0.1.11': + resolution: {integrity: sha512-ngJcHGoCHmpWgYtNy08vmzFfLdQEkMpvaCQqNPPMNKq0QEXOv89e/rn+TZJZgPnRlY7fDIoIhn9lNgr+azBW+w==} engines: {node: '>=20'} '@scarf/scarf@1.4.0': @@ -5877,21 +6403,49 @@ packages: '@shikijs/core@3.23.0': resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} + '@shikijs/core@4.0.2': + resolution: {integrity: sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==} + engines: {node: '>=20'} + '@shikijs/engine-javascript@3.23.0': resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} + '@shikijs/engine-javascript@4.0.2': + resolution: {integrity: sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==} + engines: {node: '>=20'} + '@shikijs/engine-oniguruma@3.23.0': resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + '@shikijs/engine-oniguruma@4.0.2': + resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} + engines: {node: '>=20'} + '@shikijs/langs@3.23.0': resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + '@shikijs/langs@4.0.2': + resolution: {integrity: sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==} + engines: {node: '>=20'} + + '@shikijs/primitive@4.0.2': + resolution: {integrity: sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==} + engines: {node: '>=20'} + '@shikijs/themes@3.23.0': resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + '@shikijs/themes@4.0.2': + resolution: {integrity: sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==} + engines: {node: '>=20'} + '@shikijs/types@3.23.0': resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + '@shikijs/types@4.0.2': + resolution: {integrity: sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==} + engines: {node: '>=20'} + '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -5958,25 +6512,25 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@storybook/builder-vite@10.2.12': - resolution: {integrity: sha512-QaOwhNpoBs4Af8xYG1NOoyOvbapcN7EpwYq53ERpMz2uU+yOeApqy4XeJ5xM7doCvkJKZqidwLMXZQeN/j/mUw==} + '@storybook/builder-vite@10.3.3': + resolution: {integrity: sha512-awspKCTZvXyeV3KabL0id62mFbxR5u/5yyGQultwCiSb2/yVgBfip2MAqLyS850pvTiB6QFVM9deOyd2/G/bEA==} peerDependencies: - storybook: ^10.2.12 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + storybook: ^10.3.3 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@storybook/cli@10.2.12': - resolution: {integrity: sha512-oBJta2vKOEPMMjeH7JE8s+5CbuETKOHwv3X23aojRBtUxRN1byIAdIaNE4UE3MEle5tJGCuktKd2sq0wDDMgFA==} + '@storybook/cli@10.3.3': + resolution: {integrity: sha512-+LdYw0XH8eN3rrYNIt2JEpfigNvs0HQ7+2z7aN3MSujt9pawgpnIeTyqFgjIiYqD5cVZ6vE+aCUMo3xvmptyuQ==} hasBin: true - '@storybook/codemod@10.2.12': - resolution: {integrity: sha512-88jBNggvUkidQz+EjTtL5HANKJRaReg/EqkaqLUtPDPbGnpXR5R5k2aflvfM3khSCgnVt+6emLYbEv6MX4dzWQ==} + '@storybook/codemod@10.3.3': + resolution: {integrity: sha512-MStm1AspBe8wyt29bvyHccwvpeJV0zqUrIB/7w+WkPpQfVL+RnI//aJmwdcML1W1nz02WQXRMCOBcp0LR50ZAA==} - '@storybook/csf-plugin@10.2.12': - resolution: {integrity: sha512-+6nv7oX21K+BRmMUCfeaFeS3UFgDu5/2M4YsLYzXnx/YmAP3yg0bb09falzvCKTCncHCJUWaO8GDvavj32anaA==} + '@storybook/csf-plugin@10.3.3': + resolution: {integrity: sha512-Utlh7zubm+4iOzBBfzLW4F4vD99UBtl2Do4edlzK2F7krQIcFvR2ontjAE8S1FQVLZAC3WHalCOS+Ch8zf3knA==} peerDependencies: esbuild: '*' - rollup: 4.49.0 - storybook: ^10.2.12 + rollup: '*' + storybook: ^10.3.3 vite: '*' webpack: '*' peerDependenciesMeta: @@ -5998,27 +6552,27 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@storybook/react-dom-shim@10.2.12': - resolution: {integrity: sha512-T4uHPAgtEbroRazubGDIByopvNw1WKAp1kOlNqKWR8LZPDaVyEr8X7J6zaJo1y+vE8j6fUXvk6jZVMwhi/Jeig==} + '@storybook/react-dom-shim@10.3.3': + resolution: {integrity: sha512-lkhuh4G3UTreU9M3Iz5Dt32c6U+l/4XuvqLtbe1sDHENZH6aPj7y0b5FwnfHyvuTvYRhtbo29xZrF5Bp9kCC0w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.2.12 + storybook: ^10.3.3 - '@storybook/react-vite@10.2.12': - resolution: {integrity: sha512-y5326n/fJBSUzBtSmVigu1W/NKAqvEQ23DEBNO3sK29TAxQyTM5oaYket9zHqPT3Eb3M1t9+TNCFUZSQ6yOTvQ==} + '@storybook/react-vite@10.3.3': + resolution: {integrity: sha512-qHdlBe1hjqFAGXa8JL7bWTLbP/gDqXbWDm+SYCB646NHh5yvVDkZLwigP5Y+UL7M2ASfqFtosnroUK9tcCM2dw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.2.12 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + storybook: ^10.3.3 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@storybook/react@10.2.12': - resolution: {integrity: sha512-7HV/qwEmrDK27FzVHt0/yr8Wu3UTVR9jez3p07M+l/+deIpYrlPiSWm/aoD60gN6kUKzxbeLJFJruS/OM9xnPA==} + '@storybook/react@10.3.3': + resolution: {integrity: sha512-cGG5TbR8Tdx9zwlpsWyBEfWrejm5iWdYF26EwIhwuKq9GFUTAVrQzo0Rs7Tqc3ZyVhRS/YfsRiWSEH+zmq2JiQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.2.12 + storybook: ^10.3.3 typescript: '>= 4.9.x' peerDependenciesMeta: typescript: @@ -6087,14 +6641,17 @@ packages: resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} engines: {node: ^20.17.0 || >=22.9.0} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - '@types/aws-lambda@8.10.160': - resolution: {integrity: sha512-uoO4QVQNWFPJMh26pXtmtrRfGshPUSpMZGUyUQY20FhfHEElEBOPKgVmFs1z+kbpyBsRs2JnoOPT7++Z4GA9pA==} + '@types/aws-lambda@8.10.161': + resolution: {integrity: sha512-rUYdp+MQwSFocxIOcSsYSF3YYYC/uUpMbCY/mbO21vGqfrEYvNSoPyKYDj6RhXXpPfS0KstW9RwG3qXh9sL7FQ==} '@types/babel__code-frame@7.27.0': resolution: {integrity: sha512-Dwlo+LrxDx/0SpfmJ/BKveHf7QXWvLBLc+x03l5sbzykj3oB9nHygCpSECF1a+s+QIxbghe+KHqC90vGtxLRAA==} @@ -6276,9 +6833,6 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} @@ -6291,17 +6845,14 @@ packages: '@types/micromatch@4.0.10': resolution: {integrity: sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ==} - '@types/mocha@10.0.10': - resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - '@types/morgan@1.9.10': resolution: {integrity: sha512-sS4A1zheMvsADRVfT0lYbJ4S9lmsey8Zo2F7cnbYjWHP67Q0AwMYuuzLlkIM2N8gAbb9cubhIVFwcIN2XyYCkA==} '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/multer@2.0.0': - resolution: {integrity: sha512-C3Z9v9Evij2yST3RSBktxP9STm6OdMc5uR1xF1SGr98uv8dUlAL2hqwrZ3GVB3uyMyiegnscEK6PGtYvNrjTjw==} + '@types/multer@2.1.0': + resolution: {integrity: sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA==} '@types/mustache@4.2.6': resolution: {integrity: sha512-t+8/QWTAhOFlrF1IVZqKnMRJi84EgkIK5Kh0p2JV4OLywUvCwJPFxbJAl7XAow7DVIHsF+xW9f1MVzg0L6Szjw==} @@ -6309,14 +6860,14 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@18.19.130': resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - '@types/node@25.3.0': - resolution: {integrity: sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==} + '@types/node@24.12.0': + resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} + + '@types/node@25.5.0': + resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -6327,8 +6878,8 @@ packages: '@types/prismjs@1.26.6': resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + '@types/qs@6.15.0': + resolution: {integrity: sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -6374,8 +6925,8 @@ packages: '@types/swagger-ui-express@4.1.8': resolution: {integrity: sha512-AhZV8/EIreHFmBV5wAs0gzJUNq9JbbSXgJLQubCC0jtIo6prnI9MIRRxnU4MZX9RB9yXxF1V4R7jtLl/Wcj31g==} - '@types/swagger-ui@5.21.1': - resolution: {integrity: sha512-DUmUH59eeOtvAqcWwBduH2ws0cc5i95KHsXCS4FsOfbUq/clW8TN+HqRBj7q5p9MSsSNK43RziIGItNbrAGLxg==} + '@types/swagger-ui@5.32.0': + resolution: {integrity: sha512-diMOqNQf6gkc3ghDIgjs/AfwbwZidja2e02+fJRIfNbbQ25W0EMGLe+f9/tHh/UFRfwYR2UXR3QSPGGkBu7uNg==} '@types/treeify@1.0.3': resolution: {integrity: sha512-hx0o7zWEUU4R2Amn+pjCBQQt23Khy/Dk56gQU5xi5jtPL1h83ACJCeFaB2M/+WO1AntvWrSoVnnCAfI1AQH4Cg==} @@ -6389,8 +6940,8 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/vscode@1.109.0': - resolution: {integrity: sha512-0Pf95rnwEIwDbmXGC08r0B4TQhAbsHQ5UyTIgVgoieDe4cOnf92usuR5dEczb6bTKEp7ziZH4TV1TRGPPCExtw==} + '@types/vscode@1.110.0': + resolution: {integrity: sha512-AGuxUEpU4F4mfuQjxPPaQVyuOMhs+VT/xRok1jiHVBubHK7lBRvCuOMZG0LKUwxncrPorJ5qq/uil3IdZBd5lA==} '@types/whatwg-mimetype@3.0.2': resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==} @@ -6413,101 +6964,111 @@ packages: '@types/yoga-layout@1.9.2': resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==} - '@typescript-eslint/eslint-plugin@8.56.1': - resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + '@typescript-eslint/eslint-plugin@8.57.0': + resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.56.1 + '@typescript-eslint/parser': ^8.57.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.56.1': - resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} + '@typescript-eslint/parser@8.57.0': + resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.56.1': - resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + '@typescript-eslint/project-service@8.57.0': + resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/rule-tester@8.56.1': - resolution: {integrity: sha512-EWuV5Vq1EFYJEOVcILyWPO35PjnT0c6tv99PCpD12PgfZae5/Jo+F17hGjsEs2Moe+Dy1J7KIr8y037cK8+/rQ==} + '@typescript-eslint/rule-tester@8.57.0': + resolution: {integrity: sha512-qs4OapXmAIj3so85/20lQG1WrBSSvDE/3b42Orl3lpZkaOlNXtbfKzL+9EPaY5wSEgdlhKEpympAMFHPG9i72Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - '@typescript-eslint/scope-manager@8.56.1': - resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + '@typescript-eslint/scope-manager@8.57.0': + resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.56.1': - resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + '@typescript-eslint/tsconfig-utils@8.57.0': + resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.56.1': - resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + '@typescript-eslint/type-utils@8.57.0': + resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.56.1': - resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + '@typescript-eslint/types@8.57.0': + resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.56.1': - resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + '@typescript-eslint/typescript-estree@8.57.0': + resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.56.1': - resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + '@typescript-eslint/utils@8.57.0': + resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.56.1': - resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + '@typescript-eslint/visitor-keys@8.57.0': + resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typespec/ts-http-runtime@0.3.3': - resolution: {integrity: sha512-91fp6CAAJSRtH5ja95T1FHSKa8aPW9/Zw6cta81jlZTUw/+Vq8jM/AfF/14h2b71wwR84JUTW/3Y8QPhDAawFA==} + '@typespec/ts-http-runtime@0.3.4': + resolution: {integrity: sha512-CI0NhTrz4EBaa0U+HaaUZrJhPoso8sG7ZFya8uQoBA57fjzrjRSv87ekCjLZOFExN+gXE/z0xuN2QfH4H2HrLQ==} engines: {node: '>=20.0.0'} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@vitejs/plugin-react@4.7.0': - resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} - engines: {node: ^14.18.0 || >=16.0.0} + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + + '@vitejs/plugin-react@5.2.0': + resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vitejs/plugin-react@5.1.4': - resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==} + '@vitejs/plugin-react@6.0.1': + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true - '@vitest/coverage-v8@4.0.18': - resolution: {integrity: sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==} + '@vitest/coverage-v8@4.1.0': + resolution: {integrity: sha512-nDWulKeik2bL2Va/Wl4x7DLuTKAXa906iRFooIRPR+huHkcvp9QDkPQ2RJdmjOFrqOqvNfoSQLF68deE3xC3CQ==} peerDependencies: - '@vitest/browser': 4.0.18 - vitest: 4.0.18 + '@vitest/browser': 4.1.0 + vitest: 4.1.0 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/eslint-plugin@1.6.9': - resolution: {integrity: sha512-9WfPx1OwJ19QLCSRLkqVO7//1WcWnK3fE/3fJhKMAmDe8+9G4rB47xCNIIeCq3FdEzkIoLTfDlwDlPBaUTMhow==} + '@vitest/eslint-plugin@1.6.12': + resolution: {integrity: sha512-4kI47BJNFE+EQ5bmPbHzBF+ibNzx2Fj0Jo9xhWsTPxMddlHwIWl6YAxagefh461hrwx/W0QwBZpxGS404kBXyg==} engines: {node: '>=18'} peerDependencies: eslint: '>=8.57.0' @@ -6522,14 +7083,14 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.0.18': - resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} + '@vitest/expect@4.1.0': + resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} - '@vitest/mocker@4.0.18': - resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} + '@vitest/mocker@4.1.0': + resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 peerDependenciesMeta: msw: optional: true @@ -6539,31 +7100,31 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/pretty-format@4.0.18': - resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} + '@vitest/pretty-format@4.1.0': + resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} - '@vitest/runner@4.0.18': - resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} + '@vitest/runner@4.1.0': + resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} - '@vitest/snapshot@4.0.18': - resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} + '@vitest/snapshot@4.1.0': + resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.0.18': - resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} + '@vitest/spy@4.1.0': + resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} - '@vitest/ui@4.0.18': - resolution: {integrity: sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==} + '@vitest/ui@4.1.0': + resolution: {integrity: sha512-sTSDtVM1GOevRGsCNhp1mBUHKo9Qlc55+HCreFT4fe99AHxl1QQNXSL3uj4Pkjh5yEuWZIx8E2tVC94nnBZECQ==} peerDependencies: - vitest: 4.0.18 + vitest: 4.1.0 '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vitest/utils@4.0.18': - resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} + '@vitest/utils@4.1.0': + resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} '@volar/kit@2.4.28': resolution: {integrity: sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg==} @@ -6588,8 +7149,8 @@ packages: '@vscode/emmet-helper@2.11.0': resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} - '@vscode/extension-telemetry@1.5.0': - resolution: {integrity: sha512-8aZ4Ne3PtDtDXfsNBPeTwMoWS4TpgAGeLUcUtxiRKJrlBSi1NCi9sM6EBwK21+WEfEO6JgKszvp4PTTcns1HCw==} + '@vscode/extension-telemetry@1.5.1': + resolution: {integrity: sha512-rnRRQIRCwRdbcQ0QV5ajKJRz8noEIoQA2hX9VjAlVAVB85+ClbaPNhljobFXgW31ue69FRO6KPE4XJ/lLgKt/Q==} engines: {vscode: ^1.75.0} '@vscode/l10n@0.0.18': @@ -6599,8 +7160,8 @@ packages: resolution: {integrity: sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==} engines: {node: '>=16'} - '@vscode/test-web@0.0.79': - resolution: {integrity: sha512-vPOW8M9VtRltUk5QjizicWQ+eWk6liSdqJhb0428RAl8UzePGXqaBWLc40pdC9MKTJUtmhnWDC/22YBYgR0jmw==} + '@vscode/test-web@0.0.80': + resolution: {integrity: sha512-QgsRPp8IuPcdbUdVtqQkFN/sGd+6cr6g0ENEVFOHwJbQqZtJSiZD5w0e6tgmoeq9nBjNqZCq87OO1GkwFHkPyw==} engines: {node: '>=20'} hasBin: true @@ -6657,11 +7218,11 @@ packages: engines: {node: '>= 20'} hasBin: true - '@vue/compiler-core@3.5.29': - resolution: {integrity: sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==} + '@vue/compiler-core@3.5.30': + resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==} - '@vue/compiler-dom@3.5.29': - resolution: {integrity: sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==} + '@vue/compiler-dom@3.5.30': + resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -6674,15 +7235,16 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.29': - resolution: {integrity: sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==} + '@vue/reactivity@3.5.30': + resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==} - '@vue/shared@3.5.29': - resolution: {integrity: sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==} + '@vue/shared@3.5.30': + resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==} '@xmldom/xmldom@0.8.11': resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} engines: {node: '>=10.0.0'} + deprecated: this version has critical issues, please update to the latest version '@yarnpkg/cli@4.12.0': resolution: {integrity: sha512-slQGf910BdALWuvKrJ68jtv3KIbZObvN0nbezL6AybpyITdzbAvKf98SzzYDRMzQYBwUXOtol2Nza3xWpeKCVg==} @@ -6690,8 +7252,8 @@ packages: peerDependencies: '@yarnpkg/core': ^4.5.0 - '@yarnpkg/core@4.5.0': - resolution: {integrity: sha512-jZnEYfP05k3KpBIWlNkPEuJ3E0QLnYTNALQOH+7x8LAQyzhnN9yuLZx8Ze80Y7mlU1Hnv5wUGtzzUFn1wyBAlQ==} + '@yarnpkg/core@4.6.0': + resolution: {integrity: sha512-yzJwS9dHKLY8y81BYEC0CEB+6ajWhjHkzBRzV39y7ANIdDiGC7sC32RSHWYGi/pxhbjPKeOhksj+gITUHUjS7A==} engines: {node: '>=18.12.0'} '@yarnpkg/extensions@2.0.6': @@ -6700,12 +7262,12 @@ packages: peerDependencies: '@yarnpkg/core': ^4.4.2 - '@yarnpkg/fslib@3.1.4': - resolution: {integrity: sha512-Yyguw5RM+xI1Bv0RFbs1ZF5HwU+9/He4YT7yeT722yAlLfkz9IzZHO6a5yStEshxiliPn9Fdj4H54a785xpK/g==} + '@yarnpkg/fslib@3.1.5': + resolution: {integrity: sha512-hXaPIWl5GZA+rXcx+yaKWUuePJruZuD+3A5A2X6paEBfFsyCD7oEp88lSMj1ym1ehBWUmhNH/YGOp+SrbmSBPg==} engines: {node: '>=18.12.0'} - '@yarnpkg/libui@3.0.2': - resolution: {integrity: sha512-IhFCZdemMFAa5WiXqSdfLLPqBDGX3QmbgUcsRuCqLnr0unPr5JjVmFSkFXlVig3yP9in7BjG1a0I0QO7ZyYAaQ==} + '@yarnpkg/libui@3.1.0': + resolution: {integrity: sha512-3R5juEPlnokseN+m19vh8pGmLOdWiU+q5oRLSJDGzpezKiGKiF7R2cZpOJi3A3tal/EFezmPwuHu00YWzfU4Bg==} engines: {node: '>=18.12.0'} peerDependencies: ink: ^3.0.8 @@ -6753,13 +7315,13 @@ packages: '@yarnpkg/cli': ^4.9.2 '@yarnpkg/core': ^4.4.2 - '@yarnpkg/plugin-essentials@4.4.4': - resolution: {integrity: sha512-fKI4eRZ1QHqlaaL/LYypRrw8+wRS77vholyGDAAd9eXnMKAHrZfY94Rss9XAxAAN3++S91c5lhu54JhwPF+KKQ==} + '@yarnpkg/plugin-essentials@4.4.5': + resolution: {integrity: sha512-vRQ7UoMK0okr+IVXkLu6JrpANYvmsZ8ljGQhNDI6XhOIU0pSPWD3I0JRh1449SMdQQtn8q8n0uwrzzUcvmQdFA==} engines: {node: '>=18.12.0'} peerDependencies: - '@yarnpkg/cli': ^4.10.0 - '@yarnpkg/core': ^4.4.4 - '@yarnpkg/plugin-git': ^3.1.3 + '@yarnpkg/cli': ^4.13.0 + '@yarnpkg/core': ^4.6.0 + '@yarnpkg/plugin-git': ^3.1.4 '@yarnpkg/plugin-exec@3.0.2': resolution: {integrity: sha512-lvBq0tc/k4CyvxFEhohiw/5rUi0kRWuFnAUnoXn6c0GJaldfK8gCyYhKfxwFZmcDOfM8h2JrDtzZdWqVk5D7lw==} @@ -6799,13 +7361,13 @@ packages: '@yarnpkg/cli': ^4.9.2 '@yarnpkg/core': ^4.4.2 - '@yarnpkg/plugin-interactive-tools@4.0.3': - resolution: {integrity: sha512-+uk7Jqnje/iDZH/zWZqoDLATGjciM5vH82M/RtZWATc3/AOmH1tIvM70lwgp4Be5K5FjaRjF+3LkuEdAR+IziQ==} + '@yarnpkg/plugin-interactive-tools@4.1.0': + resolution: {integrity: sha512-C/gIsjj+q7ekx5KyEBSQyydTGWggVenaw2gIpbkGKi56Gd9p3HfNdH5/Gp8aa93QZA+DEzy1t25ssxgX4+U6bg==} engines: {node: '>=18.12.0'} peerDependencies: - '@yarnpkg/cli': ^4.9.2 - '@yarnpkg/core': ^4.4.2 - '@yarnpkg/plugin-essentials': ^4.4.1 + '@yarnpkg/cli': ^4.13.0 + '@yarnpkg/core': ^4.6.0 + '@yarnpkg/plugin-essentials': ^4.4.5 '@yarnpkg/plugin-jsr@1.1.1': resolution: {integrity: sha512-aukUcLl6FiOg04GXagVfT7wtkl7/qQlRQmECHyk+r5mt+gBWQX8H8lE4Nxmy0t3J4DX/aW5BTFRifTlQkF8nNQ==} @@ -6826,20 +7388,20 @@ packages: '@yarnpkg/cli': ^4.10.0 '@yarnpkg/core': ^4.4.4 - '@yarnpkg/plugin-npm-cli@4.4.0': - resolution: {integrity: sha512-ZgQ8GPwWVXCdPCLzUra+KgXgi1+DJgEE+vL4r5wWTvSGVY84F6+jSWoDCiIZOYJkGW/dZ3D2dI5Ntm46LsoKTQ==} + '@yarnpkg/plugin-npm-cli@4.4.1': + resolution: {integrity: sha512-GyrHRYqq0y2MIxBzxuHv1Clus6GgssBfb93WZZClWRLJeFc7v8iaIFczFIQQSggc4/ltvNCXF98whSLRd7cKLA==} engines: {node: '>=18.12.0'} peerDependencies: - '@yarnpkg/cli': ^4.12.0 - '@yarnpkg/core': ^4.5.0 - '@yarnpkg/plugin-npm': ^3.4.0 + '@yarnpkg/cli': ^4.13.0 + '@yarnpkg/core': ^4.6.0 + '@yarnpkg/plugin-npm': ^3.4.1 '@yarnpkg/plugin-pack': ^4.0.4 - '@yarnpkg/plugin-npm@3.4.0': - resolution: {integrity: sha512-fvv/7ZRy7XGV9yuTsmB+bJ27ur7xJqKguVuwZAQKDGvesKM5IFB1kfkP8KwwUp2zambVajkmFAJXGmEikHVcWg==} + '@yarnpkg/plugin-npm@3.4.1': + resolution: {integrity: sha512-zs0d0e7u7Lltxe5IBiH1wgnufM1Vt3FZ176ECb3TGFXzwRURcaCQgFuLxkH6rpFdMxWmy/AzwNWQYphb1opDbQ==} engines: {node: '>=18.12.0'} peerDependencies: - '@yarnpkg/core': ^4.5.0 + '@yarnpkg/core': ^4.6.0 '@yarnpkg/plugin-pack': ^4.0.4 '@yarnpkg/plugin-pack@4.0.4': @@ -6893,13 +7455,13 @@ packages: '@yarnpkg/core': ^4.4.3 '@yarnpkg/plugin-git': ^3.1.3 - '@yarnpkg/plugin-workspace-tools@4.1.6': - resolution: {integrity: sha512-sf1dBtjyLEMgRpcpn2DhC4AQ5xjqQe6hyuUL+n4WdosRI2SAvshnmKo3+wbRFDDcklMya25ubDGjCt11W1LidQ==} + '@yarnpkg/plugin-workspace-tools@4.1.7': + resolution: {integrity: sha512-uVf0+73H6BPmSOVdB/9ueBiyKQy4Li1ztVLIrdGc9ogQW+KOOjQDiWZKNRosKwL/70hKxAt534K6EqQtjSpuqA==} engines: {node: '>=18.12.0'} peerDependencies: - '@yarnpkg/cli': ^4.9.3 - '@yarnpkg/core': ^4.4.3 - '@yarnpkg/plugin-git': ^3.1.3 + '@yarnpkg/cli': ^4.13.0 + '@yarnpkg/core': ^4.6.0 + '@yarnpkg/plugin-git': ^3.1.4 '@yarnpkg/pnp@4.1.3': resolution: {integrity: sha512-PsRujup+6DpgXexQe0Wh4h+syQhdruhounJjqbBMXV3meOzqr7k0Nj9+jwQ4t16EZJrhVxH7vRvjZ+VitH5aWQ==} @@ -7104,10 +7666,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} - array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} @@ -7118,31 +7676,9 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - asn1.js@4.10.1: - resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} - - assert@2.1.0: - resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -7151,8 +7687,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.11: - resolution: {integrity: sha512-Qya9fkoofMjCBNVdWINMjB5KZvkYfaO9/anwkWnjxibpWUxo5iHl2sOdP7/uAqaRuUYuoo8rDwnbaaKVFxoUvw==} + ast-v8-to-istanbul@1.0.0: + resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -7172,15 +7708,11 @@ packages: peerDependencies: astro: '>=2 <6' - astro@5.18.0: - resolution: {integrity: sha512-CHiohwJIS4L0G6/IzE1Fx3dgWqXBCXus/od0eGUfxrZJD2um2pE7ehclMmgL/fXqbU7NfE1Ze2pq34h2QaA6iQ==} - engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + astro@6.0.4: + resolution: {integrity: sha512-1piLJCPTL/x7AMO2cjVFSTFyRqKuC3W8sSEySCt1aJio+p/wGs5H3K+Xr/rE9ftKtknLUtjxCqCE7/0NsXfGpQ==} + engines: {node: ^20.19.1 || >=22.12.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -7239,15 +7771,15 @@ packages: bare-buffer: optional: true - bare-os@3.7.0: - resolution: {integrity: sha512-64Rcwj8qlnTZU8Ps6JJEdSmxBEUGgI7g8l+lMtsJLl4IsfTcHMTfJ188u2iGV6P6YPRZrtv72B2kjn+hp+Yv3g==} + bare-os@3.8.0: + resolution: {integrity: sha512-Dc9/SlwfxkXIGYhvMQNUtKaXCaGkZYGcd1vuNUUADVqzu4/vQfvnMkYYOUnt2VwQ2AqKr/8qAVFRtwETljgeFg==} engines: {bare: '>=1.14.0'} bare-path@3.0.0: resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - bare-stream@2.8.0: - resolution: {integrity: sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==} + bare-stream@2.8.1: + resolution: {integrity: sha512-bSeR8RfvbRwDpD7HWZvn8M3uYNDrk7m9DQjYOFkENZlXW8Ju/MPaqUPQq5LqJ3kyjEm07siTaAQ7wBKCU59oHg==} peerDependencies: bare-buffer: '*' bare-events: '*' @@ -7260,14 +7792,11 @@ packages: bare-url@2.3.2: resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==} - base-64@1.0.0: - resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.0: - resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + baseline-browser-mapping@2.10.8: + resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -7299,18 +7828,12 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bn.js@4.12.3: - resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} - - bn.js@5.2.3: - resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} - body-parser@2.2.2: resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} - bole@5.0.27: - resolution: {integrity: sha512-Hv/NnQSWwgo0yZ1tSi8B8fd2qk9LFRNqtpms7P6dZI67A7HTCy7MP1fwfmZgCbMNURf9+tdHHbbsORp/r0NjJA==} + bole@5.0.28: + resolution: {integrity: sha512-l+yybyZLV7zTD6EuGxoXsilpER1ctMCpdOqjSYNigJJma39ha85fzCtYccPx06oR1u7uCQLOcUAFFzvfXVBmuQ==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -7321,10 +7844,6 @@ packages: boundary@2.0.0: resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==} - boxen@8.0.1: - resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} - engines: {node: '>=18'} - brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -7339,38 +7858,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browser-resolve@2.0.0: - resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} - - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - - browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - - browserify-rsa@4.1.1: - resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} - engines: {node: '>= 0.10'} - - browserify-sign@4.2.5: - resolution: {integrity: sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==} - engines: {node: '>= 0.10'} - browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - browserslist@4.28.1: resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -7385,9 +7875,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -7398,9 +7885,6 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} - builtin-status-codes@3.0.0: - resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - builtins@5.1.0: resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} @@ -7470,10 +7954,6 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - camelcase@8.0.0: - resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} - engines: {node: '>=16'} - can-link@2.0.0: resolution: {integrity: sha512-2W2yAdkQQrrL0WM6BrGqkrLkWlVon8riZch0EBNklid2CZsOzZnqR5HE7W3Q3BrMWUop+9I2dpjyZqhSOYh6Yg==} engines: {node: '>=10'} @@ -7482,8 +7962,8 @@ packages: resolution: {integrity: sha512-eOgiEWqjppB+3DN/5E82EQ8dTINus8d9GXMCbEsUnp2hcUIcXmBvzWmD3tXMk3CuBK0v+ddK9qw0EAF+JVRMjQ==} engines: {node: '>=10.13'} - caniuse-lite@1.0.30001774: - resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} + caniuse-lite@1.0.30001778: + resolution: {integrity: sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==} catch-unknown@2.0.0: resolution: {integrity: sha512-4ELowf+Fp6Qwv77ZvRDto9oJMsOalEk8IYvS5KsmIhRZQWbfArlIhIOONJtmCzOeeqpip6JzYqAYaNR9sIyLVQ==} @@ -7557,8 +8037,8 @@ packages: peerDependencies: chevrotain: ^11.0.0 - chevrotain@11.1.1: - resolution: {integrity: sha512-f0yv5CPKaFxfsPTBzX7vGuim4oIC1/gcS7LUGdBSwl2dU6+FON6LVUksdOo1qJjoUvXNn45urgh8C+0a24pACQ==} + chevrotain@11.1.2: + resolution: {integrity: sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==} chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} @@ -7571,10 +8051,6 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -7590,10 +8066,6 @@ packages: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} - cipher-base@1.0.7: - resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} - engines: {node: '>= 0.10'} - clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -7610,10 +8082,6 @@ packages: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - cli-columns@4.0.0: resolution: {integrity: sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ==} engines: {node: '>= 10'} @@ -7729,10 +8197,6 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} - commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} - engines: {node: '>=18'} - commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} @@ -7749,12 +8213,13 @@ packages: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - comment-json@4.5.1: - resolution: {integrity: sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==} + comment-json@4.6.2: + resolution: {integrity: sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==} engines: {node: '>= 6'} - common-ancestor-path@1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + common-ancestor-path@2.0.0: + resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} + engines: {node: '>= 18'} commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -7783,12 +8248,6 @@ packages: config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - console-browserify@1.2.0: - resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} - - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - content-disposition@1.0.1: resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} engines: {node: '>=18'} @@ -7835,29 +8294,8 @@ packages: cose-base@2.2.0: resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - create-storybook@10.2.12: - resolution: {integrity: sha512-4tcEZVvn+MuytQa1ABwqAoKnViqYA2xNzmJE9YthzpLoeu3cyQWaRWtAEiluO6s/6efwdg1VcnAqfqUn59YuxA==} + create-storybook@10.3.3: + resolution: {integrity: sha512-vwOQQaayn0Tyl9wvA0s958dhehK11kRvmDavkRM7zQslnlv1X0D/OBV1J3tjr7KGSJ/0WRZGeekqXWmRFIFCYQ==} hasBin: true cross-env@10.1.0: @@ -7872,10 +8310,6 @@ packages: crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} - crypto-browserify@3.12.1: - resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} - engines: {node: '>= 0.10'} - crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -7931,8 +8365,8 @@ packages: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} css-what@6.2.2: @@ -8111,8 +8545,8 @@ packages: resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} engines: {node: '>=12'} - dagre-d3-es@7.0.13: - resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} @@ -8125,23 +8559,11 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -8175,10 +8597,6 @@ packages: supports-color: optional: true - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} @@ -8274,9 +8692,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} @@ -8288,12 +8703,8 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - deterministic-object-hash@2.0.2: - resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} - engines: {node: '>=18'} - - devalue@5.6.3: - resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==} + devalue@5.6.4: + resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -8302,17 +8713,10 @@ packages: resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - diff@8.0.3: resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} engines: {node: '>=0.3.1'} - diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -8328,10 +8732,6 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -8345,10 +8745,6 @@ packages: dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - domain-browser@4.22.0: - resolution: {integrity: sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==} - engines: {node: '>=10'} - domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -8356,11 +8752,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.2.7: - resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} - - dompurify@3.3.1: - resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} @@ -8401,14 +8794,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@3.19.19: - resolution: {integrity: sha512-Yc8U/SVXo2dHnaP7zNBlAo83h/nzSJpi7vph6Hzyl4ulgMBIgPmz3UzOjb9sBgpFE00gC0iETR244sfXDNLHRg==} - - electron-to-chromium@1.5.302: - resolution: {integrity: sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==} - - elliptic@6.6.1: - resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + electron-to-chromium@1.5.313: + resolution: {integrity: sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==} embla-carousel-autoplay@8.6.0: resolution: {integrity: sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==} @@ -8490,10 +8877,6 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-abstract@1.24.1: - resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} - engines: {node: '>= 0.4'} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -8505,8 +8888,8 @@ packages: es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} es-module-shims@2.8.0: resolution: {integrity: sha512-7eBj0nIBTMjg8WspPfHOXVxwvDPeYjTMH7PipzrbecfLS4SFwRvWeakZNsAx0y9yF3TydxrG32tj3y+GKzlpYg==} @@ -8519,16 +8902,8 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - - es-toolkit@1.44.0: - resolution: {integrity: sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==} + es-toolkit@1.45.1: + resolution: {integrity: sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==} esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -8542,13 +8917,8 @@ packages: peerDependencies: esbuild: '>=0.14.0 <=0.27.x' - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} hasBin: true @@ -8579,40 +8949,6 @@ packages: resolution: {integrity: sha512-0X5vEQeNniQRbGm+ec9Ow6LWj4RqZEcjPSfZ+t8qLPWqwyaBa67GrNetTxd0aYKoHrpbZeoRRlvA2gz9HujiEg==} engines: {node: ^10.12.0 || >=12.0.0} - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-module-utils@2.12.1: - resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint-plugin-react-hooks@7.0.1: resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} engines: {node: '>=18'} @@ -8625,8 +8961,8 @@ packages: peerDependencies: eslint: '>=9.38.0' - eslint-scope@9.1.1: - resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: @@ -8637,8 +8973,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.0.2: - resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} + eslint@10.0.3: + resolution: {integrity: sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -8647,8 +8983,8 @@ packages: jiti: optional: true - espree@11.1.1: - resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} esprima@4.0.1: @@ -8717,9 +9053,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -8756,10 +9089,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fast-check@3.23.2: - resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} - engines: {node: '>=8.0.0'} - fast-content-type-parse@3.0.0: resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} @@ -8798,11 +9127,11 @@ packages: fast-wrap-ansi@0.2.0: resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} - fast-xml-builder@1.0.0: - resolution: {integrity: sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==} + fast-xml-builder@1.1.3: + resolution: {integrity: sha512-1o60KoFw2+LWKQu3IdcfcFlGTW4dpqEWmjhYec6H82AYZU2TVBXep6tMl8Z1Y+wM+ZrzCwe3BZ9Vyd9N2rIvmg==} - fast-xml-parser@5.4.1: - resolution: {integrity: sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==} + fast-xml-parser@5.5.5: + resolution: {integrity: sha512-NLY+V5NNbdmiEszx9n14mZBseJTC50bRq1VHsaxOmR72JDuZt+5J1Co+dC/4JPnyq+WrIHNM69r0sqf7BMb3Mg==} hasBin: true fastq@1.20.1: @@ -8879,26 +9208,25 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true + flatted@3.4.0: + resolution: {integrity: sha512-kC6Bb+ooptOIvWj5B63EQWkF0FEnNjV2ZNkLMLZRDDduIiWeFF4iKnslwhiWxjAdbg4NzTNo6h0qLuvFrcx+Sw==} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.1: + resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==} flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} - flow-parser@0.302.0: - resolution: {integrity: sha512-Y7AMBG/MTixQ/sTSCSGtXrYtqocpWbu6YbsScv0icWSmllxz8hIYaJUMK6WopAW1x/rMD0dhihcsWnXJlpYphg==} + flow-parser@0.305.0: + resolution: {integrity: sha512-4Ws+q7nNQZRIpVGGlNTqkQCs3E3aXLnWWWvxo4WGRZTCXzZAq3ucZeckZ8h+c4hM3z+vtpJkzFyGGEMUqun1Zw==} engines: {node: '>=0.4.0'} fontace@0.4.1: resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} - fontkitten@1.0.2: - resolution: {integrity: sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==} + fontkitten@1.0.3: + resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} engines: {node: '>=20'} for-each@0.3.5: @@ -8932,14 +9260,10 @@ packages: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} - fs-extra@11.3.3: - resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} + fs-extra@11.3.4: + resolution: {integrity: sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==} engines: {node: '>=14.14'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs-minipass@3.0.3: resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -8960,17 +9284,9 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - generator-function@2.0.1: - resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} - engines: {node: '>= 0.4'} - gensequence@8.0.8: resolution: {integrity: sha512-omMVniXEXpdx/vKxGnPRoO2394Otlze28TyxECbFVyoSpZ9H3EO7lemjcB12OpQJzRW4e5tt/dL1rOxry6aMHg==} engines: {node: '>=20'} @@ -9014,10 +9330,6 @@ packages: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - get-tsconfig@4.13.6: resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} @@ -9073,10 +9385,6 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - globalyzer@0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} @@ -9128,14 +9436,14 @@ packages: resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} hasBin: true - h3@1.15.5: - resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==} + h3@1.15.6: + resolution: {integrity: sha512-oi15ESLW5LRthZ+qPCi5GNasY/gvynSKUQxgiovrY63bPAtG59wtM+LSrlcwvOHAXzGrXVLnI97brbkdPF9WoQ==} hachure-fill@0.5.2: resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - happy-dom@20.7.0: - resolution: {integrity: sha512-hR/uLYQdngTyEfxnOoa+e6KTcfBFyc1hgFj/Cc144A5JJUuHFYqIEBDcD4FeGqUeKLRZqJ9eN9u7/GDjYEgS1g==} + happy-dom@20.8.9: + resolution: {integrity: sha512-Tz23LR9T9jOGVZm2x1EPdXqwA37G/owYMxRwU0E4miurAtFsPMQ1d2Jc2okUaSjZqAFz2oEn3FLXC5a0a+siyA==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -9153,10 +9461,6 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -9165,17 +9469,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hash-base@3.0.5: - resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} - engines: {node: '>= 0.10'} - - hash-base@3.1.2: - resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} - engines: {node: '>= 0.8'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -9260,9 +9553,6 @@ packages: resolution: {integrity: sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==} engines: {node: '>=12.0.0'} - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} @@ -9338,9 +9628,6 @@ packages: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} - https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -9512,10 +9799,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} @@ -9540,10 +9823,6 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - is-date-object@1.1.0: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} @@ -9572,18 +9851,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.1.2: - resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} - engines: {node: '>= 0.4'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -9612,14 +9883,6 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} - is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -9697,14 +9960,6 @@ packages: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} @@ -9717,10 +9972,6 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - is-weakset@2.0.4: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} @@ -9758,10 +10009,6 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - isomorphic-timers-promises@1.0.1: - resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} - engines: {node: '>=10'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -9844,12 +10091,8 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-with-bigint@3.5.3: - resolution: {integrity: sha512-QObKu6nxy7NsxqR0VK4rkXnsNr5L9ElJaGEg+ucJ6J7/suoKZ0n+p76cu9aCqowytxEbwYNzvrMerfMkXneF5A==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json-with-bigint@3.5.7: + resolution: {integrity: sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==} json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -9886,8 +10129,8 @@ packages: jws@4.0.1: resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} - katex@0.16.33: - resolution: {integrity: sha512-q3N5u+1sY9Bu7T4nlXoiRBXWfwSefNGoKeOwekV+gw0cAXQlz2Ww6BLcmBxVDeXBMUDQv6fK5bcNaJLxob3ZQA==} + katex@0.16.38: + resolution: {integrity: sha512-cjHooZUmIAUmDsHBN+1n8LaZdpmbj03LtYeYPyuYB7OuloiaeaV6N4LcfjcnHVzGWjVQmKrxxTrpDcmSzEZQwQ==} hasBin: true keyborg@2.6.0: @@ -9972,6 +10215,80 @@ packages: lie@3.3.0: resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10047,10 +10364,6 @@ packages: lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - log-symbols@6.0.0: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} @@ -10076,8 +10389,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.6: - resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} + lru-cache@11.2.7: + resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -10160,9 +10473,6 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} @@ -10220,8 +10530,8 @@ packages: mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -10261,8 +10571,8 @@ packages: playwright: optional: true - mermaid@11.12.3: - resolution: {integrity: sha512-wN5ZSgJQIC+CHJut9xaKWsknLxaFBwCPwPkGTSUYrTiHORWvpT8RxGk849HPnpUAQ+/9BPRqYb80jTpearrHzQ==} + mermaid@11.13.0: + resolution: {integrity: sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==} micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -10376,10 +10686,6 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -10429,15 +10735,9 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@10.2.1: - resolution: {integrity: sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==} - engines: {node: 20 || >=22} + minimatch@10.2.3: + resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} + engines: {node: 18 || 20 || >=22} minimatch@10.2.4: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} @@ -10450,14 +10750,6 @@ packages: resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.8: - resolution: {integrity: sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} @@ -10497,18 +10789,10 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - minizlib@3.1.0: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} @@ -10516,22 +10800,8 @@ packages: mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - - mocha@11.7.5: - resolution: {integrity: sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true + mlly@1.8.1: + resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} monaco-editor-core@0.55.1: resolution: {integrity: sha512-UTk7U9VkSFy2qruSYC70+vHHo5DffN164QGkDn4vTaaO40a1UMSNHVqS2MF6Z+s0LWOeAzez/Kp85oAPZG2d0g==} @@ -10556,8 +10826,8 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - multer@2.0.2: - resolution: {integrity: sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==} + multer@2.1.1: + resolution: {integrity: sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==} engines: {node: '>= 10.16.0'} mustache@4.2.0: @@ -10604,15 +10874,15 @@ packages: nlcst-to-string@4.0.0: resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} - node-abi@3.87.0: - resolution: {integrity: sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==} + node-abi@3.88.0: + resolution: {integrity: sha512-At6b4UqIEVudaqPsXjmUO1r/N5BUr4yhDGs5PkBE8/oG5+TfLPhFechiskFsnT6Ql0VfUXbalUUCbfXxtj7K+w==} engines: {node: '>=10'} node-addon-api@4.3.0: resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} - node-addon-api@8.5.0: - resolution: {integrity: sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==} + node-addon-api@8.6.0: + resolution: {integrity: sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==} engines: {node: ^18 || ^20 || >= 21} node-dir@0.1.17: @@ -10639,17 +10909,13 @@ packages: node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} node-sarif-builder@3.4.0: resolution: {integrity: sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==} engines: {node: '>=20'} - node-stdlib-browser@1.3.1: - resolution: {integrity: sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==} - engines: {node: '>=10'} - node-watch@0.7.3: resolution: {integrity: sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==} engines: {node: '>=6'} @@ -10711,10 +10977,6 @@ packages: resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} engines: {node: ^20.17.0 || >=22.9.0} - npm-package-arg@12.0.2: - resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} - engines: {node: ^18.17.0 || >=20.5.0} - npm-package-arg@13.0.2: resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} engines: {node: ^20.17.0 || >=22.9.0} @@ -10773,18 +11035,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} @@ -10850,13 +11100,6 @@ packages: resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} engines: {node: '>=20'} - os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -10885,10 +11128,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@6.2.0: - resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} - engines: {node: '>=18'} - p-limit@7.3.0: resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} engines: {node: '>=20'} @@ -10929,9 +11168,9 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} - p-queue@8.1.1: - resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} - engines: {node: '>=18'} + p-queue@9.1.0: + resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==} + engines: {node: '>=20'} p-reflect@2.1.0: resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} @@ -10941,9 +11180,9 @@ packages: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} - p-timeout@6.1.4: - resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} - engines: {node: '>=14.16'} + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} @@ -10955,8 +11194,8 @@ packages: package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} - pacote@21.4.0: - resolution: {integrity: sha512-DR7mn7HUOomAX1BORnpYy678qVIidbvOojkBscqy27dRKN+s/hLeQT1MeYYrx1Cxh62jyKjiWiDV7RTTqB+ZEQ==} + pacote@21.5.0: + resolution: {integrity: sha512-VtZ0SB8mb5Tzw3dXDfVAIjhyVKUHZkS/ZH9/5mpKenwC9sFOXNI0JI7kEF7IMkwOnsWMFrvAZHzx1T5fmrp9FQ==} engines: {node: ^20.17.0 || >=22.9.0} hasBin: true @@ -10978,10 +11217,6 @@ packages: resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} engines: {node: '>=8'} - parse-asn1@5.1.9: - resolution: {integrity: sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==} - engines: {node: '>= 0.10'} - parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -11055,6 +11290,10 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-expression-matcher@1.1.3: + resolution: {integrity: sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==} + engines: {node: '>=14.0.0'} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -11107,10 +11346,6 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} - pbkdf2@3.1.5: - resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} - engines: {node: '>= 0.10'} - pct-encode@1.0.3: resolution: {integrity: sha512-+ojEvSHApoLWF2YYxwnOM4N9DPn5e5fG+j0YJ9drKNaYtrZYOq5M9ESOaBYqOHCXOAALODJJ4wkqHAXEuLpwMw==} @@ -11150,10 +11385,6 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -11201,8 +11432,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} postject@1.0.0-alpha.6: @@ -11327,14 +11558,11 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - pump@2.0.1: resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} pumpify@1.5.1: resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} @@ -11343,16 +11571,10 @@ packages: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - qs@6.15.0: resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} @@ -11360,10 +11582,6 @@ packages: quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - querystring-es3@0.2.1: - resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} - engines: {node: '>=0.4.x'} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -11383,12 +11601,6 @@ packages: radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -11397,8 +11609,8 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} - rc-config-loader@4.1.3: - resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} + rc-config-loader@4.1.4: + resolution: {integrity: sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==} rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} @@ -11412,8 +11624,8 @@ packages: peerDependencies: typescript: '>= 4.3.x' - react-docgen@8.0.2: - resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} + react-docgen@8.0.3: + resolution: {integrity: sha512-aEZ9qP+/M+58x2qgfSFEWH1BxLyHe5+qkLNJOZQb5iGS017jpbRnoKhNRrXPeA6RfBrZO5wZrT9DMC1UqE1f1w==} engines: {node: ^20.9.0 || >=22} react-dom@19.2.4: @@ -11447,10 +11659,6 @@ packages: peerDependencies: react: ^17.0.2 - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} - engines: {node: '>=0.10.0'} - react-refresh@0.18.0: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} @@ -11536,10 +11744,6 @@ packages: resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} engines: {node: '>=6'} - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -11616,8 +11820,8 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - rename-overwrite@6.0.3: - resolution: {integrity: sha512-Daqe51STnrCUq/t4dbzCtfNBLElrqVpCtuWK0MuPrzUi6K/13E98y3E8/kzuMZt6IEmghMnF41J0AidrFqjZUA==} + rename-overwrite@6.0.6: + resolution: {integrity: sha512-bSbsw/VyMyDez6NJKxqURBCLRCm98uezWBi03UZCeEFccCNIthC6Jk5JazMjexOTdrYd4q/jIxTIwGtgk1k1gA==} engines: {node: '>=18'} request-light@0.5.8: @@ -11711,28 +11915,29 @@ packages: engines: {node: 20 || >=22} hasBin: true - ripemd160@2.0.3: - resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} - engines: {node: '>= 0.8'} - robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rolldown@1.0.0-rc.10: + resolution: {integrity: sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-visualizer@6.0.4: resolution: {integrity: sha512-q8Q7J/6YofkmaGW1sH/fPRAz37x/+pd7VBuaUU7lwvOS/YikuiiEU9jeb9PH8XHiq50XFrUsBbOxeAMYQ7KZkg==} engines: {node: '>=18'} hasBin: true peerDependencies: rolldown: 1.x || ^1.0.0-beta - rollup: 4.49.0 + rollup: 2.x || 3.x || 4.x peerDependenciesMeta: rolldown: optional: true rollup: optional: true - rollup@4.49.0: - resolution: {integrity: sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA==} + rollup@4.60.0: + resolution: {integrity: sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -11780,10 +11985,6 @@ packages: s.color@0.0.15: resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -11798,10 +11999,6 @@ packages: resolution: {integrity: sha512-GI3k4zl4aLC3lxZNEEXAxxcXE6E3TfOsJ5xxJPhcAv9MWwnH2O9I0HrDmZFsVnu/C8wzRYSsTHdoVRmL0VicDw==} engines: {node: '>=12'} - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -11815,8 +12012,8 @@ packages: sass-formatter@0.7.9: resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} - sax@1.4.4: - resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + sax@1.5.0: + resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} engines: {node: '>=11.0.0'} saxes@6.0.0: @@ -11863,9 +12060,6 @@ packages: resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} engines: {node: '>= 18'} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@2.2.1: resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} @@ -11878,10 +12072,6 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -11895,11 +12085,6 @@ packages: resolution: {integrity: sha512-JfVoxf4FxQI5qpsPbkHhZo+n6N9YMJobyl4oGEUBb/31oQYlgTjkXQD8PBiafS2UbWoxrTO0Z5PJUBXEPAG1Zw==} engines: {node: '>=16.0.0'} - sha.js@2.4.12: - resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} - engines: {node: '>= 0.10'} - hasBin: true - shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -11923,6 +12108,10 @@ packages: shiki@3.23.0: resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} + shiki@4.0.2: + resolution: {integrity: sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==} + engines: {node: '>=20'} + shlex@2.1.2: resolution: {integrity: sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w==} @@ -11966,8 +12155,8 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-git@3.32.2: - resolution: {integrity: sha512-n/jhNmvYh8dwyfR6idSfpXrFazuyd57jwNMzgjGnKZV/1lTh0HKvPq20v4AQ62rP+l19bWjjXPTCdGHMt0AdrQ==} + simple-git@3.33.0: + resolution: {integrity: sha512-D4V/tGC2sjsoNhoMybKyGoE+v8A60hRawKQ1iFRA1zwuDgGZCBJ4ByOzZ5J8joBbi4Oam0qiPH+GhzmSBwbJng==} sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} @@ -11976,9 +12165,9 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - sitemap@8.0.2: - resolution: {integrity: sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==} - engines: {node: '>=14.0.0', npm: '>=6.0.0'} + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} hasBin: true slash@3.0.0: @@ -12096,6 +12285,9 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + stdin-discarder@0.2.2: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} @@ -12108,8 +12300,8 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - storybook@10.2.12: - resolution: {integrity: sha512-eT4266OqLdRE3J/pxl2dk36Rnj9vv17Y6rNMpzxohOMjRVONyKkozUd6gaZ2C4WUcwYdIw6VE+ft4LwrJXt/4Q==} + storybook@10.3.3: + resolution: {integrity: sha512-tMoRAts9EVqf+mEMPLC6z1DPyHbcPe+CV1MhLN55IKsl0HxNjvVGK44rVPSePbltPE6vIsn4bdRj6CCUt8SJwQ==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -12117,12 +12309,6 @@ packages: prettier: optional: true - stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - - stream-http@3.2.0: - resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} - stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -12160,18 +12346,6 @@ packages: resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} engines: {node: '>=20'} - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -12185,8 +12359,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} strip-bom-string@1.0.0: @@ -12232,8 +12406,8 @@ packages: resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} - strnum@2.1.2: - resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} + strnum@2.2.0: + resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==} structured-source@4.0.0: resolution: {integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==} @@ -12270,13 +12444,13 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svgo@4.0.0: - resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} + svgo@4.0.1: + resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} engines: {node: '>=16'} hasBin: true - swagger-ui-dist@5.31.2: - resolution: {integrity: sha512-uIoesCjDcxnAKj/C/HG5pjHZMQs2K/qmqpUlwLxxaVryGKlgm8Ri+VOza5xywAqf//pgg/hW16RYa6dDuTCOSg==} + swagger-ui-dist@5.32.0: + resolution: {integrity: sha512-nKZB0OuDvacB0s/lC2gbge+RigYvGRGpLLMWMFxaTUwfM+CfndVk9Th2IaTinqXiz6Mn26GK2zriCpv6/+5m3Q==} swagger-ui-express@5.0.1: resolution: {integrity: sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==} @@ -12292,11 +12466,6 @@ packages: engines: {node: '>=18.12'} hasBin: true - syncpack@13.0.4: - resolution: {integrity: sha512-kJ9VlRxNCsBD5pJAE29oXeBYbPLhEySQmK4HdpsLv81I6fcDDW17xeJqMwiU3H7/woAVsbgq25DJNS8BeiN5+w==} - engines: {node: '>=18.18.0'} - hasBin: true - table-layout@1.0.2: resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} @@ -12311,23 +12480,18 @@ packages: tar-fs@2.1.4: resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - tar-fs@3.1.1: - resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==} + tar-fs@3.1.2: + resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + tar-stream@3.1.8: + resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} - tar@7.5.9: - resolution: {integrity: sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==} + tar@7.5.11: + resolution: {integrity: sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==} engines: {node: '>=18'} tau-prolog@0.2.81: @@ -12344,11 +12508,11 @@ packages: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} - temporal-polyfill@0.3.0: - resolution: {integrity: sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g==} + temporal-polyfill@0.3.2: + resolution: {integrity: sha512-TzHthD/heRK947GNiSu3Y5gSPpeUDH34+LESnfsq8bqpFhsB79HFBX8+Z834IVX68P3EUyRPZK5bL/1fh437Eg==} - temporal-spec@0.3.0: - resolution: {integrity: sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ==} + temporal-spec@0.3.1: + resolution: {integrity: sha512-B4TUhezh9knfSIMwt7RVggApDRJZo73uZdj8AacL2mZ8RP5KtLianh2MXxL06GN9ESYiIsiuoLQhgVfwe55Yhw==} tempy@1.0.1: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} @@ -12375,14 +12539,6 @@ packages: through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - tightrope@0.2.0: - resolution: {integrity: sha512-Kw36UHxJEELq2VUqdaSGR2/8cAsPgMtvX8uGVU6Jk26O66PhXec0A5ZnRYs47btbtwPDpXXF66+Fo3vimCM9aQ==} - engines: {node: '>=16'} - - timers-browserify@2.0.12: - resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} - engines: {node: '>=0.6.0'} - tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -12395,8 +12551,12 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + tinyclip@0.1.12: + resolution: {integrity: sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==} + engines: {node: ^16.14.0 || >= 17.3.0} + + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} engines: {node: '>=18'} tinyglobby@0.2.15: @@ -12410,8 +12570,8 @@ packages: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyrainbow@3.0.3: - resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} tinyspy@4.0.4: @@ -12429,10 +12589,6 @@ packages: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} - to-buffer@1.2.2: - resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} - engines: {node: '>= 0.4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -12536,9 +12692,6 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} - ts-toolbelt@9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - tsconfck@3.1.6: resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} engines: {node: ^18 || >=20} @@ -12549,9 +12702,6 @@ packages: typescript: optional: true - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -12568,9 +12718,6 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - tty-browserify@0.0.1: - resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} - tuf-js@3.1.0: resolution: {integrity: sha512-3T3T04WzowbwV2FDiGXBbr81t64g1MUGGJRgT4x5o97N+8ArdhVCAF9IxFrxuSJmM3E5Asn7nKHkao0ibcZXAg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -12629,22 +12776,6 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - typed-rest-client@1.8.11: resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} @@ -12670,8 +12801,8 @@ packages: typescript-auto-import-cache@0.3.6: resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} - typescript-eslint@8.56.1: - resolution: {integrity: sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==} + typescript-eslint@8.57.0: + resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -12711,10 +12842,6 @@ packages: umask@1.1.0: resolution: {integrity: sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==} - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -12724,11 +12851,14 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici@7.22.0: - resolution: {integrity: sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==} + undici@7.24.3: + resolution: {integrity: sha512-eJdUmK/Wrx2d+mnWWmwwLRyA7OQCkLap60sk3dOK4ViZR7DKwwptwuIvFBg2HaiP9ESaEdhtpSymQPvytpmkCA==} engines: {node: '>=20.18.1'} unicorn-magic@0.1.0: @@ -12903,10 +13033,6 @@ packages: url-join@4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -12918,9 +13044,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - uuid@11.1.0: resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true @@ -12947,10 +13070,6 @@ packages: resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - validate-npm-package-name@6.0.2: - resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} - engines: {node: ^18.17.0 || >=20.5.0} - validate-npm-package-name@7.0.2: resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} engines: {node: ^20.17.0 || >=22.9.0} @@ -13022,27 +13141,22 @@ packages: vite: optional: true - vite-plugin-node-polyfills@0.25.0: - resolution: {integrity: sha512-rHZ324W3LhfGPxWwQb2N048TThB6nVvnipsqBUJEzh3R9xeK9KI3si+GMQxCuAcpPJBVf0LpDtJ+beYzB3/chg==} - peerDependencies: - vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 jiti: '>=1.21.0' - less: '*' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: ^2.4.2 + yaml: '>=2.8.3' peerDependenciesMeta: '@types/node': optional: true @@ -13067,31 +13181,34 @@ packages: yaml: optional: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@8.0.1: + resolution: {integrity: sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: ^2.4.2 + yaml: '>=2.8.3' peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -13115,20 +13232,21 @@ packages: vite: optional: true - vitest@4.0.18: - resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} + vitest@4.1.0: + resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.18 - '@vitest/browser-preview': 4.0.18 - '@vitest/browser-webdriverio': 4.0.18 - '@vitest/ui': 4.0.18 + '@vitest/browser-playwright': 4.1.0 + '@vitest/browser-preview': 4.1.0 + '@vitest/browser-webdriverio': 4.1.0 + '@vitest/ui': 4.1.0 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -13149,9 +13267,6 @@ packages: jsdom: optional: true - vm-browserify@1.1.2: - resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} - volar-service-css@0.0.68: resolution: {integrity: sha512-lJSMh6f3QzZ1tdLOZOzovLX0xzAadPhx8EKwraDLPxBndLCYfoTvnNuiFFV8FARrpAlW5C0WkH+TstPaCxr00Q==} peerDependencies: @@ -13264,8 +13379,8 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - web-tree-sitter@0.26.6: - resolution: {integrity: sha512-fSPR7VBW/fZQdUSp/bXTDLT+i/9dwtbnqgEBMzowrM4U3DzeCwDbY3MKo0584uQxID4m/1xpLflrlT/rLIRPew==} + web-tree-sitter@0.26.7: + resolution: {integrity: sha512-KiZhelTvBA/ziUHEO7Emb75cGVAq8iGZNabYaZm53Zpy50NsXyOW+xSHlwHt5CVg/TRPZBfeVLTTobF0LjFJ1w==} webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -13295,10 +13410,6 @@ packages: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - which-collection@1.0.2: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} @@ -13344,10 +13455,6 @@ packages: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} - widest-line@5.0.0: - resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} - engines: {node: '>=18'} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -13356,9 +13463,6 @@ packages: resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} engines: {node: '>=8.0.0'} - workerpool@9.3.4: - resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -13469,16 +13573,16 @@ packages: resolution: {integrity: sha512-9F3myNmJzUN/679jycdMxqtydPSDRAarSj3wPiF7pchEPnO9Dg07Oc+gIYLqXR4L+g+FSEVXXv2+mr54StLFOg==} hasBin: true - yaml@2.7.1: - resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} - engines: {node: '>= 14'} - hasBin: true - yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -13487,10 +13591,6 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -13513,10 +13613,6 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} - yocto-spinner@0.2.3: - resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} - engines: {node: '>=18.19'} - yoctocolors@2.1.2: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} @@ -13525,17 +13621,6 @@ packages: resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==} engines: {node: '>=8'} - zod-to-json-schema@3.25.1: - resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} - peerDependencies: - zod: ^3.25 || ^4 - - zod-to-ts@1.2.0: - resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} - peerDependencies: - typescript: ^4.9.4 || ^5.0.2 - zod: ^3 - zod-validation-error@4.0.2: resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} @@ -13672,7 +13757,7 @@ snapshots: '@alloy-js/core@0.22.0': dependencies: - '@vue/reactivity': 3.5.29 + '@vue/reactivity': 3.5.30 cli-table3: 0.6.5 pathe: 2.0.3 picocolors: 1.1.1 @@ -13689,7 +13774,7 @@ snapshots: '@alloy-js/markdown@0.22.0': dependencies: '@alloy-js/core': 0.22.0 - yaml: 2.8.2 + yaml: 2.8.3 '@alloy-js/msbuild@0.22.0': dependencies: @@ -13704,11 +13789,11 @@ snapshots: change-case: 5.4.4 pathe: 2.0.3 - '@alloy-js/rollup-plugin@0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.49.0)': + '@alloy-js/rollup-plugin@0.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.0)': dependencies: '@alloy-js/babel-preset': 0.2.1(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@rollup/plugin-babel': 6.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.49.0) + '@rollup/plugin-babel': 6.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.0) transitivePeerDependencies: - '@babel/core' - '@types/babel__core' @@ -13724,7 +13809,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 - tinyexec: 1.0.2 + tinyexec: 1.0.4 '@arcanis/slice-ansi@1.1.1': dependencies: @@ -13738,9 +13823,9 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 - '@astrojs/check@0.9.6(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3)': + '@astrojs/check@0.9.7(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3)': dependencies: - '@astrojs/language-server': 2.16.3(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3) + '@astrojs/language-server': 2.16.4(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3) chokidar: 4.0.3 kleur: 4.1.5 typescript: 5.9.3 @@ -13751,12 +13836,16 @@ snapshots: '@astrojs/compiler@2.13.1': {} - '@astrojs/internal-helpers@0.7.5': {} + '@astrojs/compiler@3.0.0': {} + + '@astrojs/internal-helpers@0.8.0': + dependencies: + picomatch: 4.0.3 - '@astrojs/language-server@2.16.3(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3)': + '@astrojs/language-server@2.16.4(prettier-plugin-astro@0.14.1)(prettier@3.8.1)(typescript@5.9.3)': dependencies: '@astrojs/compiler': 2.13.1 - '@astrojs/yaml2ts': 0.2.2 + '@astrojs/yaml2ts': 0.2.3 '@jridgewell/sourcemap-codec': 1.5.5 '@volar/kit': 2.4.28(typescript@5.9.3) '@volar/language-core': 2.4.28 @@ -13779,14 +13868,13 @@ snapshots: transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@6.3.10': + '@astrojs/markdown-remark@7.0.0': dependencies: - '@astrojs/internal-helpers': 0.7.5 - '@astrojs/prism': 3.3.0 + '@astrojs/internal-helpers': 0.8.0 + '@astrojs/prism': 4.0.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 - import-meta-resolve: 4.2.0 js-yaml: 4.1.1 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 @@ -13795,7 +13883,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.23.0 + shiki: 4.0.2 smol-toml: 1.6.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 @@ -13805,13 +13893,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.13(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))': + '@astrojs/mdx@5.0.0(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))': dependencies: - '@astrojs/markdown-remark': 6.3.10 + '@astrojs/markdown-remark': 7.0.0 '@mdx-js/mdx': 3.1.1 acorn: 8.16.0 - astro: 5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) - es-module-lexer: 1.7.0 + astro: 6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + es-module-lexer: 2.0.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 piccolore: 0.1.3 @@ -13824,19 +13912,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/prism@3.3.0': + '@astrojs/prism@4.0.0': dependencies: prismjs: 1.30.0 - '@astrojs/react@4.4.2(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2)': + '@astrojs/react@5.0.0(@types/node@25.5.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.3)': dependencies: + '@astrojs/internal-helpers': 0.8.0 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@vitejs/plugin-react': 4.7.0(vite@6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitejs/plugin-react': 5.2.0(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)) + devalue: 5.6.4 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) ultrahtml: 1.6.0 - vite: 6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -13851,23 +13941,23 @@ snapshots: - tsx - yaml - '@astrojs/sitemap@3.7.0': + '@astrojs/sitemap@3.7.1': dependencies: - sitemap: 8.0.2 + sitemap: 9.0.1 stream-replace-string: 2.0.0 - zod: 3.25.76 + zod: 4.3.6 - '@astrojs/starlight@0.37.6(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))': + '@astrojs/starlight@0.38.1(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3))': dependencies: - '@astrojs/markdown-remark': 6.3.10 - '@astrojs/mdx': 4.3.13(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) - '@astrojs/sitemap': 3.7.0 + '@astrojs/markdown-remark': 7.0.0 + '@astrojs/mdx': 5.0.0(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) + '@astrojs/sitemap': 3.7.1 '@pagefind/default-ui': 1.4.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) - astro-expressive-code: 0.41.7(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)) + astro: 6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) + astro-expressive-code: 0.41.7(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -13894,7 +13984,7 @@ snapshots: '@astrojs/telemetry@3.3.0': dependencies: ci-info: 4.4.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 dlv: 1.1.3 dset: 3.1.4 is-docker: 3.0.0 @@ -13903,9 +13993,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/yaml2ts@0.2.2': + '@astrojs/yaml2ts@0.2.3': dependencies: - yaml: 2.8.2 + yaml: 2.8.3 '@azu/format-text@1.0.2': {} @@ -13929,7 +14019,7 @@ snapshots: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 - '@azure/core-rest-pipeline': 1.22.2 + '@azure/core-rest-pipeline': 1.23.0 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 @@ -13937,11 +14027,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@azure/core-http-compat@2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.22.2)': + '@azure/core-http-compat@2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0)': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.22.2 + '@azure/core-rest-pipeline': 1.23.0 '@azure/core-lro@2.7.2': dependencies: @@ -13956,14 +14046,14 @@ snapshots: dependencies: tslib: 2.8.1 - '@azure/core-rest-pipeline@1.22.2': + '@azure/core-rest-pipeline@1.23.0': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 - '@typespec/ts-http-runtime': 0.3.3 + '@typespec/ts-http-runtime': 0.3.4 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -13975,14 +14065,14 @@ snapshots: '@azure/core-util@1.13.1': dependencies: '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.3.3 + '@typespec/ts-http-runtime': 0.3.4 tslib: 2.8.1 transitivePeerDependencies: - supports-color '@azure/core-xml@1.5.0': dependencies: - fast-xml-parser: 5.4.1 + fast-xml-parser: 5.5.5 tslib: 2.8.1 '@azure/identity@4.13.0': @@ -13990,12 +14080,12 @@ snapshots: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.22.2 + '@azure/core-rest-pipeline': 1.23.0 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 - '@azure/msal-browser': 4.29.0 - '@azure/msal-node': 3.8.8 + '@azure/msal-browser': 4.29.1 + '@azure/msal-node': 3.8.9 open: 10.2.0 tslib: 2.8.1 transitivePeerDependencies: @@ -14003,20 +14093,20 @@ snapshots: '@azure/logger@1.3.0': dependencies: - '@typespec/ts-http-runtime': 0.3.3 + '@typespec/ts-http-runtime': 0.3.4 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/msal-browser@4.29.0': + '@azure/msal-browser@4.29.1': dependencies: - '@azure/msal-common': 15.15.0 + '@azure/msal-common': 15.16.1 - '@azure/msal-common@15.15.0': {} + '@azure/msal-common@15.16.1': {} - '@azure/msal-node@3.8.8': + '@azure/msal-node@3.8.9': dependencies: - '@azure/msal-common': 15.15.0 + '@azure/msal-common': 15.16.1 jsonwebtoken: 9.0.3 uuid: 8.3.2 @@ -14025,10 +14115,10 @@ snapshots: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 '@azure/core-client': 1.10.1 - '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.22.2) + '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.22.2 + '@azure/core-rest-pipeline': 1.23.0 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/core-xml': 1.5.0 @@ -14043,8 +14133,8 @@ snapshots: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 - '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.22.2) - '@azure/core-rest-pipeline': 1.22.2 + '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) + '@azure/core-rest-pipeline': 1.23.0 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 @@ -14079,7 +14169,7 @@ snapshots: '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -14317,7 +14407,7 @@ snapshots: '@babel/parser': 7.29.0 '@babel/template': 7.28.6 '@babel/types': 7.29.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -14332,32 +14422,32 @@ snapshots: '@capsizecss/unpack@4.0.0': dependencies: - fontkitten: 1.0.2 + fontkitten: 1.0.3 - '@chevrotain/cst-dts-gen@11.1.1': + '@chevrotain/cst-dts-gen@11.1.2': dependencies: - '@chevrotain/gast': 11.1.1 - '@chevrotain/types': 11.1.1 + '@chevrotain/gast': 11.1.2 + '@chevrotain/types': 11.1.2 lodash-es: 4.17.23 - '@chevrotain/gast@11.1.1': + '@chevrotain/gast@11.1.2': dependencies: - '@chevrotain/types': 11.1.1 + '@chevrotain/types': 11.1.2 lodash-es: 4.17.23 - '@chevrotain/regexp-to-ast@11.1.1': {} + '@chevrotain/regexp-to-ast@11.1.2': {} - '@chevrotain/types@11.1.1': {} + '@chevrotain/types@11.1.2': {} - '@chevrotain/utils@11.1.1': {} + '@chevrotain/utils@11.1.2': {} - '@chronus/chronus@1.3.0': + '@chronus/chronus@1.3.1': dependencies: cross-spawn: 7.0.6 globby: 16.1.1 is-unicode-supported: 2.1.0 micromatch: 4.0.8 - pacote: 21.4.0 + pacote: 21.5.0 picocolors: 1.1.1 pluralize: 8.0.0 prompts: 2.4.2 @@ -14365,22 +14455,22 @@ snapshots: smol-toml: 1.6.0 source-map-support: 0.5.21 std-env: 3.10.0 - yaml: 2.8.2 + yaml: 2.8.3 yargs: 18.0.0 zod: 4.3.6 transitivePeerDependencies: - supports-color - '@chronus/github-pr-commenter@1.0.5': + '@chronus/github-pr-commenter@1.0.6': dependencies: - '@chronus/github': 1.0.5 + '@chronus/github': 1.0.6 '@octokit/rest': 22.0.1 transitivePeerDependencies: - supports-color - '@chronus/github@1.0.5': + '@chronus/github@1.0.6': dependencies: - '@chronus/chronus': 1.3.0 + '@chronus/chronus': 1.3.1 '@octokit/graphql': 9.0.3 '@octokit/rest': 22.0.1 cross-spawn: 7.0.6 @@ -14390,6 +14480,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@clack/core@1.1.0': + dependencies: + sisteransi: 1.0.5 + + '@clack/prompts@1.1.0': + dependencies: + '@clack/core': 1.1.0 + sisteransi: 1.0.5 + '@colors/colors@1.5.0': optional: true @@ -14399,11 +14498,11 @@ snapshots: '@cspell/dict-al': 1.1.1 '@cspell/dict-aws': 4.0.17 '@cspell/dict-bash': 4.2.2 - '@cspell/dict-companies': 3.2.10 + '@cspell/dict-companies': 3.2.11 '@cspell/dict-cpp': 7.0.2 '@cspell/dict-cryptocurrencies': 5.0.5 '@cspell/dict-csharp': 4.0.8 - '@cspell/dict-css': 4.0.19 + '@cspell/dict-css': 4.1.1 '@cspell/dict-dart': 2.3.2 '@cspell/dict-data-science': 2.0.13 '@cspell/dict-django': 4.1.6 @@ -14411,11 +14510,11 @@ snapshots: '@cspell/dict-dotnet': 5.0.12 '@cspell/dict-elixir': 4.0.8 '@cspell/dict-en-common-misspellings': 2.1.12 - '@cspell/dict-en-gb-mit': 3.1.18 - '@cspell/dict-en_us': 4.4.29 - '@cspell/dict-filetypes': 3.0.16 + '@cspell/dict-en-gb-mit': 3.1.20 + '@cspell/dict-en_us': 4.4.31 + '@cspell/dict-filetypes': 3.0.17 '@cspell/dict-flutter': 1.1.1 - '@cspell/dict-fonts': 4.0.5 + '@cspell/dict-fonts': 4.0.6 '@cspell/dict-fsharp': 1.1.1 '@cspell/dict-fullstack': 3.2.8 '@cspell/dict-gaming-terms': 1.1.2 @@ -14423,7 +14522,7 @@ snapshots: '@cspell/dict-golang': 6.0.26 '@cspell/dict-google': 1.0.9 '@cspell/dict-haskell': 4.0.6 - '@cspell/dict-html': 4.0.14 + '@cspell/dict-html': 4.0.15 '@cspell/dict-html-symbol-entities': 4.0.5 '@cspell/dict-java': 5.0.12 '@cspell/dict-julia': 1.1.1 @@ -14433,20 +14532,20 @@ snapshots: '@cspell/dict-lorem-ipsum': 4.0.5 '@cspell/dict-lua': 4.0.8 '@cspell/dict-makefile': 1.0.5 - '@cspell/dict-markdown': 2.0.14(@cspell/dict-css@4.0.19)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.14)(@cspell/dict-typescript@3.2.3) + '@cspell/dict-markdown': 2.0.16(@cspell/dict-css@4.1.1)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.15)(@cspell/dict-typescript@3.2.3) '@cspell/dict-monkeyc': 1.0.12 '@cspell/dict-node': 5.0.9 - '@cspell/dict-npm': 5.2.35 + '@cspell/dict-npm': 5.2.37 '@cspell/dict-php': 4.1.1 '@cspell/dict-powershell': 5.0.15 '@cspell/dict-public-licenses': 2.0.16 '@cspell/dict-python': 4.2.25 '@cspell/dict-r': 2.1.1 - '@cspell/dict-ruby': 5.1.0 + '@cspell/dict-ruby': 5.1.1 '@cspell/dict-rust': 4.1.2 '@cspell/dict-scala': 5.0.9 '@cspell/dict-shell': 1.1.2 - '@cspell/dict-software-terms': 5.1.22 + '@cspell/dict-software-terms': 5.2.0 '@cspell/dict-sql': 2.2.1 '@cspell/dict-svelte': 1.0.7 '@cspell/dict-swift': 2.0.6 @@ -14485,7 +14584,7 @@ snapshots: dependencies: '@cspell/dict-shell': 1.1.2 - '@cspell/dict-companies@3.2.10': {} + '@cspell/dict-companies@3.2.11': {} '@cspell/dict-cpp@7.0.2': {} @@ -14493,7 +14592,7 @@ snapshots: '@cspell/dict-csharp@4.0.8': {} - '@cspell/dict-css@4.0.19': {} + '@cspell/dict-css@4.1.1': {} '@cspell/dict-dart@2.3.2': {} @@ -14509,15 +14608,15 @@ snapshots: '@cspell/dict-en-common-misspellings@2.1.12': {} - '@cspell/dict-en-gb-mit@3.1.18': {} + '@cspell/dict-en-gb-mit@3.1.20': {} - '@cspell/dict-en_us@4.4.29': {} + '@cspell/dict-en_us@4.4.31': {} - '@cspell/dict-filetypes@3.0.16': {} + '@cspell/dict-filetypes@3.0.17': {} '@cspell/dict-flutter@1.1.1': {} - '@cspell/dict-fonts@4.0.5': {} + '@cspell/dict-fonts@4.0.6': {} '@cspell/dict-fsharp@1.1.1': {} @@ -14535,7 +14634,7 @@ snapshots: '@cspell/dict-html-symbol-entities@4.0.5': {} - '@cspell/dict-html@4.0.14': {} + '@cspell/dict-html@4.0.15': {} '@cspell/dict-java@5.0.12': {} @@ -14553,10 +14652,10 @@ snapshots: '@cspell/dict-makefile@1.0.5': {} - '@cspell/dict-markdown@2.0.14(@cspell/dict-css@4.0.19)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.14)(@cspell/dict-typescript@3.2.3)': + '@cspell/dict-markdown@2.0.16(@cspell/dict-css@4.1.1)(@cspell/dict-html-symbol-entities@4.0.5)(@cspell/dict-html@4.0.15)(@cspell/dict-typescript@3.2.3)': dependencies: - '@cspell/dict-css': 4.0.19 - '@cspell/dict-html': 4.0.14 + '@cspell/dict-css': 4.1.1 + '@cspell/dict-html': 4.0.15 '@cspell/dict-html-symbol-entities': 4.0.5 '@cspell/dict-typescript': 3.2.3 @@ -14564,7 +14663,7 @@ snapshots: '@cspell/dict-node@5.0.9': {} - '@cspell/dict-npm@5.2.35': {} + '@cspell/dict-npm@5.2.37': {} '@cspell/dict-php@4.1.1': {} @@ -14578,7 +14677,7 @@ snapshots: '@cspell/dict-r@2.1.1': {} - '@cspell/dict-ruby@5.1.0': {} + '@cspell/dict-ruby@5.1.1': {} '@cspell/dict-rust@4.1.2': {} @@ -14586,7 +14685,7 @@ snapshots: '@cspell/dict-shell@1.1.2': {} - '@cspell/dict-software-terms@5.1.22': {} + '@cspell/dict-software-terms@5.2.0': {} '@cspell/dict-sql@2.2.1': {} @@ -14666,169 +14765,102 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} - '@emnapi/runtime@1.8.1': + '@emnapi/core@1.9.1': dependencies: + '@emnapi/wasi-threads': 1.2.0 tslib: 2.8.1 optional: true - '@emotion/hash@0.9.2': {} - - '@epic-web/invariant@1.0.0': {} - - '@esbuild/aix-ppc64@0.25.12': - optional: true - - '@esbuild/aix-ppc64@0.27.3': - optional: true - - '@esbuild/android-arm64@0.25.12': - optional: true - - '@esbuild/android-arm64@0.27.3': - optional: true - - '@esbuild/android-arm@0.25.12': - optional: true - - '@esbuild/android-arm@0.27.3': - optional: true - - '@esbuild/android-x64@0.25.12': - optional: true - - '@esbuild/android-x64@0.27.3': - optional: true - - '@esbuild/darwin-arm64@0.25.12': - optional: true - - '@esbuild/darwin-arm64@0.27.3': - optional: true - - '@esbuild/darwin-x64@0.25.12': - optional: true - - '@esbuild/darwin-x64@0.27.3': - optional: true - - '@esbuild/freebsd-arm64@0.25.12': - optional: true - - '@esbuild/freebsd-arm64@0.27.3': - optional: true - - '@esbuild/freebsd-x64@0.25.12': - optional: true - - '@esbuild/freebsd-x64@0.27.3': - optional: true - - '@esbuild/linux-arm64@0.25.12': - optional: true - - '@esbuild/linux-arm64@0.27.3': - optional: true - - '@esbuild/linux-arm@0.25.12': - optional: true - - '@esbuild/linux-arm@0.27.3': - optional: true - - '@esbuild/linux-ia32@0.25.12': - optional: true - - '@esbuild/linux-ia32@0.27.3': - optional: true - - '@esbuild/linux-loong64@0.25.12': + '@emnapi/runtime@1.9.1': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/linux-loong64@0.27.3': + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/linux-mips64el@0.25.12': - optional: true + '@emotion/hash@0.9.2': {} - '@esbuild/linux-mips64el@0.27.3': - optional: true + '@epic-web/invariant@1.0.0': {} - '@esbuild/linux-ppc64@0.25.12': + '@esbuild/aix-ppc64@0.27.4': optional: true - '@esbuild/linux-ppc64@0.27.3': + '@esbuild/android-arm64@0.27.4': optional: true - '@esbuild/linux-riscv64@0.25.12': + '@esbuild/android-arm@0.27.4': optional: true - '@esbuild/linux-riscv64@0.27.3': + '@esbuild/android-x64@0.27.4': optional: true - '@esbuild/linux-s390x@0.25.12': + '@esbuild/darwin-arm64@0.27.4': optional: true - '@esbuild/linux-s390x@0.27.3': + '@esbuild/darwin-x64@0.27.4': optional: true - '@esbuild/linux-x64@0.25.12': + '@esbuild/freebsd-arm64@0.27.4': optional: true - '@esbuild/linux-x64@0.27.3': + '@esbuild/freebsd-x64@0.27.4': optional: true - '@esbuild/netbsd-arm64@0.25.12': + '@esbuild/linux-arm64@0.27.4': optional: true - '@esbuild/netbsd-arm64@0.27.3': + '@esbuild/linux-arm@0.27.4': optional: true - '@esbuild/netbsd-x64@0.25.12': + '@esbuild/linux-ia32@0.27.4': optional: true - '@esbuild/netbsd-x64@0.27.3': + '@esbuild/linux-loong64@0.27.4': optional: true - '@esbuild/openbsd-arm64@0.25.12': + '@esbuild/linux-mips64el@0.27.4': optional: true - '@esbuild/openbsd-arm64@0.27.3': + '@esbuild/linux-ppc64@0.27.4': optional: true - '@esbuild/openbsd-x64@0.25.12': + '@esbuild/linux-riscv64@0.27.4': optional: true - '@esbuild/openbsd-x64@0.27.3': + '@esbuild/linux-s390x@0.27.4': optional: true - '@esbuild/openharmony-arm64@0.25.12': + '@esbuild/linux-x64@0.27.4': optional: true - '@esbuild/openharmony-arm64@0.27.3': + '@esbuild/netbsd-arm64@0.27.4': optional: true - '@esbuild/sunos-x64@0.25.12': + '@esbuild/netbsd-x64@0.27.4': optional: true - '@esbuild/sunos-x64@0.27.3': + '@esbuild/openbsd-arm64@0.27.4': optional: true - '@esbuild/win32-arm64@0.25.12': + '@esbuild/openbsd-x64@0.27.4': optional: true - '@esbuild/win32-arm64@0.27.3': + '@esbuild/openharmony-arm64@0.27.4': optional: true - '@esbuild/win32-ia32@0.25.12': + '@esbuild/sunos-x64@0.27.4': optional: true - '@esbuild/win32-ia32@0.27.3': + '@esbuild/win32-arm64@0.27.4': optional: true - '@esbuild/win32-x64@0.25.12': + '@esbuild/win32-ia32@0.27.4': optional: true - '@esbuild/win32-x64@0.27.3': + '@esbuild/win32-x64@0.27.4': optional: true '@esfx/async-canceltoken@1.0.0': @@ -14850,38 +14882,38 @@ snapshots: '@esfx/disposable@1.0.0': {} - '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.3)': dependencies: - eslint: 10.0.2 + eslint: 10.0.3 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.2': + '@eslint/config-array@0.23.3': dependencies: - '@eslint/object-schema': 3.0.2 - debug: 4.4.3(supports-color@8.1.1) + '@eslint/object-schema': 3.0.3 + debug: 4.4.3 minimatch: 10.2.4 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.2': + '@eslint/config-helpers@0.5.3': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 - '@eslint/core@1.1.0': + '@eslint/core@1.1.1': dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.0.2)': + '@eslint/js@10.0.1(eslint@10.0.3)': optionalDependencies: - eslint: 10.0.2 + eslint: 10.0.3 - '@eslint/object-schema@3.0.2': {} + '@eslint/object-schema@3.0.3': {} - '@eslint/plugin-kit@0.6.0': + '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 1.1.0 + '@eslint/core': 1.1.1 levn: 0.4.1 '@expressive-code/core@0.41.7': @@ -14891,8 +14923,8 @@ snapshots: hast-util-to-html: 9.0.5 hast-util-to-text: 4.0.2 hastscript: 9.0.1 - postcss: 8.5.6 - postcss-nested: 6.2.0(postcss@8.5.6) + postcss: 8.5.8 + postcss-nested: 6.2.0(postcss@8.5.8) unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 @@ -14909,20 +14941,20 @@ snapshots: dependencies: '@expressive-code/core': 0.41.7 - '@floating-ui/core@1.7.4': + '@floating-ui/core@1.7.5': dependencies: - '@floating-ui/utils': 0.2.10 + '@floating-ui/utils': 0.2.11 - '@floating-ui/devtools@0.2.3(@floating-ui/dom@1.7.5)': + '@floating-ui/devtools@0.2.3(@floating-ui/dom@1.7.6)': dependencies: - '@floating-ui/dom': 1.7.5 + '@floating-ui/dom': 1.7.6 - '@floating-ui/dom@1.7.5': + '@floating-ui/dom@1.7.6': dependencies: - '@floating-ui/core': 1.7.4 - '@floating-ui/utils': 0.2.10 + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 - '@floating-ui/utils@0.2.10': {} + '@floating-ui/utils@0.2.11': {} '@fluentui/keyboard-keys@9.0.8': dependencies: @@ -14932,19 +14964,19 @@ snapshots: dependencies: '@swc/helpers': 0.5.19 - '@fluentui/react-accordion@9.9.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-accordion@9.9.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion-components-preview': 0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -14953,16 +14985,16 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-alert@9.0.0-beta.134(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-alert@9.0.0-beta.135(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-avatar': 9.10.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-avatar': 9.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -14984,19 +15016,19 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-avatar@9.10.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-avatar@9.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-badge': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-popover': 9.13.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-popover': 9.14.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 - '@fluentui/react-tooltip': 9.9.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-tooltip': 9.9.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15007,12 +15039,12 @@ snapshots: '@fluentui/react-badge@9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15023,14 +15055,14 @@ snapshots: dependencies: '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-link': 9.7.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15041,13 +15073,13 @@ snapshots: dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15063,26 +15095,26 @@ snapshots: '@fluentui/react-text': 9.6.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-carousel@9.9.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-carousel@9.9.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 - '@fluentui/react-tooltip': 9.9.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-tooltip': 9.9.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15094,17 +15126,36 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-checkbox@9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-checkbox@9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + dependencies: + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) + '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) + '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) + '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-theme': 9.2.1 + '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) + '@swc/helpers': 0.5.19 + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + transitivePeerDependencies: + - scheduler + + '@fluentui/react-checkbox@9.5.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15122,7 +15173,7 @@ snapshots: '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15131,21 +15182,21 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-combobox@9.16.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-combobox@9.16.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-positioning': 9.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-positioning': 9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15154,69 +15205,69 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-components@9.73.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-components@9.73.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-accordion': 9.9.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-alert': 9.0.0-beta.134(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-accordion': 9.9.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-alert': 9.0.0-beta.135(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-avatar': 9.10.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-avatar': 9.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-badge': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-breadcrumb': 9.3.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-card': 9.5.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-carousel': 9.9.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-checkbox': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-carousel': 9.9.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-checkbox': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-color-picker': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-combobox': 9.16.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-dialog': 9.17.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-combobox': 9.16.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-dialog': 9.17.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-divider': 9.6.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-drawer': 9.11.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-drawer': 9.11.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-image': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-infobutton': 9.0.0-beta.111(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-infolabel': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-input': 9.7.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-infobutton': 9.0.0-beta.112(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-infolabel': 9.4.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-input': 9.7.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-link': 9.7.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-list': 9.6.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-menu': 9.21.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-message-bar': 9.6.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-nav': 9.3.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-list': 9.6.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-menu': 9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-message-bar': 9.6.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-nav': 9.3.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-overflow': 9.7.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-persona': 9.6.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-popover': 9.13.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-persona': 9.6.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-popover': 9.14.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-positioning': 9.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-progress': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-positioning': 9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-progress': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-provider': 9.22.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-radio': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-radio': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-rating': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-search': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-select': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-search': 9.3.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-select': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-skeleton': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-slider': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-spinbutton': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-skeleton': 9.5.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-slider': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-spinbutton': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-spinner': 9.7.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-swatch-picker': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-switch': 9.5.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-table': 9.19.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-swatch-picker': 9.5.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-switch': 9.6.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-table': 9.19.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-tabs': 9.11.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-tag-picker': 9.8.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-tags': 9.7.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-teaching-popover': 9.6.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-tag-picker': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-tags': 9.7.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-teaching-popover': 9.6.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-text': 9.6.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-textarea': 9.6.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-textarea': 9.6.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-theme': 9.2.1 - '@fluentui/react-toast': 9.7.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-toolbar': 9.7.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-tooltip': 9.9.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-tree': 9.15.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-toast': 9.7.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-toolbar': 9.7.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-tooltip': 9.9.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-tree': 9.15.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-virtualizer': 9.0.0-alpha.111(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15235,21 +15286,21 @@ snapshots: react-dom: 19.2.4(react@19.2.4) scheduler: 0.27.0 - '@fluentui/react-dialog@9.17.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-dialog@9.17.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion-components-preview': 0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15264,25 +15315,25 @@ snapshots: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-drawer@9.11.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-drawer@9.11.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-dialog': 9.17.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-dialog': 9.17.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion-components-preview': 0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15291,16 +15342,16 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-field@9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-field@9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15309,9 +15360,9 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-icons@2.0.319(react@19.2.4)': + '@fluentui/react-icons@2.0.323(react@19.2.4)': dependencies: - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) react: 19.2.4 tslib: 2.8.1 @@ -15321,23 +15372,23 @@ snapshots: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-infobutton@9.0.0-beta.111(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-infobutton@9.0.0-beta.112(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-popover': 9.13.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-popover': 9.14.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15346,17 +15397,17 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-infolabel@9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-infolabel@9.4.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-popover': 9.13.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-popover': 9.14.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15365,14 +15416,14 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-input@9.7.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-input@9.7.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15394,7 +15445,7 @@ snapshots: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15409,24 +15460,24 @@ snapshots: '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-list@9.6.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-list@9.6.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 - '@fluentui/react-checkbox': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-checkbox': 9.5.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15435,20 +15486,22 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-menu@9.21.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-menu@9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-positioning': 9.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-positioning': 9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15457,27 +15510,27 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-message-bar@9.6.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@fluentui/react-message-bar@9.6.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-link': 9.7.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion-components-preview': 0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-motion-components-preview@0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@fluentui/react-motion-components-preview@0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 @@ -15485,7 +15538,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-motion@9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@fluentui/react-motion@9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) @@ -15495,23 +15548,23 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-nav@9.3.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-nav@9.3.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-divider': 9.6.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-drawer': 9.11.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-drawer': 9.11.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion-components-preview': 0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 - '@fluentui/react-tooltip': 9.9.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-tooltip': 9.9.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15526,7 +15579,7 @@ snapshots: '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15535,15 +15588,15 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-persona@9.6.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-persona@9.6.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-avatar': 9.10.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-avatar': 9.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-badge': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15552,19 +15605,21 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-popover@9.13.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-popover@9.14.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-positioning': 9.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-positioning': 9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15578,21 +15633,21 @@ snapshots: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-positioning@9.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@fluentui/react-positioning@9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@floating-ui/devtools': 0.2.3(@floating-ui/dom@1.7.5) - '@floating-ui/dom': 1.7.5 + '@floating-ui/devtools': 0.2.3(@floating-ui/dom@1.7.6) + '@floating-ui/dom': 1.7.6 '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15600,14 +15655,14 @@ snapshots: react-dom: 19.2.4(react@19.2.4) use-sync-external-store: 1.6.0(react@19.2.4) - '@fluentui/react-progress@9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-progress@9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15618,30 +15673,30 @@ snapshots: '@fluentui/react-provider@9.22.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/core': 1.19.2 - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/core': 1.20.1 + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-radio@9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-radio@9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15652,28 +15707,28 @@ snapshots: '@fluentui/react-rating@9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-search@9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-search@9.3.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-icons': 2.0.319(react@19.2.4) - '@fluentui/react-input': 9.7.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) + '@fluentui/react-input': 9.7.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15682,15 +15737,15 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-select@9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-select@9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15706,14 +15761,14 @@ snapshots: '@types/react': 19.2.14 react: 19.2.4 - '@fluentui/react-skeleton@9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-skeleton@9.5.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15722,15 +15777,15 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-slider@9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-slider@9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15739,16 +15794,16 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-spinbutton@9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-spinbutton@9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15764,24 +15819,24 @@ snapshots: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-swatch-picker@9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-swatch-picker@9.5.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15790,17 +15845,17 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-switch@9.5.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-switch@9.6.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-label': 9.3.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15809,21 +15864,21 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-table@9.19.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-table@9.19.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-avatar': 9.10.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-checkbox': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-avatar': 9.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-checkbox': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-radio': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-radio': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15840,7 +15895,7 @@ snapshots: '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15854,7 +15909,7 @@ snapshots: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15863,23 +15918,23 @@ snapshots: react-dom: 19.2.4(react@19.2.4) tabster: 8.7.0 - '@fluentui/react-tag-picker@9.8.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-tag-picker@9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-combobox': 9.16.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-combobox': 9.16.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-positioning': 9.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-positioning': 9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-tags': 9.7.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-tags': 9.7.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15888,18 +15943,18 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-tags@9.7.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-tags@9.7.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-avatar': 9.10.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-avatar': 9.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15908,19 +15963,19 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-teaching-popover@9.6.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-teaching-popover@9.6.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-popover': 9.13.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-popover': 9.14.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15936,21 +15991,21 @@ snapshots: '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-textarea@9.6.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-textarea@9.6.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: - '@fluentui/react-field': 9.4.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-field': 9.4.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -15964,38 +16019,38 @@ snapshots: '@fluentui/tokens': 1.0.0-alpha.23 '@swc/helpers': 0.5.19 - '@fluentui/react-toast@9.7.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@fluentui/react-toast@9.7.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion-components-preview': 0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-toolbar@9.7.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-toolbar@9.7.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-divider': 9.6.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-radio': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-radio': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -16004,41 +16059,41 @@ snapshots: transitivePeerDependencies: - scheduler - '@fluentui/react-tooltip@9.9.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@fluentui/react-tooltip@9.9.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-portal': 9.8.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-positioning': 9.21.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-positioning': 9.22.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@fluentui/react-tree@9.15.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': + '@fluentui/react-tree@9.15.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0)': dependencies: '@fluentui/keyboard-keys': 9.0.8 '@fluentui/react-aria': 9.17.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-avatar': 9.10.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-avatar': 9.10.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-button': 9.8.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-checkbox': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-checkbox': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-context-selector': 9.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) - '@fluentui/react-icons': 2.0.319(react@19.2.4) + '@fluentui/react-icons': 2.0.323(react@19.2.4) '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) - '@fluentui/react-motion': 9.12.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-motion-components-preview': 0.15.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fluentui/react-radio': 9.5.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) + '@fluentui/react-motion': 9.13.0(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-motion-components-preview': 0.15.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@fluentui/react-radio': 9.5.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-tabster': 9.26.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-theme': 9.2.1 '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -16060,7 +16115,7 @@ snapshots: '@fluentui/react-jsx-runtime': 9.4.1(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-shared-contexts': 9.26.2(@types/react@19.2.14)(react@19.2.4) '@fluentui/react-utilities': 9.26.2(@types/react@19.2.14)(react@19.2.4) - '@griffel/react': 1.5.32(react@19.2.4) + '@griffel/react': 1.6.1(react@19.2.4) '@swc/helpers': 0.5.19 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -16085,22 +16140,22 @@ snapshots: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@griffel/core@1.19.2': + '@griffel/core@1.20.1': dependencies: '@emotion/hash': 0.9.2 - '@griffel/style-types': 1.3.0 + '@griffel/style-types': 1.4.0 csstype: 3.2.3 rtl-css-js: 1.16.1 stylis: 4.3.6 tslib: 2.8.1 - '@griffel/react@1.5.32(react@19.2.4)': + '@griffel/react@1.6.1(react@19.2.4)': dependencies: - '@griffel/core': 1.19.2 + '@griffel/core': 1.20.1 react: 19.2.4 tslib: 2.8.1 - '@griffel/style-types@1.3.0': + '@griffel/style-types@1.4.0': dependencies: csstype: 3.2.3 @@ -16123,9 +16178,9 @@ snapshots: dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/types': 2.0.0 - mlly: 1.8.0 + mlly: 1.8.1 - '@img/colour@1.0.0': {} + '@img/colour@1.1.0': {} '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: @@ -16209,7 +16264,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.8.1 + '@emnapi/runtime': 1.9.1 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -16223,128 +16278,128 @@ snapshots: '@inquirer/ansi@2.0.3': {} - '@inquirer/checkbox@5.1.0(@types/node@25.3.0)': + '@inquirer/checkbox@5.1.0(@types/node@25.5.0)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.5(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/confirm@6.0.8(@types/node@25.3.0)': + '@inquirer/confirm@6.0.8(@types/node@25.5.0)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/core@11.1.5(@types/node@25.3.0)': + '@inquirer/core@11.1.5(@types/node@25.5.0)': dependencies: '@inquirer/ansi': 2.0.3 '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) cli-width: 4.1.0 fast-wrap-ansi: 0.2.0 mute-stream: 3.0.0 signal-exit: 4.1.0 optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/editor@5.0.8(@types/node@25.3.0)': + '@inquirer/editor@5.0.8(@types/node@25.5.0)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/external-editor': 2.0.3(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/external-editor': 2.0.3(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/expand@5.0.8(@types/node@25.3.0)': + '@inquirer/expand@5.0.8(@types/node@25.5.0)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/external-editor@2.0.3(@types/node@25.3.0)': + '@inquirer/external-editor@2.0.3(@types/node@25.5.0)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@inquirer/figures@2.0.3': {} - '@inquirer/input@5.0.8(@types/node@25.3.0)': + '@inquirer/input@5.0.8(@types/node@25.5.0)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/number@4.0.8(@types/node@25.3.0)': + '@inquirer/number@4.0.8(@types/node@25.5.0)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/password@5.0.8(@types/node@25.3.0)': + '@inquirer/password@5.0.8(@types/node@25.5.0)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 - - '@inquirer/prompts@8.3.0(@types/node@25.3.0)': - dependencies: - '@inquirer/checkbox': 5.1.0(@types/node@25.3.0) - '@inquirer/confirm': 6.0.8(@types/node@25.3.0) - '@inquirer/editor': 5.0.8(@types/node@25.3.0) - '@inquirer/expand': 5.0.8(@types/node@25.3.0) - '@inquirer/input': 5.0.8(@types/node@25.3.0) - '@inquirer/number': 4.0.8(@types/node@25.3.0) - '@inquirer/password': 5.0.8(@types/node@25.3.0) - '@inquirer/rawlist': 5.2.4(@types/node@25.3.0) - '@inquirer/search': 4.1.4(@types/node@25.3.0) - '@inquirer/select': 5.1.0(@types/node@25.3.0) + '@types/node': 25.5.0 + + '@inquirer/prompts@8.3.0(@types/node@25.5.0)': + dependencies: + '@inquirer/checkbox': 5.1.0(@types/node@25.5.0) + '@inquirer/confirm': 6.0.8(@types/node@25.5.0) + '@inquirer/editor': 5.0.8(@types/node@25.5.0) + '@inquirer/expand': 5.0.8(@types/node@25.5.0) + '@inquirer/input': 5.0.8(@types/node@25.5.0) + '@inquirer/number': 4.0.8(@types/node@25.5.0) + '@inquirer/password': 5.0.8(@types/node@25.5.0) + '@inquirer/rawlist': 5.2.4(@types/node@25.5.0) + '@inquirer/search': 4.1.4(@types/node@25.5.0) + '@inquirer/select': 5.1.0(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/rawlist@5.2.4(@types/node@25.3.0)': + '@inquirer/rawlist@5.2.4(@types/node@25.5.0)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/search@4.1.4(@types/node@25.3.0)': + '@inquirer/search@4.1.4(@types/node@25.5.0)': dependencies: - '@inquirer/core': 11.1.5(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/select@5.1.0(@types/node@25.3.0)': + '@inquirer/select@5.1.0(@types/node@25.5.0)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.5(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@inquirer/type@4.0.3(@types/node@25.3.0)': + '@inquirer/type@4.0.3(@types/node@25.5.0)': optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -16357,11 +16412,11 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2))': dependencies: glob: 13.0.6 react-docgen-typescript: 2.4.0(typescript@5.9.3) - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.9.3 @@ -16390,9 +16445,9 @@ snapshots: dependencies: vary: 1.1.2 - '@koa/router@15.3.0(koa@3.1.2)': + '@koa/router@15.3.1(koa@3.1.2)': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 http-errors: 2.0.1 koa: 3.1.2 koa-compose: 4.1.0 @@ -16402,7 +16457,7 @@ snapshots: '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -16438,7 +16493,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@mermaid-js/parser@1.0.0': + '@mermaid-js/parser@1.0.1': dependencies: langium: 4.2.1 @@ -16448,7 +16503,7 @@ snapshots: '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.5 - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 transitivePeerDependencies: - tslib @@ -16458,30 +16513,30 @@ snapshots: '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.5 - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 transitivePeerDependencies: - tslib - '@microsoft/api-extractor-model@7.33.4(@types/node@25.3.0)': + '@microsoft/api-extractor-model@7.33.4(@types/node@25.5.0)': dependencies: '@microsoft/tsdoc': 0.16.0 '@microsoft/tsdoc-config': 0.18.1 - '@rushstack/node-core-library': 5.20.3(@types/node@25.3.0) + '@rushstack/node-core-library': 5.20.3(@types/node@25.5.0) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.57.6(@types/node@25.3.0)': + '@microsoft/api-extractor@7.57.7(@types/node@25.5.0)': dependencies: - '@microsoft/api-extractor-model': 7.33.4(@types/node@25.3.0) + '@microsoft/api-extractor-model': 7.33.4(@types/node@25.5.0) '@microsoft/tsdoc': 0.16.0 '@microsoft/tsdoc-config': 0.18.1 - '@rushstack/node-core-library': 5.20.3(@types/node@25.3.0) + '@rushstack/node-core-library': 5.20.3(@types/node@25.5.0) '@rushstack/rig-package': 0.7.2 - '@rushstack/terminal': 0.22.3(@types/node@25.3.0) - '@rushstack/ts-command-line': 5.3.3(@types/node@25.3.0) + '@rushstack/terminal': 0.22.3(@types/node@25.5.0) + '@rushstack/ts-command-line': 5.3.3(@types/node@25.5.0) diff: 8.0.3 lodash: 4.17.23 - minimatch: 10.2.1 + minimatch: 10.2.3 resolve: 1.22.11 semver: 7.5.4 source-map: 0.6.1 @@ -16496,7 +16551,7 @@ snapshots: '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.5 - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 tslib: 2.8.1 '@microsoft/applicationinsights-common@3.3.11(tslib@2.8.1)': @@ -16504,7 +16559,7 @@ snapshots: '@microsoft/applicationinsights-core-js': 3.3.11(tslib@2.8.1) '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 tslib: 2.8.1 '@microsoft/applicationinsights-core-js@3.3.11(tslib@2.8.1)': @@ -16512,12 +16567,12 @@ snapshots: '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.5 - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 tslib: 2.8.1 '@microsoft/applicationinsights-shims@3.0.1': dependencies: - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 '@microsoft/applicationinsights-web-basic@3.3.11(tslib@2.8.1)': dependencies: @@ -16527,12 +16582,12 @@ snapshots: '@microsoft/applicationinsights-shims': 3.0.1 '@microsoft/dynamicproto-js': 2.0.3 '@nevware21/ts-async': 0.5.5 - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 tslib: 2.8.1 '@microsoft/dynamicproto-js@2.0.3': dependencies: - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 '@microsoft/tsdoc-config@0.18.1': dependencies: @@ -16543,11 +16598,18 @@ snapshots: '@microsoft/tsdoc@0.16.0': {} + '@napi-rs/wasm-runtime@1.1.1': + dependencies: + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nevware21/ts-async@0.5.5': dependencies: - '@nevware21/ts-utils': 0.12.6 + '@nevware21/ts-utils': 0.13.0 - '@nevware21/ts-utils@0.12.6': {} + '@nevware21/ts-utils@0.13.0': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -16576,7 +16638,7 @@ snapshots: agent-base: 7.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 - lru-cache: 11.2.6 + lru-cache: 11.2.7 socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color @@ -16594,7 +16656,7 @@ snapshots: '@gar/promise-retry': 1.0.2 '@npmcli/promise-spawn': 9.0.1 ini: 6.0.0 - lru-cache: 11.2.6 + lru-cache: 11.2.7 npm-pick-manifest: 11.0.3 proc-log: 6.1.0 semver: 7.7.4 @@ -16623,14 +16685,13 @@ snapshots: '@npmcli/redact@4.0.0': {} - '@npmcli/run-script@10.0.3': + '@npmcli/run-script@10.0.4': dependencies: '@npmcli/node-gyp': 5.0.0 '@npmcli/package-json': 7.0.5 '@npmcli/promise-spawn': 9.0.1 node-gyp: 12.2.0 proc-log: 6.1.0 - which: 6.0.1 transitivePeerDependencies: - supports-color @@ -16714,7 +16775,7 @@ snapshots: '@octokit/core': 7.0.6 '@octokit/oauth-authorization-url': 8.0.0 '@octokit/oauth-methods': 6.0.2 - '@types/aws-lambda': 8.10.160 + '@types/aws-lambda': 8.10.161 universal-user-agent: 7.0.3 '@octokit/oauth-authorization-url@8.0.0': {} @@ -16771,7 +16832,7 @@ snapshots: '@octokit/request-error': 7.1.0 '@octokit/types': 16.0.0 fast-content-type-parse: 3.0.0 - json-with-bigint: 3.5.3 + json-with-bigint: 3.5.7 universal-user-agent: 7.0.3 '@octokit/rest@22.0.1': @@ -16795,6 +16856,8 @@ snapshots: '@oslojs/encoding@1.1.0': {} + '@oxc-project/types@0.120.0': {} + '@pagefind/darwin-arm64@1.4.0': optional: true @@ -16841,19 +16904,19 @@ snapshots: '@pnpm/types': 1001.3.0 load-json-file: 6.2.0 - '@pnpm/cli-utils@1001.3.7(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/cli-utils@1001.3.9(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: '@pnpm/cli-meta': 1000.0.16 - '@pnpm/config': 1004.10.2(@pnpm/logger@1001.0.1) - '@pnpm/config.deps-installer': 1000.1.3(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) - '@pnpm/default-reporter': 1002.1.11(@pnpm/logger@1001.0.1) + '@pnpm/config': 1004.10.4(@pnpm/logger@1001.0.1) + '@pnpm/config.deps-installer': 1000.1.4(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) + '@pnpm/default-reporter': 1002.1.13(@pnpm/logger@1001.0.1) '@pnpm/error': 1000.0.5 '@pnpm/logger': 1001.0.1 '@pnpm/manifest-utils': 1002.0.4(@pnpm/logger@1001.0.1) '@pnpm/package-is-installable': 1000.0.20(@pnpm/logger@1001.0.1) '@pnpm/pnpmfile': 1002.1.12(@pnpm/logger@1001.0.1) '@pnpm/read-project-manifest': 1001.2.5(@pnpm/logger@1001.0.1) - '@pnpm/store-connection-manager': 1002.3.16(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/store-connection-manager': 1002.3.18(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@pnpm/types': 1001.3.0 '@pnpm/util.lex-comparator': 3.0.2 chalk: 4.1.2 @@ -16864,18 +16927,18 @@ snapshots: - supports-color - typanion - '@pnpm/client@1001.1.21(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/client@1001.1.23(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: - '@pnpm/default-resolver': 1002.3.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/default-resolver': 1002.3.7(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@pnpm/directory-fetcher': 1000.1.23(@pnpm/logger@1001.0.1) '@pnpm/fetch': 1001.0.0(@pnpm/logger@1001.0.1) '@pnpm/fetching-types': 1000.2.1 - '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) - '@pnpm/git-fetcher': 1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) + '@pnpm/git-fetcher': 1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@pnpm/network.auth-header': 1000.0.6 - '@pnpm/node.fetcher': 1001.0.24(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/node.fetcher': 1001.0.26(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@pnpm/resolver-base': 1005.4.1 - '@pnpm/tarball-fetcher': 1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/tarball-fetcher': 1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@pnpm/types': 1001.3.0 ramda: '@pnpm/ramda@0.28.1' transitivePeerDependencies: @@ -16885,25 +16948,25 @@ snapshots: - supports-color - typanion - '@pnpm/config.config-writer@1000.1.1(@pnpm/logger@1001.0.1)': + '@pnpm/config.config-writer@1000.1.2(@pnpm/logger@1001.0.1)': dependencies: '@pnpm/read-project-manifest': 1001.2.5(@pnpm/logger@1001.0.1) '@pnpm/types': 1001.3.0 - '@pnpm/workspace.manifest-writer': 1001.2.0 + '@pnpm/workspace.manifest-writer': 1001.3.0 ramda: '@pnpm/ramda@0.28.1' transitivePeerDependencies: - '@pnpm/logger' - '@pnpm/config.deps-installer@1000.1.3(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))': + '@pnpm/config.deps-installer@1000.1.4(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))': dependencies: - '@pnpm/config.config-writer': 1000.1.1(@pnpm/logger@1001.0.1) + '@pnpm/config.config-writer': 1000.1.2(@pnpm/logger@1001.0.1) '@pnpm/core-loggers': 1001.0.9(@pnpm/logger@1001.0.1) '@pnpm/error': 1000.0.5 '@pnpm/fetch': 1001.0.0(@pnpm/logger@1001.0.1) '@pnpm/logger': 1001.0.1 '@pnpm/network.auth-header': 1000.0.6 - '@pnpm/npm-resolver': 1005.2.1(@pnpm/logger@1001.0.1) - '@pnpm/package-store': 1007.1.4(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) + '@pnpm/npm-resolver': 1005.2.2(@pnpm/logger@1001.0.1) + '@pnpm/package-store': 1007.1.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) '@pnpm/parse-wanted-dependency': 1001.0.0 '@pnpm/pick-registry-for-package': 1000.0.16 '@pnpm/read-modules-dir': 1000.0.0 @@ -16922,7 +16985,7 @@ snapshots: '@pnpm/config.nerf-dart@1.0.1': {} - '@pnpm/config@1004.10.2(@pnpm/logger@1001.0.1)': + '@pnpm/config@1004.10.4(@pnpm/logger@1001.0.1)': dependencies: '@pnpm/catalogs.config': 1000.0.5 '@pnpm/catalogs.types': 1000.0.0 @@ -16936,7 +16999,7 @@ snapshots: '@pnpm/pnpmfile': 1002.1.12(@pnpm/logger@1001.0.1) '@pnpm/read-project-manifest': 1001.2.5(@pnpm/logger@1001.0.1) '@pnpm/types': 1001.3.0 - '@pnpm/workspace.read-manifest': 1000.2.10 + '@pnpm/workspace.read-manifest': 1000.3.0 better-path-resolve: 1.0.0 camelcase: 6.3.0 camelcase-keys: 6.2.2 @@ -16960,11 +17023,11 @@ snapshots: '@pnpm/logger': 1001.0.1 '@pnpm/types': 1001.3.0 - '@pnpm/create-cafs-store@1000.0.31(@pnpm/logger@1001.0.1)': + '@pnpm/create-cafs-store@1000.0.32(@pnpm/logger@1001.0.1)': dependencies: '@pnpm/exec.pkg-requires-build': 1000.0.16 '@pnpm/fetcher-base': 1001.2.2 - '@pnpm/fs.indexed-pkg-importer': 1000.1.24(@pnpm/logger@1001.0.1) + '@pnpm/fs.indexed-pkg-importer': 1000.1.25(@pnpm/logger@1001.0.1) '@pnpm/logger': 1001.0.1 '@pnpm/store-controller-types': 1004.5.1 '@pnpm/store.cafs': 1000.1.4 @@ -16996,10 +17059,10 @@ snapshots: '@pnpm/dedupe.types@1000.0.0': {} - '@pnpm/default-reporter@1002.1.11(@pnpm/logger@1001.0.1)': + '@pnpm/default-reporter@1002.1.13(@pnpm/logger@1001.0.1)': dependencies: '@pnpm/cli-meta': 1000.0.16 - '@pnpm/config': 1004.10.2(@pnpm/logger@1001.0.1) + '@pnpm/config': 1004.10.4(@pnpm/logger@1001.0.1) '@pnpm/core-loggers': 1001.0.9(@pnpm/logger@1001.0.1) '@pnpm/dedupe.issues-renderer': 1000.0.2 '@pnpm/dedupe.types': 1000.0.0 @@ -17021,17 +17084,17 @@ snapshots: stacktracey: 2.1.8 string-length: 4.0.2 - '@pnpm/default-resolver@1002.3.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/default-resolver@1002.3.7(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: '@pnpm/error': 1000.0.5 '@pnpm/fetching-types': 1000.2.1 '@pnpm/git-resolver': 1001.2.1(@pnpm/logger@1001.0.1) '@pnpm/local-resolver': 1002.1.12(@pnpm/logger@1001.0.1) - '@pnpm/node.resolver': 1001.0.20(@pnpm/logger@1001.0.1) - '@pnpm/npm-resolver': 1005.2.1(@pnpm/logger@1001.0.1) + '@pnpm/node.resolver': 1001.0.22(@pnpm/logger@1001.0.1) + '@pnpm/npm-resolver': 1005.2.2(@pnpm/logger@1001.0.1) '@pnpm/resolver-base': 1005.4.1 - '@pnpm/resolving.bun-resolver': 1005.0.8(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) - '@pnpm/resolving.deno-resolver': 1005.0.8(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/resolving.bun-resolver': 1005.0.10(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) + '@pnpm/resolving.deno-resolver': 1005.0.10(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@pnpm/tarball-resolver': 1002.2.1 transitivePeerDependencies: - '@pnpm/logger' @@ -17096,15 +17159,15 @@ snapshots: transitivePeerDependencies: - domexception - '@pnpm/fetching.binary-fetcher@1005.0.3(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))': + '@pnpm/fetching.binary-fetcher@1005.0.3(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))': dependencies: '@pnpm/error': 1000.0.5 '@pnpm/fetcher-base': 1001.2.2 '@pnpm/fetching-types': 1000.2.1 - '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0) + '@pnpm/worker': 1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0) adm-zip: 0.5.16 is-subdir: 1.2.0 - rename-overwrite: 6.0.3 + rename-overwrite: 6.0.6 ssri: 10.0.5 tempy: 1.0.1 transitivePeerDependencies: @@ -17125,9 +17188,9 @@ snapshots: '@pnpm/graceful-fs': 1000.1.0 '@pnpm/logger': 1001.0.1 path-temp: 2.1.1 - rename-overwrite: 6.0.3 + rename-overwrite: 6.0.6 - '@pnpm/fs.indexed-pkg-importer@1000.1.24(@pnpm/logger@1001.0.1)': + '@pnpm/fs.indexed-pkg-importer@1000.1.25(@pnpm/logger@1001.0.1)': dependencies: '@pnpm/core-loggers': 1001.0.9(@pnpm/logger@1001.0.1) '@pnpm/graceful-fs': 1000.1.0 @@ -17135,25 +17198,25 @@ snapshots: '@pnpm/store-controller-types': 1004.5.1 '@reflink/reflink': 0.1.19 '@zkochan/rimraf': 3.0.2 - fs-extra: 11.3.3 + fs-extra: 11.3.4 make-empty-dir: 3.0.2 p-limit: 3.1.0 path-temp: 2.1.1 - rename-overwrite: 6.0.3 + rename-overwrite: 6.0.6 sanitize-filename: 1.6.3 '@pnpm/fs.packlist@1000.0.0': dependencies: npm-packlist: 5.1.3 - '@pnpm/git-fetcher@1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/git-fetcher@1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: '@pnpm/error': 1000.0.5 '@pnpm/fetcher-base': 1001.2.2 '@pnpm/fs.packlist': 1000.0.0 '@pnpm/logger': 1001.0.1 '@pnpm/prepare-package': 1001.0.6(@pnpm/logger@1001.0.1)(typanion@3.14.0) - '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0) + '@pnpm/worker': 1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0) '@zkochan/rimraf': 3.0.2 execa: safe-execa@0.1.2 transitivePeerDependencies: @@ -17248,7 +17311,7 @@ snapshots: '@pnpm/logger@1001.0.1': dependencies: - bole: 5.0.27 + bole: 5.0.28 split2: 4.2.0 '@pnpm/manifest-utils@1002.0.4(@pnpm/logger@1001.0.1)': @@ -17303,15 +17366,15 @@ snapshots: transitivePeerDependencies: - domexception - '@pnpm/node.fetcher@1001.0.24(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/node.fetcher@1001.0.26(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: - '@pnpm/create-cafs-store': 1000.0.31(@pnpm/logger@1001.0.1) + '@pnpm/create-cafs-store': 1000.0.32(@pnpm/logger@1001.0.1) '@pnpm/crypto.shasums-file': 1001.0.4 '@pnpm/error': 1000.0.5 '@pnpm/fetching-types': 1000.2.1 - '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) - '@pnpm/node.resolver': 1001.0.20(@pnpm/logger@1001.0.1) - '@pnpm/tarball-fetcher': 1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) + '@pnpm/node.resolver': 1001.0.22(@pnpm/logger@1001.0.1) + '@pnpm/tarball-fetcher': 1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) detect-libc: 2.1.2 transitivePeerDependencies: - '@pnpm/logger' @@ -17320,9 +17383,9 @@ snapshots: - supports-color - typanion - '@pnpm/node.resolver@1001.0.20(@pnpm/logger@1001.0.1)': + '@pnpm/node.resolver@1001.0.22(@pnpm/logger@1001.0.1)': dependencies: - '@pnpm/config': 1004.10.2(@pnpm/logger@1001.0.1) + '@pnpm/config': 1004.10.4(@pnpm/logger@1001.0.1) '@pnpm/constants': 1001.3.1 '@pnpm/crypto.shasums-file': 1001.0.4 '@pnpm/error': 1000.0.5 @@ -17345,7 +17408,7 @@ snapshots: dependencies: '@pnpm/byline': 1.0.0 '@pnpm/error': 1000.0.5 - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/fslib': 3.1.5 '@yarnpkg/shell': 4.0.0(typanion@3.14.0) node-gyp: 11.5.0 resolve-from: 5.0.0 @@ -17357,7 +17420,7 @@ snapshots: - supports-color - typanion - '@pnpm/npm-resolver@1005.2.1(@pnpm/logger@1001.0.1)': + '@pnpm/npm-resolver@1005.2.2(@pnpm/logger@1001.0.1)': dependencies: '@pnpm/constants': 1001.3.1 '@pnpm/core-loggers': 1001.0.9(@pnpm/logger@1001.0.1) @@ -17384,7 +17447,7 @@ snapshots: parse-npm-tarball-url: 4.0.0 path-temp: 2.1.1 ramda: '@pnpm/ramda@0.28.1' - rename-overwrite: 6.0.3 + rename-overwrite: 6.0.6 semver: 7.7.4 semver-utils: 1.1.4 ssri: 10.0.5 @@ -17416,7 +17479,7 @@ snapshots: mem: 8.1.1 semver: 7.7.4 - '@pnpm/package-requester@1011.2.3(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))': + '@pnpm/package-requester@1011.2.3(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))': dependencies: '@pnpm/core-loggers': 1001.0.9(@pnpm/logger@1001.0.1) '@pnpm/dependency-path': 1001.1.10 @@ -17431,7 +17494,7 @@ snapshots: '@pnpm/store-controller-types': 1004.5.1 '@pnpm/store.cafs': 1000.1.4 '@pnpm/types': 1001.3.0 - '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0) + '@pnpm/worker': 1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0) detect-libc: 2.1.2 p-defer: 3.0.0 p-limit: 3.1.0 @@ -17441,19 +17504,19 @@ snapshots: semver: 7.7.4 ssri: 10.0.5 - '@pnpm/package-store@1007.1.4(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))': + '@pnpm/package-store@1007.1.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))': dependencies: - '@pnpm/create-cafs-store': 1000.0.31(@pnpm/logger@1001.0.1) + '@pnpm/create-cafs-store': 1000.0.32(@pnpm/logger@1001.0.1) '@pnpm/crypto.hash': 1000.2.2 '@pnpm/error': 1000.0.5 '@pnpm/fetcher-base': 1001.2.2 '@pnpm/logger': 1001.0.1 - '@pnpm/package-requester': 1011.2.3(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) + '@pnpm/package-requester': 1011.2.3(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) '@pnpm/resolver-base': 1005.4.1 '@pnpm/store-controller-types': 1004.5.1 '@pnpm/store.cafs': 1000.1.4 '@pnpm/types': 1001.3.0 - '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0) + '@pnpm/worker': 1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0) '@zkochan/rimraf': 3.0.2 is-subdir: 1.2.0 load-json-file: 6.2.0 @@ -17557,20 +17620,20 @@ snapshots: dependencies: '@pnpm/types': 1001.3.0 - '@pnpm/resolving.bun-resolver@1005.0.8(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/resolving.bun-resolver@1005.0.10(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: '@pnpm/constants': 1001.3.1 '@pnpm/crypto.shasums-file': 1001.0.4 '@pnpm/error': 1000.0.5 '@pnpm/fetcher-base': 1001.2.2 '@pnpm/fetching-types': 1000.2.1 - '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) - '@pnpm/node.fetcher': 1001.0.24(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) - '@pnpm/npm-resolver': 1005.2.1(@pnpm/logger@1001.0.1) + '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) + '@pnpm/node.fetcher': 1001.0.26(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) + '@pnpm/npm-resolver': 1005.2.2(@pnpm/logger@1001.0.1) '@pnpm/resolver-base': 1005.4.1 '@pnpm/types': 1001.3.0 '@pnpm/util.lex-comparator': 3.0.2 - '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0) + '@pnpm/worker': 1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0) semver: 7.7.4 transitivePeerDependencies: - '@pnpm/logger' @@ -17578,20 +17641,20 @@ snapshots: - supports-color - typanion - '@pnpm/resolving.deno-resolver@1005.0.8(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/resolving.deno-resolver@1005.0.10(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: '@pnpm/constants': 1001.3.1 '@pnpm/crypto.shasums-file': 1001.0.4 '@pnpm/error': 1000.0.5 '@pnpm/fetcher-base': 1001.2.2 '@pnpm/fetching-types': 1000.2.1 - '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) - '@pnpm/node.fetcher': 1001.0.24(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) - '@pnpm/npm-resolver': 1005.2.1(@pnpm/logger@1001.0.1) + '@pnpm/fetching.binary-fetcher': 1005.0.3(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) + '@pnpm/node.fetcher': 1001.0.26(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) + '@pnpm/npm-resolver': 1005.2.2(@pnpm/logger@1001.0.1) '@pnpm/resolver-base': 1005.4.1 '@pnpm/types': 1001.3.0 '@pnpm/util.lex-comparator': 3.0.2 - '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0) + '@pnpm/worker': 1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0) semver: 7.7.4 transitivePeerDependencies: - '@pnpm/logger' @@ -17620,14 +17683,14 @@ snapshots: - domexception - supports-color - '@pnpm/store-connection-manager@1002.3.16(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/store-connection-manager@1002.3.18(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: '@pnpm/cli-meta': 1000.0.16 - '@pnpm/client': 1001.1.21(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) - '@pnpm/config': 1004.10.2(@pnpm/logger@1001.0.1) + '@pnpm/client': 1001.1.23(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) + '@pnpm/config': 1004.10.4(@pnpm/logger@1001.0.1) '@pnpm/error': 1000.0.5 '@pnpm/logger': 1001.0.1 - '@pnpm/package-store': 1007.1.4(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)) + '@pnpm/package-store': 1007.1.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)) '@pnpm/server': 1001.0.20(@pnpm/logger@1001.0.1) '@pnpm/store-path': 1000.0.5 '@zkochan/diable': 1.0.2 @@ -17665,7 +17728,7 @@ snapshots: is-gzip: 2.0.0 is-subdir: 1.2.0 p-limit: 3.1.0 - rename-overwrite: 6.0.3 + rename-overwrite: 6.0.6 ssri: 10.0.5 strip-bom: 4.0.0 @@ -17676,7 +17739,7 @@ snapshots: '@pnpm/types': 1001.3.0 symlink-dir: 6.0.5 - '@pnpm/tarball-fetcher@1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/tarball-fetcher@1006.0.5(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: '@pnpm/core-loggers': 1001.0.9(@pnpm/logger@1001.0.1) '@pnpm/error': 1000.0.5 @@ -17687,13 +17750,13 @@ snapshots: '@pnpm/logger': 1001.0.1 '@pnpm/prepare-package': 1001.0.6(@pnpm/logger@1001.0.1)(typanion@3.14.0) '@pnpm/types': 1001.3.0 - '@pnpm/worker': 1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0) + '@pnpm/worker': 1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0) '@zkochan/retry': 0.2.0 lodash.throttle: 4.1.1 p-map-values: 1.0.0 path-temp: 2.1.1 ramda: '@pnpm/ramda@0.28.1' - rename-overwrite: 6.0.3 + rename-overwrite: 6.0.6 transitivePeerDependencies: - domexception - supports-color @@ -17720,10 +17783,10 @@ snapshots: dependencies: isexe: 2.0.0 - '@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0)': + '@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0)': dependencies: '@pnpm/cafs-types': 1000.1.0 - '@pnpm/create-cafs-store': 1000.0.31(@pnpm/logger@1001.0.1) + '@pnpm/create-cafs-store': 1000.0.32(@pnpm/logger@1001.0.1) '@pnpm/crypto.polyfill': 1000.1.0 '@pnpm/error': 1000.0.5 '@pnpm/exec.pkg-requires-build': 1000.0.16 @@ -17732,16 +17795,16 @@ snapshots: '@pnpm/logger': 1001.0.1 '@pnpm/store.cafs': 1000.1.4 '@pnpm/symlink-dependency': 1000.0.17(@pnpm/logger@1001.0.1) - '@rushstack/worker-pool': 0.4.9(@types/node@25.3.0) + '@rushstack/worker-pool': 0.4.9(@types/node@25.5.0) is-windows: 1.0.2 load-json-file: 6.2.0 p-limit: 3.1.0 transitivePeerDependencies: - '@types/node' - '@pnpm/workspace.find-packages@1000.0.62(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0)': + '@pnpm/workspace.find-packages@1000.0.64(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0)': dependencies: - '@pnpm/cli-utils': 1001.3.7(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.5(@pnpm/logger@1001.0.1)(@types/node@25.3.0))(typanion@3.14.0) + '@pnpm/cli-utils': 1001.3.9(@pnpm/logger@1001.0.1)(@pnpm/worker@1000.6.6(@pnpm/logger@1001.0.1)(@types/node@25.5.0))(typanion@3.14.0) '@pnpm/constants': 1001.3.1 '@pnpm/fs.find-packages': 1000.0.23(@pnpm/logger@1001.0.1) '@pnpm/logger': 1001.0.1 @@ -17753,18 +17816,20 @@ snapshots: - supports-color - typanion - '@pnpm/workspace.manifest-writer@1001.2.0': + '@pnpm/workspace.manifest-writer@1001.3.0': dependencies: '@pnpm/catalogs.types': 1000.0.0 '@pnpm/constants': 1001.3.1 '@pnpm/lockfile.types': 1002.0.9 '@pnpm/object.key-sorting': 1000.0.1 '@pnpm/types': 1001.3.0 - '@pnpm/workspace.read-manifest': 1000.2.10 + '@pnpm/workspace.read-manifest': 1000.3.0 + '@pnpm/yaml.document-sync': 1000.0.0 ramda: '@pnpm/ramda@0.28.1' - write-yaml-file: 5.0.0 + write-file-atomic: 5.0.1 + yaml: 2.8.3 - '@pnpm/workspace.read-manifest@1000.2.10': + '@pnpm/workspace.read-manifest@1000.3.0': dependencies: '@pnpm/constants': 1001.3.1 '@pnpm/error': 1000.0.5 @@ -17781,6 +17846,10 @@ snapshots: write-file-atomic: 5.0.1 write-yaml-file: 5.0.0 + '@pnpm/yaml.document-sync@1000.0.0': + dependencies: + yaml: 2.8.3 + '@polka/url@1.0.0-next.29': {} '@reflink/reflink-darwin-arm64@0.1.19': @@ -17820,173 +17889,227 @@ snapshots: '@reteps/dockerfmt@0.3.6': {} - '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/binding-android-arm64@1.0.0-rc.10': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.10': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.10': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.10': {} '@rolldown/pluginutils@1.0.0-rc.3': {} - '@rollup/plugin-babel@6.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.49.0)': + '@rolldown/pluginutils@1.0.0-rc.7': {} + + '@rollup/plugin-babel@6.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 - '@rollup/pluginutils': 5.3.0(rollup@4.49.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) optionalDependencies: '@types/babel__core': 7.20.5 - rollup: 4.49.0 + rollup: 4.60.0 transitivePeerDependencies: - supports-color - '@rollup/plugin-inject@5.0.5(rollup@4.49.0)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.49.0) - estree-walker: 2.0.2 - magic-string: 0.30.21 - optionalDependencies: - rollup: 4.49.0 - - '@rollup/pluginutils@5.3.0(rollup@4.49.0)': + '@rollup/pluginutils@5.3.0(rollup@4.60.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.49.0 + rollup: 4.60.0 + + '@rollup/rollup-android-arm-eabi@4.60.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.49.0': + '@rollup/rollup-android-arm64@4.60.0': optional: true - '@rollup/rollup-android-arm64@4.49.0': + '@rollup/rollup-darwin-arm64@4.60.0': optional: true - '@rollup/rollup-darwin-arm64@4.49.0': + '@rollup/rollup-darwin-x64@4.60.0': optional: true - '@rollup/rollup-darwin-x64@4.49.0': + '@rollup/rollup-freebsd-arm64@4.60.0': optional: true - '@rollup/rollup-freebsd-arm64@4.49.0': + '@rollup/rollup-freebsd-x64@4.60.0': optional: true - '@rollup/rollup-freebsd-x64@4.49.0': + '@rollup/rollup-linux-arm-gnueabihf@4.60.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.49.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.49.0': + '@rollup/rollup-linux-arm64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.49.0': + '@rollup/rollup-linux-arm64-musl@4.60.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.49.0': + '@rollup/rollup-linux-loong64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.49.0': + '@rollup/rollup-linux-loong64-musl@4.60.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.49.0': + '@rollup/rollup-linux-ppc64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.49.0': + '@rollup/rollup-linux-ppc64-musl@4.60.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.49.0': + '@rollup/rollup-linux-riscv64-gnu@4.60.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.49.0': + '@rollup/rollup-linux-riscv64-musl@4.60.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.49.0': + '@rollup/rollup-linux-s390x-gnu@4.60.0': optional: true '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.49.0': + '@rollup/rollup-linux-x64-gnu@4.60.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.49.0': + '@rollup/rollup-win32-arm64-msvc@4.60.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.49.0': + '@rollup/rollup-win32-ia32-msvc@4.60.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.49.0': + '@rollup/rollup-win32-x64-gnu@4.60.0': optional: true - '@rtsao/scc@1.1.0': {} + '@rollup/rollup-win32-x64-msvc@4.60.0': + optional: true - '@rushstack/node-core-library@5.20.3(@types/node@25.3.0)': + '@rushstack/node-core-library@5.20.3(@types/node@25.5.0)': dependencies: ajv: 8.18.0 ajv-draft-04: 1.0.0(ajv@8.18.0) ajv-formats: 3.0.1(ajv@8.18.0) - fs-extra: 11.3.3 + fs-extra: 11.3.4 import-lazy: 4.0.0 jju: 1.4.0 resolve: 1.22.11 semver: 7.5.4 optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@rushstack/problem-matcher@0.2.1(@types/node@25.3.0)': + '@rushstack/problem-matcher@0.2.1(@types/node@25.5.0)': optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@rushstack/rig-package@0.7.2': dependencies: resolve: 1.22.11 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.22.3(@types/node@25.3.0)': + '@rushstack/terminal@0.22.3(@types/node@25.5.0)': dependencies: - '@rushstack/node-core-library': 5.20.3(@types/node@25.3.0) - '@rushstack/problem-matcher': 0.2.1(@types/node@25.3.0) + '@rushstack/node-core-library': 5.20.3(@types/node@25.5.0) + '@rushstack/problem-matcher': 0.2.1(@types/node@25.5.0) supports-color: 8.1.1 optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@rushstack/ts-command-line@5.3.3(@types/node@25.3.0)': + '@rushstack/ts-command-line@5.3.3(@types/node@25.5.0)': dependencies: - '@rushstack/terminal': 0.22.3(@types/node@25.3.0) + '@rushstack/terminal': 0.22.3(@types/node@25.5.0) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@rushstack/worker-pool@0.4.9(@types/node@25.3.0)': + '@rushstack/worker-pool@0.4.9(@types/node@25.5.0)': optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 - '@scalar/helpers@0.2.16': {} + '@scalar/helpers@0.2.18': {} - '@scalar/json-magic@0.11.5': + '@scalar/json-magic@0.11.7': dependencies: - '@scalar/helpers': 0.2.16 + '@scalar/helpers': 0.2.18 pathe: 2.0.3 - yaml: 2.8.2 + yaml: 2.8.3 - '@scalar/openapi-parser@0.24.14': + '@scalar/openapi-parser@0.24.17': dependencies: - '@scalar/helpers': 0.2.16 - '@scalar/json-magic': 0.11.5 - '@scalar/openapi-types': 0.5.3 - '@scalar/openapi-upgrader': 0.1.8 + '@scalar/helpers': 0.2.18 + '@scalar/json-magic': 0.11.7 + '@scalar/openapi-types': 0.5.4 + '@scalar/openapi-upgrader': 0.1.11 ajv: 8.18.0 ajv-draft-04: 1.0.0(ajv@8.18.0) ajv-formats: 3.0.1(ajv@8.18.0) jsonpointer: 5.0.1 leven: 4.1.0 - yaml: 2.8.2 + yaml: 2.8.3 - '@scalar/openapi-types@0.5.3': + '@scalar/openapi-types@0.5.4': dependencies: zod: 4.3.6 - '@scalar/openapi-upgrader@0.1.8': + '@scalar/openapi-upgrader@0.1.11': dependencies: - '@scalar/openapi-types': 0.5.3 + '@scalar/openapi-types': 0.5.4 '@scarf/scarf@1.4.0': {} @@ -18002,8 +18125,8 @@ snapshots: '@secretlint/resolver': 10.2.2 '@secretlint/types': 10.2.2 ajv: 8.18.0 - debug: 4.4.3(supports-color@8.1.1) - rc-config-loader: 4.1.3 + debug: 4.4.3 + rc-config-loader: 4.1.4 transitivePeerDependencies: - supports-color @@ -18011,7 +18134,7 @@ snapshots: dependencies: '@secretlint/profiler': 10.2.2 '@secretlint/types': 10.2.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 structured-source: 4.0.0 transitivePeerDependencies: - supports-color @@ -18024,9 +18147,9 @@ snapshots: '@textlint/module-interop': 15.5.2 '@textlint/types': 15.5.2 chalk: 5.6.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 pluralize: 8.0.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 table: 6.9.0 terminal-link: 4.0.0 transitivePeerDependencies: @@ -18040,7 +18163,7 @@ snapshots: '@secretlint/profiler': 10.2.2 '@secretlint/source-creator': 10.2.2 '@secretlint/types': 10.2.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 p-map: 7.0.4 transitivePeerDependencies: - supports-color @@ -18073,30 +18196,68 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.23.0': + '@shikijs/core@4.0.2': dependencies: - '@shikijs/types': 3.23.0 + '@shikijs/primitive': 4.0.2 + '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.4 - + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-javascript@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + '@shikijs/engine-oniguruma@3.23.0': dependencies: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/engine-oniguruma@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/langs@3.23.0': dependencies: '@shikijs/types': 3.23.0 + '@shikijs/langs@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + + '@shikijs/primitive@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/themes@3.23.0': dependencies: '@shikijs/types': 3.23.0 + '@shikijs/themes@4.0.2': + dependencies: + '@shikijs/types': 4.0.2 + '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + '@shikijs/types@4.0.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@10.0.2': {} '@sigstore/bundle@3.1.0': @@ -18171,25 +18332,25 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@storybook/builder-vite@10.2.12(esbuild@0.27.3)(rollup@4.49.0)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2))': + '@storybook/builder-vite@10.3.3(esbuild@0.27.4)(rollup@4.60.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@storybook/csf-plugin': 10.2.12(esbuild@0.27.3)(rollup@4.49.0)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@storybook/csf-plugin': 10.3.3(esbuild@0.27.4)(rollup@4.60.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/cli@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@storybook/cli@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@storybook/codemod': 10.2.12(@testing-library/dom@10.4.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@storybook/codemod': 10.3.3(@testing-library/dom@10.4.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/semver': 7.7.1 commander: 14.0.3 - create-storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + create-storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) jscodeshift: 0.15.2 - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-dedent: 2.2.0 transitivePeerDependencies: - '@babel/preset-env' @@ -18201,14 +18362,14 @@ snapshots: - supports-color - utf-8-validate - '@storybook/codemod@10.2.12(@testing-library/dom@10.4.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@storybook/codemod@10.3.3(@testing-library/dom@10.4.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.6 - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 jscodeshift: 0.15.2 prettier: 3.8.1 - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tiny-invariant: 1.3.3 tinyglobby: 0.2.15 transitivePeerDependencies: @@ -18220,14 +18381,14 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@10.2.12(esbuild@0.27.3)(rollup@4.49.0)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2))': + '@storybook/csf-plugin@10.3.3(esbuild@0.27.4)(rollup@4.60.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.27.3 - rollup: 4.49.0 - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + esbuild: 0.27.4 + rollup: 4.60.0 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) '@storybook/global@5.0.0': {} @@ -18236,27 +18397,27 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@storybook/react-dom-shim@10.2.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': + '@storybook/react-dom-shim@10.3.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@storybook/react-vite@10.2.12(esbuild@0.27.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.49.0)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2))': + '@storybook/react-vite@10.3.3(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.60.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) - '@rollup/pluginutils': 5.3.0(rollup@4.49.0) - '@storybook/builder-vite': 10.2.12(esbuild@0.27.3)(rollup@4.49.0)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) - '@storybook/react': 10.2.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) + '@storybook/builder-vite': 10.3.3(esbuild@0.27.4)(rollup@4.60.0)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) + '@storybook/react': 10.3.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) empathic: 2.0.0 magic-string: 0.30.21 react: 19.2.4 - react-docgen: 8.0.2 + react-docgen: 8.0.3 react-dom: 19.2.4(react@19.2.4) resolve: 1.22.11 - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tsconfig-paths: 4.2.0 - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - esbuild - rollup @@ -18264,14 +18425,15 @@ snapshots: - typescript - webpack - '@storybook/react@10.2.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': + '@storybook/react@10.3.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.2.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + '@storybook/react-dom-shim': 10.3.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) react: 19.2.4 - react-docgen: 8.0.2 + react-docgen: 8.0.3 + react-docgen-typescript: 2.4.0(typescript@5.9.3) react-dom: 19.2.4(react@19.2.4) - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -18329,7 +18491,7 @@ snapshots: '@textlint/resolver': 15.5.2 '@textlint/types': 15.5.2 chalk: 4.1.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 js-yaml: 4.1.1 lodash: 4.17.23 pluralize: 2.0.0 @@ -18360,11 +18522,16 @@ snapshots: '@tufjs/canonical-json': 2.0.0 minimatch: 10.2.4 + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/argparse@1.0.38': {} '@types/aria-query@5.0.4': {} - '@types/aws-lambda@8.10.160': {} + '@types/aws-lambda@8.10.161': {} '@types/babel__code-frame@7.27.0': {} @@ -18392,7 +18559,7 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/braces@3.0.5': {} @@ -18400,7 +18567,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.2.0 '@types/keyv': 3.1.4 - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/responselike': 1.0.3 '@types/chai@5.2.3': @@ -18410,11 +18577,11 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/cross-spawn@6.0.6': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/d3-array@3.2.2': {} @@ -18557,8 +18724,8 @@ snapshots: '@types/express-serve-static-core@5.1.1': dependencies: - '@types/node': 25.3.0 - '@types/qs': 6.14.0 + '@types/node': 25.5.0 + '@types/qs': 6.15.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -18584,11 +18751,9 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} - '@types/keyv@3.1.4': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/mdast@4.0.4': dependencies: @@ -18600,15 +18765,13 @@ snapshots: dependencies: '@types/braces': 3.0.5 - '@types/mocha@10.0.10': {} - '@types/morgan@1.9.10': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/ms@2.1.0': {} - '@types/multer@2.0.0': + '@types/multer@2.1.0': dependencies: '@types/express': 5.0.6 @@ -18618,13 +18781,15 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node@17.0.45': {} - '@types/node@18.19.130': dependencies: undici-types: 5.26.5 - '@types/node@25.3.0': + '@types/node@24.12.0': + dependencies: + undici-types: 7.16.0 + + '@types/node@25.5.0': dependencies: undici-types: 7.18.2 @@ -18632,12 +18797,12 @@ snapshots: '@types/plist@3.0.5': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 xmlbuilder: 15.1.1 '@types/prismjs@1.26.6': {} - '@types/qs@6.14.0': {} + '@types/qs@6.15.0': {} '@types/range-parser@1.2.7': {} @@ -18657,28 +18822,28 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/sarif@2.1.7': {} '@types/sax@1.2.7': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/semver@7.7.1': {} '@types/send@1.2.1': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/ssri@7.1.5': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/swagger-ui-dist@3.30.6': {} @@ -18687,7 +18852,7 @@ snapshots: '@types/express': 5.0.6 '@types/serve-static': 2.2.0 - '@types/swagger-ui@5.21.1': {} + '@types/swagger-ui@5.32.0': {} '@types/treeify@1.0.3': {} @@ -18698,7 +18863,7 @@ snapshots: '@types/unist@3.0.3': {} - '@types/vscode@1.109.0': {} + '@types/vscode@1.110.0': {} '@types/whatwg-mimetype@3.0.2': {} @@ -18706,11 +18871,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/xml2js@0.4.14': dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/yargs-parser@21.0.3': {} @@ -18720,15 +18885,15 @@ snapshots: '@types/yoga-layout@1.9.2': {} - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.1 - eslint: 10.0.2 + '@typescript-eslint/parser': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 + eslint: 10.0.3 ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -18736,34 +18901,34 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.56.1 - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.0.2 + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.0 + debug: 4.4.3 + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) - '@typescript-eslint/types': 8.56.1 - debug: 4.4.3(supports-color@8.1.1) + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/rule-tester@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/parser': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) ajv: 6.14.0 - eslint: 10.0.2 + eslint: 10.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.7.4 @@ -18771,36 +18936,36 @@ snapshots: - supports-color - typescript - '@typescript-eslint/scope-manager@8.56.1': + '@typescript-eslint/scope-manager@8.57.0': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 - '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - debug: 4.4.3(supports-color@8.1.1) - eslint: 10.0.2 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + debug: 4.4.3 + eslint: 10.0.3 ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.56.1': {} + '@typescript-eslint/types@8.57.0': {} - '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 - debug: 4.4.3(supports-color@8.1.1) + '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/visitor-keys': 8.57.0 + debug: 4.4.3 minimatch: 10.2.4 semver: 7.7.4 tinyglobby: 0.2.15 @@ -18809,23 +18974,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@10.0.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.0(eslint@10.0.3)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - eslint: 10.0.2 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.56.1': + '@typescript-eslint/visitor-keys@8.57.0': dependencies: - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/types': 8.57.0 eslint-visitor-keys: 5.0.1 - '@typespec/ts-http-runtime@0.3.3': + '@typespec/ts-http-runtime@0.3.4': dependencies: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -18835,19 +19000,12 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -18855,32 +19013,42 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.18(vitest@4.0.18)': + '@vitejs/plugin-react@6.0.1(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) + + '@vitejs/plugin-react@6.0.1(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) + + '@vitest/coverage-v8@4.1.0(vitest@4.1.0)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.18 - ast-v8-to-istanbul: 0.3.11 + '@vitest/utils': 4.1.0 + ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.2.0 magicast: 0.5.2 obug: 2.1.1 - std-env: 3.10.0 - tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + std-env: 4.0.0 + tinyrainbow: 3.1.0 + vitest: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) - '@vitest/eslint-plugin@1.6.9(eslint@10.0.2)(typescript@5.9.3)(vitest@4.0.18)': + '@vitest/eslint-plugin@1.6.12(eslint@10.0.3)(typescript@5.9.3)(vitest@4.1.0)': dependencies: - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - eslint: 10.0.2 + '@typescript-eslint/scope-manager': 8.57.0 + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + eslint: 10.0.3 optionalDependencies: typescript: 5.9.3 - vitest: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) transitivePeerDependencies: - supports-color @@ -18892,39 +19060,48 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.0.18': + '@vitest/expect@4.1.0': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 chai: 6.2.2 - tinyrainbow: 3.0.3 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@vitest/spy': 4.1.0 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3))': dependencies: - '@vitest/spy': 4.0.18 + '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.0.18': + '@vitest/pretty-format@4.1.0': dependencies: - tinyrainbow: 3.0.3 + tinyrainbow: 3.1.0 - '@vitest/runner@4.0.18': + '@vitest/runner@4.1.0': dependencies: - '@vitest/utils': 4.0.18 + '@vitest/utils': 4.1.0 pathe: 2.0.3 - '@vitest/snapshot@4.0.18': + '@vitest/snapshot@4.1.0': dependencies: - '@vitest/pretty-format': 4.0.18 + '@vitest/pretty-format': 4.1.0 + '@vitest/utils': 4.1.0 magic-string: 0.30.21 pathe: 2.0.3 @@ -18932,18 +19109,18 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.0.18': {} + '@vitest/spy@4.1.0': {} - '@vitest/ui@4.0.18(vitest@4.0.18)': + '@vitest/ui@4.1.0(vitest@4.1.0)': dependencies: - '@vitest/utils': 4.0.18 + '@vitest/utils': 4.1.0 fflate: 0.8.2 - flatted: 3.3.3 + flatted: 3.4.0 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2) + tinyrainbow: 3.1.0 + vitest: 4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/utils@3.2.4': dependencies: @@ -18951,10 +19128,11 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.0.18': + '@vitest/utils@4.1.0': dependencies: - '@vitest/pretty-format': 4.0.18 - tinyrainbow: 3.0.3 + '@vitest/pretty-format': 4.1.0 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 '@volar/kit@2.4.28(typescript@5.9.3)': dependencies: @@ -19004,7 +19182,7 @@ snapshots: vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 - '@vscode/extension-telemetry@1.5.0(tslib@2.8.1)': + '@vscode/extension-telemetry@1.5.1(tslib@2.8.1)': dependencies: '@microsoft/1ds-core-js': 4.3.11(tslib@2.8.1) '@microsoft/1ds-post-js': 4.3.11(tslib@2.8.1) @@ -19024,10 +19202,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@vscode/test-web@0.0.79': + '@vscode/test-web@0.0.80': dependencies: '@koa/cors': 5.0.0 - '@koa/router': 15.3.0(koa@3.1.2) + '@koa/router': 15.3.1(koa@3.1.2) '@playwright/browser-chromium': 1.58.2 gunzip-maybe: 1.4.2 http-proxy-agent: 7.0.2 @@ -19038,7 +19216,7 @@ snapshots: koa-static: 5.0.0 minimist: 1.2.8 playwright: 1.58.2 - tar-fs: 3.1.1 + tar-fs: 3.1.2 tinyglobby: 0.2.15 vscode-uri: 3.1.0 transitivePeerDependencies: @@ -19122,18 +19300,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.5.29': + '@vue/compiler-core@3.5.30': dependencies: '@babel/parser': 7.29.0 - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.29': + '@vue/compiler-dom@3.5.30': dependencies: - '@vue/compiler-core': 3.5.29 - '@vue/shared': 3.5.29 + '@vue/compiler-core': 3.5.30 + '@vue/shared': 3.5.30 '@vue/compiler-vue2@2.7.16': dependencies: @@ -19143,9 +19321,9 @@ snapshots: '@vue/language-core@2.2.0(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.29 + '@vue/compiler-dom': 3.5.30 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 alien-signals: 0.4.14 minimatch: 9.0.9 muggle-string: 0.4.1 @@ -19153,45 +19331,45 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/reactivity@3.5.29': + '@vue/reactivity@3.5.30': dependencies: - '@vue/shared': 3.5.29 + '@vue/shared': 3.5.30 - '@vue/shared@3.5.29': {} + '@vue/shared@3.5.30': {} '@xmldom/xmldom@0.8.11': {} - '@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0))': + '@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.4) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.5) '@yarnpkg/parsers': 3.0.3 - '@yarnpkg/plugin-catalog': 1.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-compat': 4.0.12(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-patch@4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-constraints': 4.0.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-dlx': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-essentials': 4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-exec': 3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/plugin-file': 3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-github': 3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-http': 3.0.3(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/plugin-init': 4.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-interactive-tools': 4.0.3(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)))(typanion@3.14.0) - '@yarnpkg/plugin-jsr': 1.1.1(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/plugin-link': 3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/plugin-nm': 4.0.8(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-npm': 3.4.0(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-npm-cli': 4.4.0(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-npm@3.4.0(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-patch': 4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-pnp': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-pnpm': 2.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-stage': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-typescript': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)))(typanion@3.14.0) - '@yarnpkg/plugin-version': 4.2.0(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-workspace-tools': 4.1.6(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-catalog': 1.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-compat': 4.0.12(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-patch@4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-constraints': 4.0.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-dlx': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-essentials': 4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-exec': 3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/plugin-file': 3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-github': 3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-http': 3.0.3(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/plugin-init': 4.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-interactive-tools': 4.1.0(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))) + '@yarnpkg/plugin-jsr': 1.1.1(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/plugin-link': 3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/plugin-nm': 4.0.8(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-npm': 3.4.1(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-npm-cli': 4.4.1(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-npm@3.4.1(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-patch': 4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-pnp': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-pnpm': 2.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-stage': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-typescript': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)))(typanion@3.14.0) + '@yarnpkg/plugin-version': 4.2.0(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-workspace-tools': 4.1.7(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) '@yarnpkg/shell': 4.1.3(typanion@3.14.0) ci-info: 4.4.0 clipanion: 4.0.0-rc.4(typanion@3.14.0) @@ -19204,13 +19382,13 @@ snapshots: - supports-color - utf-8-validate - '@yarnpkg/core@4.5.0(typanion@3.14.0)': + '@yarnpkg/core@4.6.0(typanion@3.14.0)': dependencies: '@arcanis/slice-ansi': 1.1.1 '@types/semver': 7.7.1 '@types/treeify': 1.0.3 - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.4) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.5) '@yarnpkg/parsers': 3.0.3 '@yarnpkg/shell': 4.1.3(typanion@3.14.0) camelcase: 5.3.1 @@ -19220,7 +19398,7 @@ snapshots: cross-spawn: 7.0.6 diff: 5.2.2 dotenv: 16.6.1 - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 fast-glob: 3.3.3 got: 11.8.6 hpagent: 1.2.0 @@ -19228,37 +19406,37 @@ snapshots: p-limit: 2.3.0 semver: 7.7.4 strip-ansi: 6.0.1 - tar: 6.2.1 + tar: 7.5.11 tinylogic: 2.0.0 treeify: 1.1.0 tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/extensions@2.0.6(@yarnpkg/core@4.5.0(typanion@3.14.0))': + '@yarnpkg/extensions@2.0.6(@yarnpkg/core@4.6.0(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) - '@yarnpkg/fslib@3.1.4': + '@yarnpkg/fslib@3.1.5': dependencies: tslib: 2.8.1 - '@yarnpkg/libui@3.0.2(ink@3.2.0(@types/react@19.2.14)(react@17.0.2))(react@17.0.2)': + '@yarnpkg/libui@3.1.0(ink@3.2.0(@types/react@19.2.14)(react@17.0.2))(react@17.0.2)': dependencies: ink: 3.2.0(@types/react@19.2.14)(react@19.2.4) react: 17.0.2 tslib: 2.8.1 - '@yarnpkg/libzip@3.2.2(@yarnpkg/fslib@3.1.4)': + '@yarnpkg/libzip@3.2.2(@yarnpkg/fslib@3.1.5)': dependencies: '@types/emscripten': 1.41.5 - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/fslib': 3.1.5 tslib: 2.8.1 '@yarnpkg/nm@4.0.7(typanion@3.14.0)': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 '@yarnpkg/pnp': 4.1.3 transitivePeerDependencies: - typanion @@ -19268,111 +19446,111 @@ snapshots: js-yaml: 3.14.2 tslib: 2.8.1 - '@yarnpkg/plugin-catalog@1.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))': + '@yarnpkg/plugin-catalog@1.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) tslib: 2.8.1 - '@yarnpkg/plugin-compat@4.0.12(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-patch@4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))': + '@yarnpkg/plugin-compat@4.0.12(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-patch@4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/extensions': 2.0.6(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/plugin-patch': 4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/extensions': 2.0.6(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/plugin-patch': 4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-constraints@4.0.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-constraints@4.0.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 clipanion: 4.0.0-rc.4(typanion@3.14.0) - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 tau-prolog: 0.2.81 tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-dlx@4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-dlx@4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 clipanion: 4.0.0-rc.4(typanion@3.14.0) tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-essentials@4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))': + '@yarnpkg/plugin-essentials@4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 '@yarnpkg/parsers': 3.0.3 - '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) ci-info: 4.4.0 clipanion: 4.0.0-rc.4(typanion@3.14.0) enquirer: 2.4.1 - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 micromatch: 4.0.8 semver: 7.7.4 tslib: 2.8.1 typanion: 3.14.0 - '@yarnpkg/plugin-exec@3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0))': + '@yarnpkg/plugin-exec@3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 tslib: 2.8.1 - '@yarnpkg/plugin-file@3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0))': + '@yarnpkg/plugin-file@3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.4) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.5) tslib: 2.8.1 - '@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: '@types/semver': 7.7.1 - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 clipanion: 4.0.0-rc.4(typanion@3.14.0) - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 git-url-parse: 13.1.1 semver: 7.7.4 tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-github@3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))': + '@yarnpkg/plugin-github@3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) tslib: 2.8.1 - '@yarnpkg/plugin-http@3.0.3(@yarnpkg/core@4.5.0(typanion@3.14.0))': + '@yarnpkg/plugin-http@3.0.3(@yarnpkg/core@4.6.0(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) tslib: 2.8.1 - '@yarnpkg/plugin-init@4.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-init@4.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 clipanion: 4.0.0-rc.4(typanion@3.14.0) tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-interactive-tools@4.0.3(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)))(typanion@3.14.0)': + '@yarnpkg/plugin-interactive-tools@4.1.0(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)))': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/libui': 3.0.2(ink@3.2.0(@types/react@19.2.14)(react@17.0.2))(react@17.0.2) - '@yarnpkg/plugin-essentials': 4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/libui': 3.1.0(ink@3.2.0(@types/react@19.2.14)(react@17.0.2))(react@17.0.2) + '@yarnpkg/plugin-essentials': 4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) algoliasearch: 4.27.0 clipanion: 4.0.0-rc.4(typanion@3.14.0) diff: 5.2.2 @@ -19381,33 +19559,33 @@ snapshots: react: 17.0.2 semver: 7.7.4 tslib: 2.8.1 + typanion: 3.14.0 transitivePeerDependencies: - '@types/react' - bufferutil - - typanion - utf-8-validate - '@yarnpkg/plugin-jsr@1.1.1(@yarnpkg/core@4.5.0(typanion@3.14.0))': + '@yarnpkg/plugin-jsr@1.1.1(@yarnpkg/core@4.6.0(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 tslib: 2.8.1 - '@yarnpkg/plugin-link@3.0.2(@yarnpkg/core@4.5.0(typanion@3.14.0))': + '@yarnpkg/plugin-link@3.0.2(@yarnpkg/core@4.6.0(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 tslib: 2.8.1 - '@yarnpkg/plugin-nm@4.0.8(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-nm@4.0.8(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.4) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.5) '@yarnpkg/nm': 4.0.7(typanion@3.14.0) '@yarnpkg/parsers': 3.0.3 - '@yarnpkg/plugin-pnp': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-pnp': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) '@yarnpkg/pnp': 4.1.3 '@zkochan/cmd-shim': 5.4.1 clipanion: 4.0.0-rc.4(typanion@3.14.0) @@ -19415,13 +19593,13 @@ snapshots: transitivePeerDependencies: - typanion - '@yarnpkg/plugin-npm-cli@4.4.0(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-npm@3.4.0(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))': + '@yarnpkg/plugin-npm-cli@4.4.1(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-npm@3.4.1(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-npm': 3.4.0(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-npm': 3.4.1(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) clipanion: 4.0.0-rc.4(typanion@3.14.0) enquirer: 2.4.1 micromatch: 4.0.8 @@ -19429,13 +19607,13 @@ snapshots: tslib: 2.8.1 typanion: 3.14.0 - '@yarnpkg/plugin-npm@3.4.0(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))': + '@yarnpkg/plugin-npm@3.4.1(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))': dependencies: - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) enquirer: 2.4.1 - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 micromatch: 4.0.8 semver: 7.7.4 sigstore: 3.1.0 @@ -19444,11 +19622,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-pack@4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 clipanion: 4.0.0-rc.4(typanion@3.14.0) micromatch: 4.0.8 tar-stream: 2.2.0 @@ -19456,23 +19634,23 @@ snapshots: transitivePeerDependencies: - typanion - '@yarnpkg/plugin-patch@4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-patch@4.0.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.4) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/libzip': 3.2.2(@yarnpkg/fslib@3.1.5) clipanion: 4.0.0-rc.4(typanion@3.14.0) tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-pnp@4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-pnp@4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-stage': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-stage': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) '@yarnpkg/pnp': 4.1.3 clipanion: 4.0.0-rc.4(typanion@3.14.0) micromatch: 4.0.8 @@ -19480,52 +19658,52 @@ snapshots: transitivePeerDependencies: - typanion - '@yarnpkg/plugin-pnpm@2.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-pnpm@2.1.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-pnp': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) - '@yarnpkg/plugin-stage': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-pnp': 4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-stage': 4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) clipanion: 4.0.0-rc.4(typanion@3.14.0) p-limit: 2.3.0 tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-stage@4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-stage@4.0.2(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 clipanion: 4.0.0-rc.4(typanion@3.14.0) tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-typescript@4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)))(typanion@3.14.0)': + '@yarnpkg/plugin-typescript@4.1.3(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-essentials@4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-essentials': 4.4.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0)) - '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-essentials': 4.4.5(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0)) + '@yarnpkg/plugin-pack': 4.0.4(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) algoliasearch: 4.27.0 semver: 7.7.4 tslib: 2.8.1 transitivePeerDependencies: - typanion - '@yarnpkg/plugin-version@4.2.0(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))(typanion@3.14.0)': + '@yarnpkg/plugin-version@4.2.0(@types/react@19.2.14)(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))(typanion@3.14.0)': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/libui': 3.0.2(ink@3.2.0(@types/react@19.2.14)(react@17.0.2))(react@17.0.2) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/libui': 3.1.0(ink@3.2.0(@types/react@19.2.14)(react@17.0.2))(react@17.0.2) '@yarnpkg/parsers': 3.0.3 - '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) clipanion: 4.0.0-rc.4(typanion@3.14.0) - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 ink: 3.2.0(@types/react@19.2.14)(react@17.0.2) react: 17.0.2 semver: 7.7.4 @@ -19536,14 +19714,14 @@ snapshots: - typanion - utf-8-validate - '@yarnpkg/plugin-workspace-tools@4.1.6(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)))(@yarnpkg/core@4.5.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0))': + '@yarnpkg/plugin-workspace-tools@4.1.7(@yarnpkg/cli@4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)))(@yarnpkg/core@4.6.0(typanion@3.14.0))(@yarnpkg/plugin-git@3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0))': dependencies: - '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.5.0(typanion@3.14.0)) - '@yarnpkg/core': 4.5.0(typanion@3.14.0) - '@yarnpkg/fslib': 3.1.4 - '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.5.0(typanion@3.14.0))(typanion@3.14.0) + '@yarnpkg/cli': 4.12.0(@types/react@19.2.14)(@yarnpkg/core@4.6.0(typanion@3.14.0)) + '@yarnpkg/core': 4.6.0(typanion@3.14.0) + '@yarnpkg/fslib': 3.1.5 + '@yarnpkg/plugin-git': 3.1.4(@yarnpkg/core@4.6.0(typanion@3.14.0))(typanion@3.14.0) clipanion: 4.0.0-rc.4(typanion@3.14.0) - es-toolkit: 1.44.0 + es-toolkit: 1.45.1 micromatch: 4.0.8 p-limit: 2.3.0 tslib: 2.8.1 @@ -19552,11 +19730,11 @@ snapshots: '@yarnpkg/pnp@4.1.3': dependencies: '@types/node': 18.19.130 - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/fslib': 3.1.5 '@yarnpkg/shell@4.0.0(typanion@3.14.0)': dependencies: - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/fslib': 3.1.5 '@yarnpkg/parsers': 3.0.3 chalk: 3.0.0 clipanion: 4.0.0-rc.4(typanion@3.14.0) @@ -19569,7 +19747,7 @@ snapshots: '@yarnpkg/shell@4.1.3(typanion@3.14.0)': dependencies: - '@yarnpkg/fslib': 3.1.4 + '@yarnpkg/fslib': 3.1.5 '@yarnpkg/parsers': 3.0.3 chalk: 4.1.2 clipanion: 4.0.0-rc.4(typanion@3.14.0) @@ -19767,82 +19945,23 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-includes@3.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - array-iterate@2.0.1: {} array-timsort@1.0.3: {} array-union@2.1.0: {} - array.prototype.findlastindex@1.2.6: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - as-table@1.0.55: dependencies: printable-characters: 1.0.42 - asn1.js@4.10.1: - dependencies: - bn.js: 4.12.3 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - assert@2.1.0: - dependencies: - call-bind: 1.0.8 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.7 - util: 0.12.5 - assertion-error@2.0.1: {} ast-types@0.16.1: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.11: + ast-v8-to-istanbul@1.0.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -19852,16 +19971,16 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.7(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)): + astro-expressive-code@0.41.7(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)): dependencies: - astro: 5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + astro: 6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) rehype-expressive-code: 0.41.7 - astro-rehype-relative-markdown-links@0.18.1(astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)): + astro-rehype-relative-markdown-links@0.18.1(astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3)): dependencies: - astro: 5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + astro: 6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3) catch-unknown: 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 github-slugger: 2.0.0 gray-matter: 4.0.3 is-absolute-url: 4.0.1 @@ -19871,56 +19990,51 @@ snapshots: transitivePeerDependencies: - supports-color - astro@5.18.0(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.3.0)(rollup@4.49.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + astro@6.0.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0)(@types/node@25.5.0)(lightningcss@1.32.0)(rollup@4.60.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.3): dependencies: - '@astrojs/compiler': 2.13.1 - '@astrojs/internal-helpers': 0.7.5 - '@astrojs/markdown-remark': 6.3.10 + '@astrojs/compiler': 3.0.0 + '@astrojs/internal-helpers': 0.8.0 + '@astrojs/markdown-remark': 7.0.0 '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 4.0.0 + '@clack/prompts': 1.1.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.49.0) - acorn: 8.16.0 + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) aria-query: 5.3.2 axobject-query: 4.1.0 - boxen: 8.0.1 ci-info: 4.4.0 clsx: 2.1.1 - common-ancestor-path: 1.0.1 + common-ancestor-path: 2.0.0 cookie: 1.1.1 - cssesc: 3.0.0 - debug: 4.4.3(supports-color@8.1.1) - deterministic-object-hash: 2.0.2 - devalue: 5.6.3 + devalue: 5.6.4 diff: 8.0.3 dlv: 1.1.3 dset: 3.1.4 - es-module-lexer: 1.7.0 - esbuild: 0.27.3 - estree-walker: 3.0.3 + es-module-lexer: 2.0.0 + esbuild: 0.27.4 flattie: 1.1.1 fontace: 0.4.1 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 - import-meta-resolve: 4.2.0 js-yaml: 4.1.1 magic-string: 0.30.21 magicast: 0.5.2 mrmime: 2.0.1 neotraverse: 0.6.18 - p-limit: 6.2.0 - p-queue: 8.1.1 + obug: 2.1.1 + p-limit: 7.3.0 + p-queue: 9.1.0 package-manager-detector: 1.6.0 piccolore: 0.1.3 picomatch: 4.0.3 - prompts: 2.4.2 rehype: 13.0.2 semver: 7.7.4 - shiki: 3.23.0 + shiki: 4.0.2 smol-toml: 1.6.0 - svgo: 4.0.0 - tinyexec: 1.0.2 + svgo: 4.0.1 + tinyclip: 0.1.12 + tinyexec: 1.0.4 tinyglobby: 0.2.15 tsconfck: 3.1.6(typescript@5.9.3) ultrahtml: 1.6.0 @@ -19928,14 +20042,11 @@ snapshots: unist-util-visit: 5.1.0 unstorage: 1.17.4(@azure/identity@4.13.0)(@azure/storage-blob@12.31.0) vfile: 6.0.3 - vite: 6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) - vitefu: 1.1.2(vite@6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + vitefu: 1.1.2(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)) xxhash-wasm: 1.1.0 - yargs-parser: 21.1.1 - yocto-spinner: 0.2.3 - zod: 3.25.76 - zod-to-json-schema: 3.25.1(zod@3.25.76) - zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) + yargs-parser: 22.0.0 + zod: 4.3.6 optionalDependencies: sharp: 0.34.5 transitivePeerDependencies: @@ -19973,8 +20084,6 @@ snapshots: - uploadthing - yaml - async-function@1.0.0: {} - asynckit@0.4.0: {} auto-bind@4.0.0: {} @@ -20008,23 +20117,20 @@ snapshots: dependencies: bare-events: 2.8.2 bare-path: 3.0.0 - bare-stream: 2.8.0(bare-events@2.8.2) + bare-stream: 2.8.1(bare-events@2.8.2) bare-url: 2.3.2 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller - react-native-b4a - optional: true - bare-os@3.7.0: - optional: true + bare-os@3.8.0: {} bare-path@3.0.0: dependencies: - bare-os: 3.7.0 - optional: true + bare-os: 3.8.0 - bare-stream@2.8.0(bare-events@2.8.2): + bare-stream@2.8.1(bare-events@2.8.2): dependencies: streamx: 2.23.0 teex: 1.0.1 @@ -20033,18 +20139,14 @@ snapshots: transitivePeerDependencies: - bare-abort-controller - react-native-b4a - optional: true bare-url@2.3.2: dependencies: bare-path: 3.0.0 - optional: true - - base-64@1.0.0: {} base64-js@1.5.1: {} - baseline-browser-mapping@2.10.0: {} + baseline-browser-mapping@2.10.8: {} basic-auth@2.0.1: dependencies: @@ -20081,15 +20183,11 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - bn.js@4.12.3: {} - - bn.js@5.2.3: {} - body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 @@ -20099,7 +20197,7 @@ snapshots: transitivePeerDependencies: - supports-color - bole@5.0.27: + bole@5.0.28: dependencies: fast-safe-stringify: 2.1.1 individual: 3.0.0 @@ -20110,17 +20208,6 @@ snapshots: boundary@2.0.0: {} - boxen@8.0.1: - dependencies: - ansi-align: 3.0.1 - camelcase: 8.0.0 - chalk: 5.6.2 - cli-boxes: 3.0.0 - string-width: 7.2.0 - type-fest: 4.41.0 - widest-line: 5.0.0 - wrap-ansi: 9.0.2 - brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -20138,68 +20225,16 @@ snapshots: dependencies: fill-range: 7.1.1 - brorand@1.1.0: {} - - browser-resolve@2.0.0: - dependencies: - resolve: 1.22.11 - - browser-stdout@1.3.1: {} - - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.7 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-cipher@1.0.1: - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - - browserify-des@1.0.2: - dependencies: - cipher-base: 1.0.7 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-rsa@4.1.1: - dependencies: - bn.js: 5.2.3 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - - browserify-sign@4.2.5: - dependencies: - bn.js: 5.2.3 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.6.1 - inherits: 2.0.4 - parse-asn1: 5.1.9 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - browserify-zlib@0.1.4: dependencies: pako: 0.2.9 - browserify-zlib@0.2.0: - dependencies: - pako: 1.0.11 - browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001774 - electron-to-chromium: 1.5.302 - node-releases: 2.0.27 + baseline-browser-mapping: 2.10.8 + caniuse-lite: 1.0.30001778 + electron-to-chromium: 1.5.313 + node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-crc32@0.2.13: {} @@ -20208,8 +20243,6 @@ snapshots: buffer-from@1.1.2: {} - buffer-xor@1.0.3: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -20222,8 +20255,6 @@ snapshots: builtin-modules@5.0.0: {} - builtin-status-codes@3.0.0: {} - builtins@5.1.0: dependencies: semver: 7.7.4 @@ -20264,7 +20295,7 @@ snapshots: minipass-pipeline: 1.2.4 p-map: 7.0.4 ssri: 12.0.0 - tar: 7.5.9 + tar: 7.5.11 unique-filename: 4.0.0 cacache@20.0.3: @@ -20272,7 +20303,7 @@ snapshots: '@npmcli/fs': 5.0.0 fs-minipass: 3.0.3 glob: 13.0.6 - lru-cache: 11.2.6 + lru-cache: 11.2.7 minipass: 7.1.3 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -20322,15 +20353,13 @@ snapshots: camelcase@6.3.0: {} - camelcase@8.0.0: {} - can-link@2.0.0: {} can-write-to-dir@1.1.1: dependencies: path-temp: 2.1.1 - caniuse-lite@1.0.30001774: {} + caniuse-lite@1.0.30001778: {} catch-unknown@2.0.0: {} @@ -20404,21 +20433,21 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.22.0 + undici: 7.24.3 whatwg-mimetype: 4.0.0 - chevrotain-allstar@0.3.1(chevrotain@11.1.1): + chevrotain-allstar@0.3.1(chevrotain@11.1.2): dependencies: - chevrotain: 11.1.1 + chevrotain: 11.1.2 lodash-es: 4.17.23 - chevrotain@11.1.1: + chevrotain@11.1.2: dependencies: - '@chevrotain/cst-dts-gen': 11.1.1 - '@chevrotain/gast': 11.1.1 - '@chevrotain/regexp-to-ast': 11.1.1 - '@chevrotain/types': 11.1.1 - '@chevrotain/utils': 11.1.1 + '@chevrotain/cst-dts-gen': 11.1.2 + '@chevrotain/gast': 11.1.2 + '@chevrotain/regexp-to-ast': 11.1.2 + '@chevrotain/types': 11.1.2 + '@chevrotain/utils': 11.1.2 lodash-es: 4.17.23 chokidar@4.0.3: @@ -20432,8 +20461,6 @@ snapshots: chownr@1.1.4: optional: true - chownr@2.0.0: {} - chownr@3.0.0: {} ci-info@2.0.0: {} @@ -20442,12 +20469,6 @@ snapshots: ci-info@4.4.0: {} - cipher-base@1.0.7: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - to-buffer: 1.2.2 - clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -20461,8 +20482,6 @@ snapshots: cli-boxes@2.2.1: {} - cli-boxes@3.0.0: {} - cli-columns@4.0.0: dependencies: string-width: 4.2.3 @@ -20506,7 +20525,7 @@ snapshots: cliui@9.0.1: dependencies: string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrap-ansi: 9.0.2 clone-deep@4.0.1: @@ -20571,8 +20590,6 @@ snapshots: commander@12.1.0: {} - commander@13.1.0: {} - commander@14.0.3: {} commander@7.2.0: {} @@ -20581,13 +20598,12 @@ snapshots: commander@9.5.0: {} - comment-json@4.5.1: + comment-json@4.6.2: dependencies: array-timsort: 1.0.3 - core-util-is: 1.0.3 esprima: 4.0.1 - common-ancestor-path@1.0.1: {} + common-ancestor-path@2.0.0: {} commondir@1.0.1: {} @@ -20620,10 +20636,6 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - console-browserify@1.2.0: {} - - constants-browserify@1.0.0: {} - content-disposition@1.0.1: {} content-type@1.0.5: {} @@ -20659,43 +20671,10 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig@9.0.0(typescript@5.9.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.9.3 - - create-ecdh@4.0.4: - dependencies: - bn.js: 4.12.3 - elliptic: 6.6.1 - - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.7 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.3 - sha.js: 2.4.12 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.7 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.3 - safe-buffer: 5.2.1 - sha.js: 2.4.12 - - create-require@1.1.1: {} - - create-storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + create-storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: semver: 7.7.4 - storybook: 10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + storybook: 10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) transitivePeerDependencies: - '@testing-library/dom' - bufferutil @@ -20719,29 +20698,14 @@ snapshots: dependencies: uncrypto: 0.1.3 - crypto-browserify@3.12.1: - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.5 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - hash-base: 3.0.5 - inherits: 2.0.4 - pbkdf2: 3.1.5 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - crypto-random-string@2.0.0: {} cspell-config-lib@9.7.0: dependencies: '@cspell/cspell-types': 9.7.0 - comment-json: 4.5.1 + comment-json: 4.6.2 smol-toml: 1.6.0 - yaml: 2.8.2 + yaml: 2.8.3 cspell-dictionary@9.7.0: dependencies: @@ -20823,7 +20787,7 @@ snapshots: cspell-io: 9.7.0 cspell-lib: 9.7.0 fast-json-stable-stringify: 2.1.0 - flatted: 3.3.3 + flatted: 3.4.1 semver: 7.7.4 tinyglobby: 0.2.15 @@ -20842,9 +20806,9 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@3.1.0: + css-tree@3.2.1: dependencies: - mdn-data: 2.12.2 + mdn-data: 2.27.1 source-map-js: 1.2.1 css-what@6.2.2: {} @@ -21043,7 +21007,7 @@ snapshots: d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 - dagre-d3-es@7.0.13: + dagre-d3-es@7.0.14: dependencies: d3: 7.9.0 lodash-es: 4.17.23 @@ -21057,27 +21021,9 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - date-fns@4.1.0: {} - dayjs@1.11.19: {} + dayjs@1.11.20: {} de-indent@1.0.2: {} @@ -21091,13 +21037,9 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.3(supports-color@8.1.1): + debug@4.4.3: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 - - decamelize@4.0.0: {} decimal.js@10.6.0: {} @@ -21198,22 +21140,13 @@ snapshots: dequal@2.0.3: {} - des.js@1.1.0: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - destr@2.0.5: {} destroy@1.2.0: {} detect-libc@2.1.2: {} - deterministic-object-hash@2.0.2: - dependencies: - base-64: 1.0.0 - - devalue@5.6.3: {} + devalue@5.6.4: {} devlop@1.1.0: dependencies: @@ -21221,16 +21154,8 @@ snapshots: diff@5.2.2: {} - diff@7.0.0: {} - diff@8.0.3: {} - diffie-hellman@5.0.3: - dependencies: - bn.js: 4.12.3 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -21243,10 +21168,6 @@ snapshots: dlv@1.1.3: {} - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -21261,19 +21182,13 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 - domain-browser@4.22.0: {} - domelementtype@2.3.0: {} domhandler@5.0.3: dependencies: domelementtype: 2.3.0 - dompurify@3.2.7: - optionalDependencies: - '@types/trusted-types': 2.0.7 - - dompurify@3.3.1: + dompurify@3.3.3: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -21340,22 +21255,7 @@ snapshots: ee-first@1.1.1: {} - effect@3.19.19: - dependencies: - '@standard-schema/spec': 1.1.0 - fast-check: 3.23.2 - - electron-to-chromium@1.5.302: {} - - elliptic@6.6.1: - dependencies: - bn.js: 4.12.3 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 + electron-to-chromium@1.5.313: {} embla-carousel-autoplay@8.6.0(embla-carousel@8.6.0): dependencies: @@ -21425,80 +21325,23 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.24.1: + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.20 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - is-arguments: 1.2.0 - is-map: 2.0.3 + is-arguments: 1.2.0 + is-map: 2.0.3 is-set: 2.0.3 is-string: 1.1.1 isarray: 2.0.5 stop-iteration-iterator: 1.1.0 - es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} es-module-shims@2.8.0: {} @@ -21513,17 +21356,7 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.3.0: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - es-toolkit@1.44.0: {} + es-toolkit@1.45.1: {} esast-util-from-estree@2.0.0: dependencies: @@ -21539,70 +21372,41 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild-plugins-node-modules-polyfill@1.8.1(esbuild@0.27.3): + esbuild-plugins-node-modules-polyfill@1.8.1(esbuild@0.27.4): dependencies: '@jspm/core': 2.1.0 - esbuild: 0.27.3 + esbuild: 0.27.4 local-pkg: 1.1.2 resolve.exports: 2.0.3 - esbuild@0.25.12: + esbuild@0.27.4: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - - esbuild@0.27.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 escalade@3.2.0: {} @@ -21621,73 +21425,26 @@ snapshots: '@babel/code-frame': 7.12.11 chalk: 4.1.2 - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.11 - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.0.2): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - eslint: 10.0.2 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 10.0.2 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.0.2) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-react-hooks@7.0.1(eslint@10.0.2): + eslint-plugin-react-hooks@7.0.1(eslint@10.0.3): dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.0 - eslint: 10.0.2 + eslint: 10.0.3 hermes-parser: 0.25.1 zod: 4.3.6 zod-validation-error: 4.0.2(zod@4.3.6) transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@63.0.0(eslint@10.0.2): + eslint-plugin-unicorn@63.0.0(eslint@10.0.3): dependencies: '@babel/helper-validator-identifier': 7.28.5 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) change-case: 5.4.4 ci-info: 4.4.0 clean-regexp: 1.0.0 core-js-compat: 3.48.0 - eslint: 10.0.2 + eslint: 10.0.3 find-up-simple: 1.0.1 globals: 16.5.0 indent-string: 5.0.0 @@ -21699,7 +21456,7 @@ snapshots: semver: 7.7.4 strip-indent: 4.1.1 - eslint-scope@9.1.1: + eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 '@types/estree': 1.0.8 @@ -21710,25 +21467,25 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.0.2: + eslint@10.0.3: dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.2 - '@eslint/config-helpers': 0.5.2 - '@eslint/core': 1.1.0 - '@eslint/plugin-kit': 0.6.0 + '@eslint/config-array': 0.23.3 + '@eslint/config-helpers': 0.5.3 + '@eslint/core': 1.1.1 + '@eslint/plugin-kit': 0.6.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.14.0 cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 9.1.1 + eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - espree: 11.1.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -21745,7 +21502,7 @@ snapshots: transitivePeerDependencies: - supports-color - espree@11.1.1: + espree@11.2.0: dependencies: acorn: 8.16.0 acorn-jsx: 5.3.2(acorn@8.16.0) @@ -21816,11 +21573,6 @@ snapshots: events@3.3.0: {} - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -21863,7 +21615,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 @@ -21903,10 +21655,6 @@ snapshots: extend@3.0.2: {} - fast-check@3.23.2: - dependencies: - pure-rand: 6.1.0 - fast-content-type-parse@3.0.0: {} fast-deep-equal@3.1.3: {} @@ -21941,12 +21689,15 @@ snapshots: dependencies: fast-string-width: 3.0.2 - fast-xml-builder@1.0.0: {} + fast-xml-builder@1.1.3: + dependencies: + path-expression-matcher: 1.1.3 - fast-xml-parser@5.4.1: + fast-xml-parser@5.5.5: dependencies: - fast-xml-builder: 1.0.0 - strnum: 2.1.2 + fast-xml-builder: 1.1.3 + path-expression-matcher: 1.1.3 + strnum: 2.2.0 fastq@1.20.1: dependencies: @@ -21978,7 +21729,7 @@ snapshots: finalhandler@2.1.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -22020,22 +21771,22 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.1 keyv: 4.5.4 - flat@5.0.2: {} + flatted@3.4.0: {} - flatted@3.3.3: {} + flatted@3.4.1: {} flattie@1.1.1: {} - flow-parser@0.302.0: {} + flow-parser@0.305.0: {} fontace@0.4.1: dependencies: - fontkitten: 1.0.2 + fontkitten: 1.0.3 - fontkitten@1.0.2: + fontkitten@1.0.3: dependencies: tiny-inflate: 1.0.3 @@ -22070,16 +21821,12 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.3.3: + fs-extra@11.3.4: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 universalify: 2.0.1 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs-minipass@3.0.3: dependencies: minipass: 7.1.3 @@ -22094,19 +21841,8 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - functions-have-names@1.2.3: {} - generator-function@2.0.1: {} - gensequence@8.0.8: {} gensync@1.0.0-beta.2: {} @@ -22142,7 +21878,7 @@ snapshots: get-stream@5.2.0: dependencies: - pump: 3.0.3 + pump: 3.0.4 get-stream@6.0.1: {} @@ -22151,12 +21887,6 @@ snapshots: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -22187,7 +21917,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 - minimatch: 9.0.8 + minimatch: 9.0.9 minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 @@ -22230,11 +21960,6 @@ snapshots: globals@16.5.0: {} - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - globalyzer@0.1.0: {} globby@11.1.0: @@ -22315,7 +22040,7 @@ snapshots: pumpify: 1.5.1 through2: 2.0.5 - h3@1.15.5: + h3@1.15.6: dependencies: cookie-es: 1.2.2 crossws: 0.3.5 @@ -22329,9 +22054,9 @@ snapshots: hachure-fill@0.5.2: {} - happy-dom@20.7.0: + happy-dom@20.8.9: dependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 '@types/whatwg-mimetype': 3.0.2 '@types/ws': 8.18.1 entities: 7.0.1 @@ -22351,33 +22076,12 @@ snapshots: dependencies: es-define-property: 1.0.1 - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: has-symbols: 1.1.0 - hash-base@3.0.5: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - hash-base@3.1.2: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - to-buffer: 1.2.2 - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -22594,12 +22298,6 @@ snapshots: highlight.js@11.0.1: {} - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 @@ -22614,7 +22312,7 @@ snapshots: hosted-git-info@9.0.2: dependencies: - lru-cache: 11.2.6 + lru-cache: 11.2.7 hpagent@1.2.0: {} @@ -22676,7 +22374,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -22685,12 +22383,10 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-browserify@1.0.0: {} - https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -22837,17 +22533,17 @@ snapshots: inline-style-parser@0.2.7: {} - inquirer@13.3.0(@types/node@25.3.0): + inquirer@13.3.0(@types/node@25.5.0): dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.5(@types/node@25.3.0) - '@inquirer/prompts': 8.3.0(@types/node@25.3.0) - '@inquirer/type': 4.0.3(@types/node@25.3.0) + '@inquirer/core': 11.1.5(@types/node@25.5.0) + '@inquirer/prompts': 8.3.0(@types/node@25.5.0) + '@inquirer/type': 4.0.3(@types/node@25.5.0) mute-stream: 3.0.0 run-async: 4.0.6 rxjs: 7.8.2 optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 internal-slot@1.1.0: dependencies: @@ -22887,14 +22583,6 @@ snapshots: is-arrayish@0.2.1: {} - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - is-bigint@1.1.0: dependencies: has-bigints: 1.1.0 @@ -22918,12 +22606,6 @@ snapshots: dependencies: hasown: 2.0.2 - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - is-date-object@1.1.0: dependencies: call-bound: 1.0.4 @@ -22941,20 +22623,8 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.1.2: - dependencies: - call-bound: 1.0.4 - generator-function: 2.0.1 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -22973,13 +22643,6 @@ snapshots: is-map@2.0.3: {} - is-nan@1.3.2: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - - is-negative-zero@2.0.3: {} - is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -23043,22 +22706,12 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.20 - - is-unicode-supported@0.1.0: {} - is-unicode-supported@1.3.0: {} is-unicode-supported@2.1.0: {} is-weakmap@2.0.2: {} - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - is-weakset@2.0.4: dependencies: call-bound: 1.0.4 @@ -23086,8 +22739,6 @@ snapshots: isobject@3.0.1: {} - isomorphic-timers-promises@1.0.1: {} - istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -23146,7 +22797,7 @@ snapshots: '@babel/register': 7.28.6(@babel/core@7.29.0) babel-core: 7.0.0-bridge.0(@babel/core@7.29.0) chalk: 4.1.2 - flow-parser: 0.302.0 + flow-parser: 0.305.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -23199,11 +22850,7 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} - json-with-bigint@3.5.3: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 + json-with-bigint@3.5.7: {} json5@2.2.3: {} @@ -23252,7 +22899,7 @@ snapshots: jwa: 2.0.1 safe-buffer: 5.2.1 - katex@0.16.33: + katex@0.16.38: dependencies: commander: 8.3.0 @@ -23292,14 +22939,14 @@ snapshots: koa-mount@4.2.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 koa-compose: 4.1.0 transitivePeerDependencies: - supports-color koa-send@5.0.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -23337,8 +22984,8 @@ snapshots: langium@4.2.1: dependencies: - chevrotain: 11.1.1 - chevrotain-allstar: 0.3.1(chevrotain@11.1.1) + chevrotain: 11.1.2 + chevrotain-allstar: 0.3.1(chevrotain@11.1.2) vscode-languageserver: 9.0.1 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 @@ -23360,6 +23007,55 @@ snapshots: dependencies: immediate: 3.0.6 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + lines-and-columns@1.2.4: {} linkify-it@5.0.0: @@ -23382,7 +23078,7 @@ snapshots: local-pkg@1.1.2: dependencies: - mlly: 1.8.0 + mlly: 1.8.1 pkg-types: 2.3.0 quansync: 0.2.11 @@ -23429,11 +23125,6 @@ snapshots: lodash@4.17.23: {} - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - log-symbols@6.0.0: dependencies: chalk: 5.6.2 @@ -23456,7 +23147,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.6: {} + lru-cache@11.2.7: {} lru-cache@5.1.1: dependencies: @@ -23556,12 +23247,6 @@ snapshots: math-intrinsics@1.1.0: {} - md5.js@1.3.5: - dependencies: - hash-base: 3.0.5 - inherits: 2.0.4 - safe-buffer: 5.2.1 - mdast-util-definitions@6.0.0: dependencies: '@types/mdast': 4.0.4 @@ -23747,7 +23432,7 @@ snapshots: mdn-data@2.0.28: {} - mdn-data@2.12.2: {} + mdn-data@2.27.1: {} mdurl@2.0.0: {} @@ -23774,26 +23459,27 @@ snapshots: mermaid-isomorphic@3.1.0(playwright@1.58.2): dependencies: '@fortawesome/fontawesome-free': 6.7.2 - katex: 0.16.33 - mermaid: 11.12.3 + katex: 0.16.38 + mermaid: 11.13.0 optionalDependencies: playwright: 1.58.2 - mermaid@11.12.3: + mermaid@11.13.0: dependencies: '@braintree/sanitize-url': 7.1.2 '@iconify/utils': 3.1.0 - '@mermaid-js/parser': 1.0.0 + '@mermaid-js/parser': 1.0.1 '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 cytoscape: 3.33.1 cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) cytoscape-fcose: 2.2.0(cytoscape@3.33.1) d3: 7.9.0 d3-sankey: 0.12.3 - dagre-d3-es: 7.0.13 - dayjs: 1.11.19 - dompurify: 3.3.1 - katex: 0.16.33 + dagre-d3-es: 7.0.14 + dayjs: 1.11.20 + dompurify: 3.3.3 + katex: 0.16.38 khroma: 2.1.0 lodash-es: 4.17.23 marked: 16.4.2 @@ -24057,7 +23743,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -24081,11 +23767,6 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - miller-rabin@4.0.1: - dependencies: - bn.js: 4.12.3 - brorand: 1.1.0 - mime-db@1.52.0: {} mime-db@1.54.0: {} @@ -24114,11 +23795,7 @@ snapshots: mini-svg-data-uri@1.4.4: {} - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - minimatch@10.2.1: + minimatch@10.2.3: dependencies: brace-expansion: 5.0.4 @@ -24134,14 +23811,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 - - minimatch@9.0.8: - dependencies: - brace-expansion: 5.0.4 - minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 @@ -24188,15 +23857,8 @@ snapshots: dependencies: yallist: 4.0.0 - minipass@5.0.0: {} - minipass@7.1.3: {} - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - minizlib@3.1.0: dependencies: minipass: 7.1.3 @@ -24204,51 +23866,21 @@ snapshots: mkdirp-classic@0.5.3: optional: true - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mlly@1.8.0: + mlly@1.8.1: dependencies: acorn: 8.16.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.3 - mocha@11.7.5: - dependencies: - browser-stdout: 1.3.1 - chokidar: 4.0.3 - debug: 4.4.3(supports-color@8.1.1) - diff: 7.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 10.5.0 - he: 1.2.0 - is-path-inside: 3.0.3 - js-yaml: 4.1.1 - log-symbols: 4.1.0 - minimatch: 9.0.8 - ms: 2.1.3 - picocolors: 1.1.1 - serialize-javascript: 6.0.2 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 9.3.4 - yargs: 17.7.2 - yargs-parser: 21.1.1 - yargs-unparser: 2.0.0 - monaco-editor-core@0.55.1: dependencies: - dompurify: 3.2.7 + dompurify: 3.3.3 marked: 14.0.0 monaco-editor@0.55.1: dependencies: - dompurify: 3.2.7 + dompurify: 3.3.3 marked: 14.0.0 morgan@1.10.1: @@ -24269,15 +23901,12 @@ snapshots: muggle-string@0.4.1: {} - multer@2.0.2: + multer@2.1.1: dependencies: append-field: 1.0.0 busboy: 1.6.0 concat-stream: 2.0.0 - mkdirp: 0.5.6 - object-assign: 4.1.1 type-is: 1.6.18 - xtend: 4.0.2 mustache@4.2.0: {} @@ -24306,7 +23935,7 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 - node-abi@3.87.0: + node-abi@3.88.0: dependencies: semver: 7.7.4 optional: true @@ -24314,7 +23943,7 @@ snapshots: node-addon-api@4.3.0: optional: true - node-addon-api@8.5.0: {} + node-addon-api@8.6.0: {} node-dir@0.1.17: dependencies: @@ -24333,7 +23962,7 @@ snapshots: nopt: 8.1.0 proc-log: 5.0.0 semver: 7.7.4 - tar: 7.5.9 + tar: 7.5.11 tinyglobby: 0.2.15 which: 5.0.0 transitivePeerDependencies: @@ -24348,7 +23977,7 @@ snapshots: nopt: 9.0.0 proc-log: 6.1.0 semver: 7.7.4 - tar: 7.5.9 + tar: 7.5.11 tinyglobby: 0.2.15 which: 6.0.1 transitivePeerDependencies: @@ -24356,42 +23985,12 @@ snapshots: node-mock-http@1.0.4: {} - node-releases@2.0.27: {} + node-releases@2.0.36: {} node-sarif-builder@3.4.0: dependencies: '@types/sarif': 2.1.7 - fs-extra: 11.3.3 - - node-stdlib-browser@1.3.1: - dependencies: - assert: 2.1.0 - browser-resolve: 2.0.0 - browserify-zlib: 0.2.0 - buffer: 5.7.1 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - create-require: 1.1.1 - crypto-browserify: 3.12.1 - domain-browser: 4.22.0 - events: 3.3.0 - https-browserify: 1.0.0 - isomorphic-timers-promises: 1.0.1 - os-browserify: 0.3.0 - path-browserify: 1.0.1 - pkg-dir: 5.0.0 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 3.6.2 - stream-browserify: 3.0.0 - stream-http: 3.2.0 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.1 - url: 0.11.4 - util: 0.12.5 - vm-browserify: 1.1.2 + fs-extra: 11.3.4 node-watch@0.7.3: {} @@ -24443,13 +24042,6 @@ snapshots: npm-normalize-package-bin@5.0.0: {} - npm-package-arg@12.0.2: - dependencies: - hosted-git-info: 8.1.0 - proc-log: 5.0.0 - semver: 7.7.4 - validate-npm-package-name: 6.0.2 - npm-package-arg@13.0.2: dependencies: hosted-git-info: 9.0.2 @@ -24526,26 +24118,6 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-object-atoms: 1.1.1 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - obug@2.1.1: {} octokit@5.0.5: @@ -24636,7 +24208,7 @@ snapshots: log-symbols: 6.0.0 stdin-discarder: 0.2.2 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 ora@9.3.0: dependencies: @@ -24649,14 +24221,6 @@ snapshots: stdin-discarder: 0.3.1 string-width: 8.2.0 - os-browserify@0.3.0: {} - - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - p-cancelable@2.1.1: {} p-defer@1.0.0: {} @@ -24677,10 +24241,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@6.2.0: - dependencies: - yocto-queue: 1.2.2 - p-limit@7.3.0: dependencies: yocto-queue: 1.2.2 @@ -24717,10 +24277,10 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 - p-queue@8.1.1: + p-queue@9.1.0: dependencies: eventemitter3: 5.0.4 - p-timeout: 6.1.4 + p-timeout: 7.0.1 p-reflect@2.1.0: {} @@ -24728,7 +24288,7 @@ snapshots: dependencies: p-finally: 1.0.0 - p-timeout@6.1.4: {} + p-timeout@7.0.1: {} p-try@2.2.0: {} @@ -24736,14 +24296,14 @@ snapshots: package-manager-detector@1.6.0: {} - pacote@21.4.0: + pacote@21.5.0: dependencies: '@gar/promise-retry': 1.0.2 '@npmcli/git': 7.0.2 '@npmcli/installed-package-contents': 4.0.0 '@npmcli/package-json': 7.0.5 '@npmcli/promise-spawn': 9.0.1 - '@npmcli/run-script': 10.0.3 + '@npmcli/run-script': 10.0.4 cacache: 20.0.3 fs-minipass: 3.0.3 minipass: 7.1.3 @@ -24754,7 +24314,7 @@ snapshots: proc-log: 6.1.0 sigstore: 4.1.0 ssri: 13.0.1 - tar: 7.5.9 + tar: 7.5.11 transitivePeerDependencies: - supports-color @@ -24779,14 +24339,6 @@ snapshots: dependencies: callsites: 3.1.0 - parse-asn1@5.1.9: - dependencies: - asn1.js: 4.10.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.5 - safe-buffer: 5.2.1 - parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -24868,6 +24420,8 @@ snapshots: path-exists@4.0.0: {} + path-expression-matcher@1.1.3: {} + path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -24885,7 +24439,7 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.2.6 + lru-cache: 11.2.7 minipass: 7.1.3 path-temp@2.0.0: @@ -24906,15 +24460,6 @@ snapshots: pathval@2.0.1: {} - pbkdf2@3.1.5: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.3 - safe-buffer: 5.2.1 - sha.js: 2.4.12 - to-buffer: 1.2.2 - pct-encode@1.0.3: {} peek-stream@1.1.3: @@ -24945,14 +24490,10 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-dir@5.0.0: - dependencies: - find-up: 5.0.0 - pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.8.0 + mlly: 1.8.1 pathe: 2.0.3 pkg-types@2.3.0: @@ -24988,9 +24529,9 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-nested@6.2.0(postcss@8.5.6): + postcss-nested@6.2.0(postcss@8.5.8): dependencies: - postcss: 8.5.6 + postcss: 8.5.8 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -24998,7 +24539,7 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.6: + postcss@8.5.8: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -25016,8 +24557,8 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.87.0 - pump: 3.0.3 + node-abi: 3.88.0 + pump: 3.0.4 rc: 1.2.8 simple-get: 4.0.1 tar-fs: 2.1.4 @@ -25120,21 +24661,12 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - public-encrypt@4.0.3: - dependencies: - bn.js: 4.12.3 - browserify-rsa: 4.1.1 - create-hash: 1.2.0 - parse-asn1: 5.1.9 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - pump@2.0.1: dependencies: end-of-stream: 1.4.5 once: 1.4.0 - pump@3.0.3: + pump@3.0.4: dependencies: end-of-stream: 1.4.5 once: 1.4.0 @@ -25147,20 +24679,14 @@ snapshots: punycode.js@2.3.1: {} - punycode@1.4.1: {} - punycode@2.3.1: {} - pure-rand@6.1.0: {} - qs@6.15.0: dependencies: side-channel: 1.1.0 quansync@0.2.11: {} - querystring-es3@0.2.1: {} - queue-microtask@1.2.3: {} quick-lru@4.0.1: {} @@ -25175,15 +24701,6 @@ snapshots: radix3@1.1.2: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - randomfill@1.0.4: - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - range-parser@1.2.1: {} raw-body@3.0.2: @@ -25193,9 +24710,9 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 - rc-config-loader@4.1.3: + rc-config-loader@4.1.4: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 js-yaml: 4.1.1 json5: 2.2.3 require-from-string: 2.0.2 @@ -25222,7 +24739,7 @@ snapshots: dependencies: typescript: 5.9.3 - react-docgen@8.0.2: + react-docgen@8.0.3: dependencies: '@babel/core': 7.29.0 '@babel/traverse': 7.29.0 @@ -25285,8 +24802,6 @@ snapshots: react: 19.2.4 scheduler: 0.20.2 - react-refresh@0.17.0: {} - react-refresh@0.18.0: {} react@17.0.2: @@ -25396,17 +24911,6 @@ snapshots: reduce-flatten@2.0.0: {} - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -25550,7 +25054,7 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - rename-overwrite@6.0.3: + rename-overwrite@6.0.6: dependencies: '@zkochan/rimraf': 3.0.2 fs-extra: 11.3.0 @@ -25642,46 +25146,68 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - ripemd160@2.0.3: - dependencies: - hash-base: 3.1.2 - inherits: 2.0.4 - robust-predicates@3.0.2: {} - rollup-plugin-visualizer@6.0.4(rollup@4.49.0): + rolldown@1.0.0-rc.10: + dependencies: + '@oxc-project/types': 0.120.0 + '@rolldown/pluginutils': 1.0.0-rc.10 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.10 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.10 + '@rolldown/binding-darwin-x64': 1.0.0-rc.10 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.10 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.10 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.10 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.10 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.10 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.10 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.10 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.10 + + rollup-plugin-visualizer@6.0.4(rolldown@1.0.0-rc.10)(rollup@4.60.0): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 4.49.0 + rolldown: 1.0.0-rc.10 + rollup: 4.60.0 - rollup@4.49.0: + rollup@4.60.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.49.0 - '@rollup/rollup-android-arm64': 4.49.0 - '@rollup/rollup-darwin-arm64': 4.49.0 - '@rollup/rollup-darwin-x64': 4.49.0 - '@rollup/rollup-freebsd-arm64': 4.49.0 - '@rollup/rollup-freebsd-x64': 4.49.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.49.0 - '@rollup/rollup-linux-arm-musleabihf': 4.49.0 - '@rollup/rollup-linux-arm64-gnu': 4.49.0 - '@rollup/rollup-linux-arm64-musl': 4.49.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.49.0 - '@rollup/rollup-linux-ppc64-gnu': 4.49.0 - '@rollup/rollup-linux-riscv64-gnu': 4.49.0 - '@rollup/rollup-linux-riscv64-musl': 4.49.0 - '@rollup/rollup-linux-s390x-gnu': 4.49.0 - '@rollup/rollup-linux-x64-gnu': 4.49.0 - '@rollup/rollup-linux-x64-musl': 4.49.0 - '@rollup/rollup-win32-arm64-msvc': 4.49.0 - '@rollup/rollup-win32-ia32-msvc': 4.49.0 - '@rollup/rollup-win32-x64-msvc': 4.49.0 + '@rollup/rollup-android-arm-eabi': 4.60.0 + '@rollup/rollup-android-arm64': 4.60.0 + '@rollup/rollup-darwin-arm64': 4.60.0 + '@rollup/rollup-darwin-x64': 4.60.0 + '@rollup/rollup-freebsd-arm64': 4.60.0 + '@rollup/rollup-freebsd-x64': 4.60.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.0 + '@rollup/rollup-linux-arm-musleabihf': 4.60.0 + '@rollup/rollup-linux-arm64-gnu': 4.60.0 + '@rollup/rollup-linux-arm64-musl': 4.60.0 + '@rollup/rollup-linux-loong64-gnu': 4.60.0 + '@rollup/rollup-linux-loong64-musl': 4.60.0 + '@rollup/rollup-linux-ppc64-gnu': 4.60.0 + '@rollup/rollup-linux-ppc64-musl': 4.60.0 + '@rollup/rollup-linux-riscv64-gnu': 4.60.0 + '@rollup/rollup-linux-riscv64-musl': 4.60.0 + '@rollup/rollup-linux-s390x-gnu': 4.60.0 + '@rollup/rollup-linux-x64-gnu': 4.60.0 + '@rollup/rollup-linux-x64-musl': 4.60.0 + '@rollup/rollup-openbsd-x64': 4.60.0 + '@rollup/rollup-openharmony-arm64': 4.60.0 + '@rollup/rollup-win32-arm64-msvc': 4.60.0 + '@rollup/rollup-win32-ia32-msvc': 4.60.0 + '@rollup/rollup-win32-x64-gnu': 4.60.0 + '@rollup/rollup-win32-x64-msvc': 4.60.0 fsevents: 2.3.3 root-link-target@3.1.0: @@ -25699,7 +25225,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -25735,14 +25261,6 @@ snapshots: s.color@0.0.15: {} - safe-array-concat@1.1.3: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -25759,11 +25277,6 @@ snapshots: execa: 5.1.1 path-name: 1.0.0 - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 @@ -25780,7 +25293,7 @@ snapshots: dependencies: suf-log: 2.5.3 - sax@1.4.4: {} + sax@1.5.0: {} saxes@6.0.0: dependencies: @@ -25799,7 +25312,7 @@ snapshots: '@secretlint/formatter': 10.2.2 '@secretlint/node': 10.2.2 '@secretlint/profiler': 10.2.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 globby: 14.1.0 read-pkg: 9.0.1 transitivePeerDependencies: @@ -25824,7 +25337,7 @@ snapshots: send@1.2.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -25838,10 +25351,6 @@ snapshots: transitivePeerDependencies: - supports-color - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - serve-static@2.2.1: dependencies: encodeurl: 2.0.0 @@ -25867,12 +25376,6 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - setimmediate@1.0.5: {} setprototypeof@1.1.0: {} @@ -25883,19 +25386,13 @@ snapshots: dependencies: tslib: 2.8.1 - sha.js@2.4.12: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - to-buffer: 1.2.2 - shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 sharp@0.34.5: dependencies: - '@img/colour': 1.0.0 + '@img/colour': 1.1.0 detect-libc: 2.1.2 semver: 7.7.4 optionalDependencies: @@ -25943,6 +25440,17 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + shiki@4.0.2: + dependencies: + '@shikijs/core': 4.0.2 + '@shikijs/engine-javascript': 4.0.2 + '@shikijs/engine-oniguruma': 4.0.2 + '@shikijs/langs': 4.0.2 + '@shikijs/themes': 4.0.2 + '@shikijs/types': 4.0.2 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + shlex@2.1.2: {} side-channel-list@1.0.0: @@ -26011,11 +25519,11 @@ snapshots: simple-concat: 1.0.1 optional: true - simple-git@3.32.2: + simple-git@3.33.0: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -26027,12 +25535,12 @@ snapshots: sisteransi@1.0.5: {} - sitemap@8.0.2: + sitemap@9.0.1: dependencies: - '@types/node': 17.0.45 + '@types/node': 24.12.0 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.4 + sax: 1.5.0 slash@3.0.0: {} @@ -26059,7 +25567,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -26142,6 +25650,8 @@ snapshots: std-env@3.10.0: {} + std-env@4.0.0: {} + stdin-discarder@0.2.2: {} stdin-discarder@0.3.1: {} @@ -26151,7 +25661,7 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@10.2.12(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + storybook@10.3.3(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 2.0.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -26159,7 +25669,7 @@ snapshots: '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 - esbuild: 0.27.3 + esbuild: 0.27.4 open: 10.2.0 recast: 0.23.11 semver: 7.7.4 @@ -26174,18 +25684,6 @@ snapshots: - react-dom - utf-8-validate - stream-browserify@3.0.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - - stream-http@3.2.0: - dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - xtend: 4.0.2 - stream-replace-string@2.0.0: {} stream-shift@1.0.3: {} @@ -26218,41 +25716,18 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 string-width@7.2.0: dependencies: emoji-regex: 10.6.0 get-east-asian-width: 1.5.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 string-width@8.2.0: dependencies: get-east-asian-width: 1.5.0 - strip-ansi: 7.1.2 - - string.prototype.trim@1.2.10: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - string.prototype.trimend@1.0.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 + strip-ansi: 7.2.0 string_decoder@1.1.1: dependencies: @@ -26271,7 +25746,7 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.2: + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -26300,7 +25775,7 @@ snapshots: strip-json-comments@5.0.3: {} - strnum@2.1.2: {} + strnum@2.2.0: {} structured-source@4.0.0: dependencies: @@ -26339,53 +25814,31 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svgo@4.0.0: + svgo@4.0.1: dependencies: commander: 11.1.0 css-select: 5.2.2 - css-tree: 3.1.0 + css-tree: 3.2.1 css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.4.4 + sax: 1.5.0 - swagger-ui-dist@5.31.2: + swagger-ui-dist@5.32.0: dependencies: '@scarf/scarf': 1.4.0 swagger-ui-express@5.0.1(express@5.2.1): dependencies: express: 5.2.1 - swagger-ui-dist: 5.31.2 + swagger-ui-dist: 5.32.0 symbol-tree@3.2.4: {} symlink-dir@6.0.5: dependencies: better-path-resolve: 1.0.0 - rename-overwrite: 6.0.3 - - syncpack@13.0.4(typescript@5.9.3): - dependencies: - chalk: 5.6.2 - chalk-template: 1.1.2 - commander: 13.1.0 - cosmiconfig: 9.0.0(typescript@5.9.3) - effect: 3.19.19 - enquirer: 2.4.1 - fast-check: 3.23.2 - globby: 14.1.0 - jsonc-parser: 3.3.1 - minimatch: 9.0.5 - npm-package-arg: 12.0.2 - ora: 8.2.0 - prompts: 2.4.2 - read-yaml-file: 2.1.0 - semver: 7.7.4 - tightrope: 0.2.0 - ts-toolbelt: 9.6.0 - transitivePeerDependencies: - - typescript + rename-overwrite: 6.0.6 table-layout@1.0.2: dependencies: @@ -26413,14 +25866,14 @@ snapshots: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 - pump: 3.0.3 + pump: 3.0.4 tar-stream: 2.2.0 optional: true - tar-fs@3.1.1: + tar-fs@3.1.2: dependencies: - pump: 3.0.3 - tar-stream: 3.1.7 + pump: 3.0.4 + tar-stream: 3.1.8 optionalDependencies: bare-fs: 4.5.5 bare-path: 3.0.0 @@ -26437,25 +25890,18 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar-stream@3.1.7: + tar-stream@3.1.8: dependencies: b4a: 1.8.0 + bare-fs: 4.5.5 fast-fifo: 1.3.2 streamx: 2.23.0 transitivePeerDependencies: - bare-abort-controller + - bare-buffer - react-native-b4a - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - tar@7.5.9: + tar@7.5.11: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -26474,7 +25920,6 @@ snapshots: transitivePeerDependencies: - bare-abort-controller - react-native-b4a - optional: true temp-dir@2.0.0: {} @@ -26482,11 +25927,11 @@ snapshots: dependencies: rimraf: 2.6.3 - temporal-polyfill@0.3.0: + temporal-polyfill@0.3.2: dependencies: - temporal-spec: 0.3.0 + temporal-spec: 0.3.1 - temporal-spec@0.3.0: {} + temporal-spec@0.3.1: {} tempy@1.0.1: dependencies: @@ -26524,12 +25969,6 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 - tightrope@0.2.0: {} - - timers-browserify@2.0.12: - dependencies: - setimmediate: 1.0.5 - tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 @@ -26541,7 +25980,9 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.0.2: {} + tinyclip@0.1.12: {} + + tinyexec@1.0.4: {} tinyglobby@0.2.15: dependencies: @@ -26552,7 +25993,7 @@ snapshots: tinyrainbow@2.0.0: {} - tinyrainbow@3.0.3: {} + tinyrainbow@3.1.0: {} tinyspy@4.0.4: {} @@ -26564,12 +26005,6 @@ snapshots: tmp@0.2.5: {} - to-buffer@1.2.2: - dependencies: - isarray: 2.0.5 - safe-buffer: 5.2.1 - typed-array-buffer: 1.0.3 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -26596,32 +26031,32 @@ snapshots: tree-sitter-c-sharp@0.23.1: dependencies: - node-addon-api: 8.5.0 + node-addon-api: 8.6.0 node-gyp-build: 4.8.4 tree-sitter-java@0.23.5: dependencies: - node-addon-api: 8.5.0 + node-addon-api: 8.6.0 node-gyp-build: 4.8.4 tree-sitter-javascript@0.23.1: dependencies: - node-addon-api: 8.5.0 + node-addon-api: 8.6.0 node-gyp-build: 4.8.4 tree-sitter-javascript@0.25.0: dependencies: - node-addon-api: 8.5.0 + node-addon-api: 8.6.0 node-gyp-build: 4.8.4 tree-sitter-python@0.25.0: dependencies: - node-addon-api: 8.5.0 + node-addon-api: 8.6.0 node-gyp-build: 4.8.4 tree-sitter-typescript@0.23.2: dependencies: - node-addon-api: 8.5.0 + node-addon-api: 8.6.0 node-gyp-build: 4.8.4 tree-sitter-javascript: 0.23.1 @@ -26641,19 +26076,10 @@ snapshots: ts-dedent@2.2.0: {} - ts-toolbelt@9.6.0: {} - tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: typescript: 5.9.3 - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -26666,17 +26092,15 @@ snapshots: tsx@4.21.0: dependencies: - esbuild: 0.27.3 + esbuild: 0.27.4 get-tsconfig: 4.13.6 optionalDependencies: fsevents: 2.3.3 - tty-browserify@0.0.1: {} - tuf-js@3.1.0: dependencies: '@tufjs/models': 3.0.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 make-fetch-happen: 14.0.3 transitivePeerDependencies: - supports-color @@ -26684,7 +26108,7 @@ snapshots: tuf-js@4.1.0: dependencies: '@tufjs/models': 4.1.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 make-fetch-happen: 15.0.4 transitivePeerDependencies: - supports-color @@ -26727,39 +26151,6 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.7: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - typed-rest-client@1.8.11: dependencies: qs: 6.15.0 @@ -26777,9 +26168,9 @@ snapshots: '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 markdown-it: 14.1.1 - minimatch: 9.0.8 + minimatch: 9.0.9 typescript: 5.9.3 - yaml: 2.8.2 + yaml: 2.8.3 typesafe-path@0.2.2: {} @@ -26787,13 +26178,13 @@ snapshots: dependencies: semver: 7.7.4 - typescript-eslint@8.56.1(eslint@10.0.2)(typescript@5.9.3): + typescript-eslint@8.57.0(eslint@10.0.3)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2)(typescript@5.9.3))(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.56.1(eslint@10.0.2)(typescript@5.9.3) - eslint: 10.0.2 + '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.0(eslint@10.0.3)(typescript@5.9.3) + eslint: 10.0.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -26816,22 +26207,17 @@ snapshots: umask@1.1.0: {} - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - uncrypto@0.1.3: {} underscore@1.13.8: {} undici-types@5.26.5: {} + undici-types@7.16.0: {} + undici-types@7.18.2: {} - undici@7.22.0: {} + undici@7.24.3: {} unicorn-magic@0.1.0: {} @@ -26851,7 +26237,7 @@ snapshots: unifont@0.7.4: dependencies: - css-tree: 3.1.0 + css-tree: 3.2.1 ofetch: 1.5.1 ohash: 2.0.11 @@ -26951,8 +26337,8 @@ snapshots: anymatch: 3.1.3 chokidar: 5.0.0 destr: 2.0.5 - h3: 1.15.5 - lru-cache: 11.2.6 + h3: 1.15.6 + lru-cache: 11.2.7 node-fetch-native: 1.6.7 ofetch: 1.5.1 ufo: 1.6.3 @@ -26976,11 +26362,6 @@ snapshots: url-join@4.0.1: {} - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.15.0 - use-sync-external-store@1.6.0(react@19.2.4): dependencies: react: 19.2.4 @@ -26989,14 +26370,6 @@ snapshots: util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.2.0 - is-generator-function: 1.1.2 - is-typed-array: 1.1.15 - which-typed-array: 1.1.20 - uuid@11.1.0: {} uuid@8.3.2: {} @@ -27020,8 +26393,6 @@ snapshots: dependencies: builtins: 5.1.0 - validate-npm-package-name@6.0.2: {} - validate-npm-package-name@7.0.2: {} vary@1.1.2: {} @@ -27047,7 +26418,23 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-checker@0.12.0(eslint@10.0.2)(optionator@0.9.4)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-checker@0.12.0(eslint@10.0.3)(optionator@0.9.4)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)): + dependencies: + '@babel/code-frame': 7.29.0 + chokidar: 4.0.3 + npm-run-path: 6.0.0 + picocolors: 1.1.1 + picomatch: 4.0.3 + tiny-invariant: 1.3.3 + tinyglobby: 0.2.15 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) + vscode-uri: 3.1.0 + optionalDependencies: + eslint: 10.0.3 + optionator: 0.9.4 + typescript: 5.9.3 + + vite-plugin-checker@0.12.0(eslint@10.0.3)(optionator@0.9.4)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@babel/code-frame': 7.29.0 chokidar: 4.0.3 @@ -27056,113 +26443,157 @@ snapshots: picomatch: 4.0.3 tiny-invariant: 1.3.3 tinyglobby: 0.2.15 - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) vscode-uri: 3.1.0 optionalDependencies: - eslint: 10.0.2 + eslint: 10.0.3 optionator: 0.9.4 typescript: 5.9.3 - vite-plugin-dts@4.5.4(@types/node@25.3.0)(rollup@4.49.0)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-dts@4.5.4(@types/node@25.5.0)(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - '@microsoft/api-extractor': 7.57.6(@types/node@25.3.0) - '@rollup/pluginutils': 5.3.0(rollup@4.49.0) + '@microsoft/api-extractor': 7.57.7(@types/node@25.5.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) '@volar/typescript': 2.4.28 '@vue/language-core': 2.2.0(typescript@5.9.3) compare-versions: 6.1.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 kolorist: 1.8.0 local-pkg: 1.1.2 magic-string: 0.30.21 typescript: 5.9.3 optionalDependencies: - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-node-polyfills@0.25.0(rollup@4.49.0)(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-dts@4.5.4(@types/node@25.5.0)(rollup@4.60.0)(typescript@5.9.3)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.49.0) - node-stdlib-browser: 1.3.1 - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + '@microsoft/api-extractor': 7.57.7(@types/node@25.5.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) + '@volar/typescript': 2.4.28 + '@vue/language-core': 2.2.0(typescript@5.9.3) + compare-versions: 6.1.1 + debug: 4.4.3 + kolorist: 1.8.0 + local-pkg: 1.1.2 + magic-string: 0.30.21 + typescript: 5.9.3 + optionalDependencies: + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: + - '@types/node' - rollup + - supports-color - vite@6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3): dependencies: - esbuild: 0.25.12 + esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.49.0 + postcss: 8.5.8 + rollup: 4.60.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 fsevents: 2.3.3 + lightningcss: 1.32.0 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.8.3 - vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2): dependencies: - esbuild: 0.27.3 - fdir: 6.5.0(picomatch@4.0.3) + lightningcss: 1.32.0 picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.49.0 + postcss: 8.5.8 + rolldown: 1.0.0-rc.10 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.3.0 + '@types/node': 25.5.0 + esbuild: 0.27.4 fsevents: 2.3.3 tsx: 4.21.0 yaml: 2.8.2 - vitefu@1.1.2(vite@6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)): + vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.3 + postcss: 8.5.8 + rolldown: 1.0.0-rc.10 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.5.0 + esbuild: 0.27.4 + fsevents: 2.3.3 + tsx: 4.21.0 + yaml: 2.8.3 + + vitefu@1.1.2(vite@7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3)): optionalDependencies: - vite: 6.4.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) - - vitest@4.0.18(@types/node@25.3.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jsdom@25.0.1)(tsx@4.21.0)(yaml@2.8.2): - dependencies: - '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.0.18 - '@vitest/runner': 4.0.18 - '@vitest/snapshot': 4.0.18 - '@vitest/spy': 4.0.18 - '@vitest/utils': 4.0.18 - es-module-lexer: 1.7.0 + vite: 7.3.1(@types/node@25.5.0)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.3) + + vitest@4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)): + dependencies: + '@vitest/expect': 4.1.0 + '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.0 + '@vitest/runner': 4.1.0 + '@vitest/snapshot': 4.1.0 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.10.0 + std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.2 + tinyexec: 1.0.4 tinyglobby: 0.2.15 - tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@25.3.0)(tsx@4.21.0)(yaml@2.8.2) + tinyrainbow: 3.1.0 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.3.0 - '@vitest/ui': 4.0.18(vitest@4.0.18) - happy-dom: 20.7.0 + '@types/node': 25.5.0 + '@vitest/ui': 4.1.0(vitest@4.1.0) + happy-dom: 20.8.9 jsdom: 25.0.1 transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - yaml - vm-browserify@1.1.2: {} + vitest@4.1.0(@types/node@25.5.0)(@vitest/ui@4.1.0)(happy-dom@20.8.9)(jsdom@25.0.1)(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.0 + '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.0 + '@vitest/runner': 4.1.0 + '@vitest/snapshot': 4.1.0 + '@vitest/spy': 4.1.0 + '@vitest/utils': 4.1.0 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 8.0.1(@types/node@25.5.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.5.0 + '@vitest/ui': 4.1.0(vitest@4.1.0) + happy-dom: 20.8.9 + jsdom: 25.0.1 + transitivePeerDependencies: + - msw volar-service-css@0.0.68(@volar/language-service@2.4.28): dependencies: @@ -27281,7 +26712,7 @@ snapshots: web-namespaces@2.0.1: {} - web-tree-sitter@0.26.6: {} + web-tree-sitter@0.26.7: {} webidl-conversions@7.0.0: {} @@ -27308,22 +26739,6 @@ snapshots: is-string: 1.1.1 is-symbol: 1.1.1 - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.2 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.20 - which-collection@1.0.2: dependencies: is-map: 2.0.3 @@ -27373,10 +26788,6 @@ snapshots: dependencies: string-width: 4.2.3 - widest-line@5.0.0: - dependencies: - string-width: 7.2.0 - word-wrap@1.2.5: {} wordwrapjs@4.0.1: @@ -27384,8 +26795,6 @@ snapshots: reduce-flatten: 2.0.0 typical: 5.2.0 - workerpool@9.3.4: {} - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -27402,13 +26811,13 @@ snapshots: dependencies: ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrappy@1.0.2: {} @@ -27442,12 +26851,12 @@ snapshots: xml2js@0.5.0: dependencies: - sax: 1.4.4 + sax: 1.5.0 xmlbuilder: 11.0.1 xml2js@0.6.2: dependencies: - sax: 1.4.4 + sax: 1.5.0 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} @@ -27481,23 +26890,16 @@ snapshots: vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 - yaml: 2.7.1 - - yaml@2.7.1: {} + yaml: 2.8.3 yaml@2.8.2: {} + yaml@2.8.3: {} + yargs-parser@21.1.1: {} yargs-parser@22.0.0: {} - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -27530,25 +26932,12 @@ snapshots: yocto-queue@1.2.2: {} - yocto-spinner@0.2.3: - dependencies: - yoctocolors: 2.1.2 - yoctocolors@2.1.2: {} yoga-layout-prebuilt@1.10.0: dependencies: '@types/yoga-layout': 1.9.2 - zod-to-json-schema@3.25.1(zod@3.25.76): - dependencies: - zod: 3.25.76 - - zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.25.76): - dependencies: - typescript: 5.9.3 - zod: 3.25.76 - zod-validation-error@4.0.2(zod@4.3.6): dependencies: zod: 4.3.6 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e161307424c..608008579dc 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,16 +1,202 @@ packages: - - "packages/*" - - "e2e" - - "website" + - packages/* + - e2e + - website - "!packages/http-client-csharp/**" - "!packages/http-client-java/**" - "!packages/http-client-python/**" -overrides: - "cross-spawn@>=7.0.0 <7.0.5": "^7.0.5" - rollup: 4.49.0 # Regression in 4.50.0 https://github.com/rollup/rollup/issues/6099 +catalog: + "@alloy-js/cli": ^0.22.0 + "@alloy-js/core": ^0.22.0 + "@alloy-js/csharp": ^0.22.0 + "@alloy-js/markdown": ^0.22.0 + "@alloy-js/python": ^0.3.0 + "@alloy-js/rollup-plugin": ^0.1.0 + "@alloy-js/typescript": ^0.22.0 + "@astrojs/check": ^0.9.7 + "@astrojs/react": ^5.0.0 + "@astrojs/starlight": ^0.38.1 + "@azure/identity": ~4.13.0 + "@azure/storage-blob": ~12.31.0 + "@babel/code-frame": ~7.29.0 + "@babel/core": ^7.29.0 + "@chronus/chronus": ^1.3.1 + "@chronus/github": ^1.0.6 + "@chronus/github-pr-commenter": ^1.0.6 + "@docsearch/css": ^4.6.0 + "@docsearch/js": ^4.6.0 + "@eslint/js": ^10.0.1 + "@expressive-code/core": ^0.41.7 + "@fluentui/react-components": ~9.73.3 + "@fluentui/react-icons": ^2.0.323 + "@fluentui/react-list": ^9.6.12 + "@inquirer/prompts": ^8.3.0 + "@microsoft/api-extractor": ^7.57.7 + "@microsoft/api-extractor-model": ^7.33.4 + "@microsoft/tsdoc": ^0.16.0 + "@microsoft/tsdoc-config": ^0.18.1 + "@octokit/core": ^7.0.6 + "@octokit/plugin-paginate-graphql": ^6.0.0 + "@octokit/plugin-rest-endpoint-methods": ^17.0.0 + "@playwright/test": ^1.58.2 + "@pnpm/workspace.find-packages": ^1000.0.64 + "@scalar/json-magic": ^0.11.5 + "@scalar/openapi-parser": ^0.24.1 + "@scalar/openapi-types": ^0.5.0 + "@storybook/cli": ^10.3.3 + "@storybook/react-vite": ^10.3.3 + "@testing-library/dom": ^10.4.1 + "@testing-library/jest-dom": ^6.9.1 + "@testing-library/react": ^16.3.2 + "@types/babel__code-frame": ~7.27.0 + "@types/body-parser": ^1.19.6 + "@types/cross-spawn": ~6.0.6 + "@types/debounce": ~1.2.4 + "@types/deep-equal": ^1.0.4 + "@types/express": ^5.0.6 + "@types/micromatch": ^4.0.10 + "@types/morgan": ^1.9.10 + "@types/multer": ^2.1.0 + "@types/mustache": ~4.2.6 + "@types/node": ~25.5.0 + "@types/plist": ~3.0.5 + "@types/react": ~19.2.14 + "@types/react-dom": ~19.2.3 + "@types/remark-heading-id": ^1.0.0 + "@types/semver": ^7.7.1 + "@types/swagger-ui": ~5.32.0 + "@types/swagger-ui-dist": ~3.30.6 + "@types/swagger-ui-express": ^4.1.8 + "@types/which": ^3.0.4 + "@types/xml2js": ^0.4.14 + "@types/yargs": ~17.0.35 + "@typescript-eslint/parser": ^8.57.0 + "@typescript-eslint/rule-tester": ^8.57.0 + "@typescript-eslint/types": ^8.57.0 + "@typescript-eslint/utils": ^8.57.0 + "@typespec/ts-http-runtime": 0.3.4 + "@vitejs/plugin-react": ~6.0.1 + "@vitest/coverage-v8": ^4.1.0 + "@vitest/eslint-plugin": ^1.6.12 + "@vitest/ui": ^4.1.0 + "@vscode/extension-telemetry": ^1.5.1 + "@vscode/test-electron": ^2.5.2 + "@vscode/test-web": ^0.0.80 + "@vscode/vsce": ~3.7.1 + "@yarnpkg/core": ^4.6.0 + "@yarnpkg/fslib": ^3.1.4 + "@yarnpkg/plugin-nm": ^4.0.8 + "@yarnpkg/plugin-npm": ^3.4.0 + "@yarnpkg/plugin-pnp": ^4.1.3 + ajv: ~8.18.0 + ajv-formats: ~3.0.1 + astro: ^6.0.4 + astro-expressive-code: ^0.41.7 + astro-rehype-relative-markdown-links: ^0.18.1 + body-parser: ^2.2.2 + c8: ^11.0.0 + change-case: ~5.4.4 + chokidar: ~5.0.0 + clsx: ^2.1.1 + concurrently: ^9.2.1 + cross-env: ~10.1.0 + cross-spawn: ^7.0.6 + cspell: ^9.7.0 + date-fns: ^4.1.0 + debounce: ~3.0.0 + decimal.js: ^10.6.0 + deep-equal: ^2.2.3 + ecmarkup: ~23.0.2 + env-paths: ^4.0.0 + es-module-shims: ~2.8.0 + esbuild: ^0.27.4 + esbuild-plugins-node-modules-polyfill: ^1.8.1 + eslint: ^10.0.3 + eslint-plugin-react-hooks: 7.0.1 + eslint-plugin-unicorn: ^63.0.0 + execa: ^9.6.1 + express: ^5.2.1 + fs-extra: ^11.3.4 + globby: ~16.1.1 + grammarkdown: ~3.3.2 + happy-dom: ^20.8.9 + inquirer: ^13.3.0 + is-unicode-supported: ^2.1.0 + json5: ^2.2.3 + log-symbols: ^7.0.1 + lzutf8: 0.6.3 + micromatch: ^4.0.8 + monaco-editor: ~0.55.1 + monaco-editor-core: ^0.55.1 + morgan: ^1.10.1 + multer: ^2.1.1 + mustache: ~4.2.0 + onigasm: ~2.2.5 + ora: ^9.3.0 + p-limit: ^7.3.0 + pathe: ^2.0.3 + picocolors: ~1.1.1 + playwright: ^1.58.2 + plist: ~3.1.0 + postject: 1.0.0-alpha.6 + prettier: ~3.8.1 + prettier-plugin-astro: ^0.14.1 + prettier-plugin-organize-imports: ~4.3.0 + prettier-plugin-sh: ^0.18.0 + prism-react-renderer: ^2.4.1 + react: ~19.2.4 + react-dom: ~19.2.4 + react-error-boundary: ^6.1.1 + react-hotkeys-hook: ^5.2.4 + react-markdown: ^10.1.0 + rehype-mermaid: ^3.0.0 + remark-heading-id: ^1.0.1 + rimraf: ~6.1.3 + rollup-plugin-visualizer: 6.0.4 + semver: ^7.7.4 + sharp: ^0.34.5 + simple-git: ^3.33.0 + source-map-support: ~0.5.21 + storybook: ^10.3.3 + strip-json-comments: ~5.0.3 + swagger-ui-dist: ^5.32.0 + swagger-ui-express: ^5.0.1 + tar: ^7.5.11 + temporal-polyfill: ^0.3.2 + tree-sitter-c-sharp: ^0.23.1 + tree-sitter-java: ^0.23.5 + tree-sitter-javascript: ^0.25.0 + tree-sitter-python: ^0.25.0 + tree-sitter-typescript: ^0.23.2 + tsx: ^4.21.0 + typedoc: ^0.28.17 + typedoc-plugin-markdown: ^4.10.0 + typescript: ~5.9.3 + typescript-eslint: ^8.57.0 + uri-template: ^2.0.0 + vite: ^8.0.1 + vite-plugin-checker: ^0.12.0 + vite-plugin-dts: 4.5.4 + vitest: ^4.1.0 + vscode-languageclient: ~9.0.1 + vscode-languageserver: ~9.0.1 + vscode-languageserver-textdocument: ~1.0.12 + vscode-oniguruma: ~2.0.1 + vscode-textmate: ~9.3.2 + web-tree-sitter: ^0.26.7 + which: ^6.0.1 + xml2js: ^0.6.2 + yaml: ~2.8.2 + yargs: ~18.0.0 + +minimumReleaseAge: 2880 -# Minimum age (in minutes) for a new dependency version to be able to be used. -minimumReleaseAge: 2880 # 2 days minimumReleaseAgeExclude: - "@alloy-js/*" + +overrides: + dompurify: ^3.3.3 # Monaco editor pinned to 3.2.7 https://github.com/microsoft/monaco-editor/issues/5248 + cross-spawn@>=7.0.0 <7.0.5: ">=7.0.5" + diff@>=6.0.0 <8.0.3: ">=8.0.3" + yaml@>=2.0.0 <2.8.3: ">=2.8.3" diff --git a/website/.scripts/build.ts b/website/.scripts/build.ts index 52a098c4af4..c74e7696794 100644 --- a/website/.scripts/build.ts +++ b/website/.scripts/build.ts @@ -3,8 +3,8 @@ import { runOrExit } from "@typespec/internal-build-utils"; import { copyFile } from "fs/promises"; import { join, resolve } from "path"; -if (process.env.TYPESPEC_SKIP_DOCUSAURUS_BUILD?.toLowerCase() === "true") { - console.log("Skipping docusaurus build: TYPESPEC_SKIP_DOCUSAURUS_BUILD=true"); +if (process.env.TYPESPEC_SKIP_WEBSITE_BUILD?.toLowerCase() === "true") { + console.log("Skipping website build: TYPESPEC_SKIP_WEBSITE_BUILD=true"); process.exit(0); } diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 8bb1ec30150..324902b35e3 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -6,33 +6,94 @@ import { processSidebar } from "@typespec/astro-utils/sidebar"; import astroExpressiveCode from "astro-expressive-code"; import rehypeAstroRelativeMarkdownLinks from "astro-rehype-relative-markdown-links"; import { defineConfig } from "astro/config"; +import { readdirSync, readFileSync } from "node:fs"; import { resolve } from "pathe"; import rehypeMermaid from "rehype-mermaid"; import remarkHeadingID from "remark-heading-id"; -import { nodePolyfills } from "vite-plugin-node-polyfills"; import current from "./src/content/current-sidebar"; +import { computeSriHash } from "./src/utils/sri-hash"; + +/** Scan the release-notes directory and return the slug of the latest release note. */ +function getLatestReleaseNoteSlug() { + const dir = resolve(import.meta.dirname, "src/content/docs/release-notes"); + const files = readdirSync(dir).filter((f) => /\.mdx?$/.test(f) && !f.startsWith("index")); + + let latestSlug = ""; + let latestDate = 0; + + for (const file of files) { + const content = readFileSync(resolve(dir, file), "utf-8"); + const fmMatch = content.match(/^---\n([\s\S]*?)\n---/); + if (!fmMatch) continue; + + const dateMatch = fmMatch[1].match(/releaseDate:\s*(\S+)/); + if (!dateMatch) continue; + + const date = new Date(dateMatch[1]).getTime(); + if (date > latestDate) { + latestDate = date; + const slugMatch = fmMatch[1].match(/slug:\s*(\S+)/); + latestSlug = slugMatch ? slugMatch[1] : `release-notes/${file.replace(/\.mdx?$/, "")}`; + } + } + + return latestSlug; +} + +const latestReleaseNote = getLatestReleaseNoteSlug(); const base = process.env.TYPESPEC_WEBSITE_BASE_PATH ?? "/"; +const initJsIntegrity = computeSriHash("1ds-init.js"); + // https://astro.build/config export default defineConfig({ base, site: "https://typespec.io", trailingSlash: "always", + redirects: { + // Point the old release-notes index to the latest release note. + ...(latestReleaseNote ? { "/release-notes/": `/${latestReleaseNote}/` } : {}), + // Redirect old /docs/ date-based paths to version-based (already existed in HEAD, updated targets) + "/docs/release-notes/release-2025-04-02/": "/release-notes/typespec-1-0-0-rc-0/", + "/docs/release-notes/release-2025-04-22/": "/release-notes/typespec-1-0-0-rc-1/", + "/docs/release-notes/release-2025-05-06/": "/release-notes/typespec-1-0-0/", + "/docs/release-notes/release-2025-06-10/": "/release-notes/typespec-1-1-0/", + "/docs/release-notes/release-2025-07-15/": "/release-notes/typespec-1-2-0/", + "/docs/release-notes/release-2025-08-06/": "/release-notes/typespec-1-3-0/", + "/docs/release-notes/release-2025-09-09/": "/release-notes/typespec-1-4-0/", + "/docs/release-notes/release-2025-10-08/": "/release-notes/typespec-1-5-0/", + "/docs/release-notes/release-2025-11-11/": "/release-notes/typespec-1-6-0/", + "/docs/release-notes/release-2025-12-09/": "/release-notes/typespec-1-7-0/", + "/docs/release-notes/release-2026-01-13/": "/release-notes/typespec-1-8-0/", + "/docs/release-notes/release-2026-02-10/": "/release-notes/typespec-1-9-0/", + "/docs/release-notes/release-2026-03-10/": "/release-notes/typespec-1-10-0/", + }, integrations: [ astroExpressiveCode(), starlight({ title: "TypeSpec", - sidebar: await processSidebar( - resolve(import.meta.dirname, "src/content/docs"), - "docs", - current, - ), + sidebar: [ + ...(await processSidebar( + resolve(import.meta.dirname, "src/content/docs"), + "docs", + current, + )), + { + label: "🚀 Release Notes", + link: latestReleaseNote ? `/${latestReleaseNote}/` : "/release-notes/", + }, + { + label: "🚀 Release Notes", + autogenerate: { directory: "release-notes" }, + }, + ], favicon: "/img/favicon.svg", customCss: ["./src/css/custom.css"], components: { Header: "./src/components/header/header.astro", PageFrame: "./src/components/starlight-overrides/PageFrame.astro", + Sidebar: "./src/components/starlight-overrides/Sidebar.astro", }, expressiveCode: false, // defined directly above head: [ @@ -40,6 +101,7 @@ export default defineConfig({ tag: "script", attrs: { src: "https://consentdeliveryfd.azurefd.net/mscc/lib/v2/wcp-consent.js", + crossorigin: "anonymous", }, }, { @@ -48,6 +110,7 @@ export default defineConfig({ type: "module", async: true, src: "1ds-init.js", + integrity: initJsIntegrity, }, }, ], @@ -78,15 +141,4 @@ export default defineConfig({ langs: [TypeSpecLang], }, }, - vite: { - plugins: [ - // @ts-expect-error incompatible types due to version mismatch - nodePolyfills({ - include: ["buffer"], - globals: { - process: "dev", - }, - }), - ], - }, }); diff --git a/website/package.json b/website/package.json index 218e511992f..21947729e7b 100644 --- a/website/package.json +++ b/website/package.json @@ -8,7 +8,7 @@ "dev": "astro dev", "start": "astro dev", "build": "tsx ./.scripts/build.ts", - "build:web": "pnpm regen-all-packages-docs && astro check --minimumFailingSeverity hint && astro build", + "build:web": "pnpm regen-all-packages-docs && astro check --minimumFailingSeverity hint && NODE_OPTIONS=\"--max-old-space-size=8192\" astro build", "preview": "astro preview", "astro": "astro", "update-playground-versions": "tsx ./.scripts/update-playground-versions.ts", @@ -16,32 +16,32 @@ "regen-all-packages-docs": "pnpm -w --filter \"@typespec/website...\" --filter \"!@typespec/monorepo\" run regen-docs" }, "dependencies": { - "@astrojs/check": "^0.9.4", - "@astrojs/react": "^4.4.2", - "@astrojs/starlight": "^0.37.0", - "@docsearch/css": "^4.3.2", - "@docsearch/js": "^4.3.2", - "@expressive-code/core": "^0.41.2", - "@fluentui/react-components": "~9.73.1", - "@fluentui/react-icons": "^2.0.292", + "@astrojs/check": "catalog:", + "@astrojs/react": "catalog:", + "@astrojs/starlight": "catalog:", + "@docsearch/css": "catalog:", + "@docsearch/js": "catalog:", + "@expressive-code/core": "catalog:", + "@fluentui/react-components": "catalog:", + "@fluentui/react-icons": "catalog:", "@typespec/compiler": "workspace:^", "@typespec/playground": "workspace:^", - "astro": "^5.16.5", - "astro-rehype-relative-markdown-links": "^0.18.1", - "clsx": "^2.1.1", - "date-fns": "^4.1.0", - "es-module-shims": "~2.8.0", - "pathe": "^2.0.3", - "prism-react-renderer": "^2.4.1", - "react": "~19.2.3", - "react-dom": "~19.2.3", - "sharp": "^0.34.2", - "typescript": "~5.9.3" + "astro": "catalog:", + "astro-rehype-relative-markdown-links": "catalog:", + "clsx": "catalog:", + "date-fns": "catalog:", + "es-module-shims": "catalog:", + "pathe": "catalog:", + "prism-react-renderer": "catalog:", + "react": "catalog:", + "react-dom": "catalog:", + "sharp": "catalog:", + "typescript": "catalog:" }, "devDependencies": { - "@types/react": "~19.2.7", - "@types/react-dom": "~19.2.2", - "@types/remark-heading-id": "^1.0.0", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/remark-heading-id": "catalog:", "@typespec/astro-utils": "workspace:^", "@typespec/compiler": "workspace:^", "@typespec/events": "workspace:^", @@ -62,10 +62,9 @@ "@typespec/tspd": "workspace:^", "@typespec/versioning": "workspace:^", "@typespec/xml": "workspace:^", - "astro-expressive-code": "^0.41.2", - "rehype-mermaid": "^3.0.0", - "remark-heading-id": "^1.0.1", - "rimraf": "~6.1.3", - "vite-plugin-node-polyfills": "^0.25.0" + "astro-expressive-code": "catalog:", + "rehype-mermaid": "catalog:", + "remark-heading-id": "catalog:", + "rimraf": "catalog:" } } diff --git a/website/playground-versions.json b/website/playground-versions.json index 037ecd2b484..855b2180a69 100644 --- a/website/playground-versions.json +++ b/website/playground-versions.json @@ -1,4 +1,5 @@ [ + "1.11.x", "1.10.x", "1.9.x", "1.8.x", diff --git a/website/src/components/playground-component/playground.tsx b/website/src/components/playground-component/playground.tsx index fd1b3618093..2b19e2f401b 100644 --- a/website/src/components/playground-component/playground.tsx +++ b/website/src/components/playground-component/playground.tsx @@ -1,6 +1,6 @@ import versions from "@site/playground-versions.json"; import { useTheme } from "@typespec/astro-utils/utils/theme-react"; -import { ImportToolbarButton, TypeSpecPlaygroundConfig } from "@typespec/playground-website"; +import { TypeSpecPlaygroundConfig, useImportCommandBarItem } from "@typespec/playground-website"; import { Footer, FooterVersionItem, @@ -27,6 +27,7 @@ export const WebsitePlayground = ({ versionData }: WebsitePlaygroundProps) => { return { theme: theme === "dark" ? "typespec-dark" : "typespec" }; }, [theme]); + const importItem = useImportCommandBarItem(); const imports = Object.keys(versionData.importMap.imports).filter( (x) => (x.match(/\//g) || []).length < 2, // Don't include sub imports as libraries. ); @@ -40,7 +41,7 @@ export const WebsitePlayground = ({ versionData }: WebsitePlaygroundProps) => { footer={} fallback={} onFileBug={fileBugToGithub} - commandBarButtons={} + commandBarItems={[importItem]} /> ); }; diff --git a/website/src/components/release-notification.astro b/website/src/components/release-notification.astro index 54e312cd976..b53ce130ce2 100644 --- a/website/src/components/release-notification.astro +++ b/website/src/components/release-notification.astro @@ -1,7 +1,11 @@ --- import { getCollection } from "astro:content"; -const releaseNotes = await getCollection("docs", (x) => x.id.startsWith("docs/release-notes")); -releaseNotes.sort((a, b) => a.id.localeCompare(b.id)); +const releaseNotes = await getCollection("docs", (x) => x.id.startsWith("release-notes/")); +releaseNotes.sort((a, b) => { + const dateA = a.data.releaseDate?.getTime() ?? 0; + const dateB = b.data.releaseDate?.getTime() ?? 0; + return dateA - dateB; +}); const last = releaseNotes[releaseNotes.length - 1]; const releaseDate = last.data.releaseDate; if (!releaseDate) { diff --git a/website/src/components/starlight-overrides/Sidebar.astro b/website/src/components/starlight-overrides/Sidebar.astro new file mode 100644 index 00000000000..4601c965b92 --- /dev/null +++ b/website/src/components/starlight-overrides/Sidebar.astro @@ -0,0 +1,51 @@ +--- +import MobileMenuFooter from "@astrojs/starlight/components/MobileMenuFooter.astro"; +import SidebarPersister from "@astrojs/starlight/components/SidebarPersister.astro"; +import SidebarSublist from "@astrojs/starlight/components/SidebarSublist.astro"; +import { getCollection } from "astro:content"; + +const { sidebar } = Astro.locals.starlightRoute; +const pathname = Astro.url.pathname; +const base = import.meta.env.BASE_URL; + +type SidebarEntry = (typeof sidebar)[number]; + +const isReleaseNotes = pathname.startsWith(base + "release-notes"); + +/** Returns true for sidebar groups that contain release notes entries. */ +function isReleaseNotesGroup(entry: SidebarEntry): boolean { + if (entry.type !== "group") return false; + return entry.entries.some((e) => e.type === "link" && e.href.startsWith(base + "release-notes/")); +} + +const filtered = sidebar.filter((entry) => + isReleaseNotes ? isReleaseNotesGroup(entry) : !isReleaseNotesGroup(entry), +); + +// Sort release notes entries by releaseDate so newest appear first. +if (isReleaseNotes) { + const releaseNotes = await getCollection("docs", (x) => x.id.startsWith("release-notes/")); + const dateByHref = new Map(); + for (const note of releaseNotes) { + const href = base + note.id + "/"; + dateByHref.set(href, note.data.releaseDate?.getTime() ?? 0); + } + for (const entry of filtered) { + if (entry.type === "group" && isReleaseNotesGroup(entry)) { + entry.entries.sort((a, b) => { + const dateA = a.type === "link" ? (dateByHref.get(a.href) ?? 0) : 0; + const dateB = b.type === "link" ? (dateByHref.get(b.href) ?? 0) : 0; + return dateB - dateA; + }); + } + } +} +--- + + + + + +
+ +
diff --git a/website/src/content.config.ts b/website/src/content.config.ts index 4b65bf1675e..12a246a22d2 100644 --- a/website/src/content.config.ts +++ b/website/src/content.config.ts @@ -1,7 +1,9 @@ import { docsLoader } from "@astrojs/starlight/loaders"; import { docsSchema } from "@astrojs/starlight/schema"; import { llmstxtSchema } from "@typespec/astro-utils/llmstxt/schema"; -import { defineCollection, z } from "astro:content"; +import { glob } from "astro/loaders"; +import { z } from "astro/zod"; +import { defineCollection } from "astro:content"; const authorSchema = z.object({ name: z.string(), @@ -26,8 +28,7 @@ export const collections = { }), }), blog: defineCollection({ - type: "content", - // Type-check frontmatter using a schema + loader: glob({ pattern: "**/[^_]*.{md,mdx}", base: "./src/content/blog" }), schema: z.object({ slug: z.string().optional(), redirect_slug: z.string().optional(), diff --git a/website/src/content/current-sidebar.ts b/website/src/content/current-sidebar.ts index 44893d8f8bc..b6e8393692f 100644 --- a/website/src/content/current-sidebar.ts +++ b/website/src/content/current-sidebar.ts @@ -249,13 +249,6 @@ const sidebar: SidebarItem[] = [ "extending-typespec/writing-scaffolding-template", ], }, - { - label: "🚀 Release Notes", - autogenerate: { - order: "desc", - directory: "release-notes", - }, - }, ]; export default sidebar; diff --git a/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/emitter.md b/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/emitter.md index 55c52dcc6bf..f20d6edee33 100644 --- a/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/emitter.md +++ b/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/emitter.md @@ -108,11 +108,11 @@ The name of the generator. By default this is set to `ScmCodeModelGenerator`. Ge Allows emitter authors to specify the path to a custom emitter package, allowing you to extend the emitter behavior. This should be set to `import.meta.url` if you are using a custom emitter. -### `update-code-model` +### `plugins` -**Type:** `object` +**Type:** `array` -Allows emitter authors to specify a custom function to modify the generated code model before emitting. This is useful for modifying the code model before it is passed to the generator. +Paths to generator plugin assemblies (DLLs) or directories containing plugin assemblies. Each plugin must contain a class that extends GeneratorPlugin. ### `license` diff --git a/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/index.mdx b/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/index.mdx index e7a4de67da2..ca373e97796 100644 --- a/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/index.mdx +++ b/website/src/content/docs/docs/emitters/clients/http-client-csharp/reference/index.mdx @@ -5,7 +5,7 @@ toc_min_heading_level: 2 toc_max_heading_level: 3 --- -import { Tabs, TabItem } from '@astrojs/starlight/components'; +import { Tabs, TabItem } from "@astrojs/starlight/components"; TypeSpec library for emitting Http Client libraries for C#. diff --git a/website/src/content/docs/docs/libraries/http/reference/data-types.md b/website/src/content/docs/docs/libraries/http/reference/data-types.md index ca606b378d2..bd4681e0542 100644 --- a/website/src/content/docs/docs/libraries/http/reference/data-types.md +++ b/website/src/content/docs/docs/libraries/http/reference/data-types.md @@ -442,96 +442,6 @@ model TypeSpec.Http.LocationHeader | -------- | -------- | --------------------------------------------------------------------------------------------------- | | location | `string` | The Location header contains the URL where the status of the long running operation can be checked. | -### `MergePatchCreateOrUpdate` {#TypeSpec.Http.MergePatchCreateOrUpdate} - -Create a MergePatch Request body for creating or updating the given resource Model. -The MergePatch request created by this template provides a TypeSpec description of a -JSON MergePatch request that can successfully create or update the given resource. -The transformation follows the definition of JSON MergePatch requests in -rfc 7396: https://www.rfc-editor.org/rfc/rfc7396, -applying the merge-patch transform recursively to keyed types in the resource Model. - -Using this template in a PATCH request body overrides the `implicitOptionality` -setting for PATCH operations and sets `application/merge-patch+json` as the request -content-type. - -```typespec -model TypeSpec.Http.MergePatchCreateOrUpdate -``` - -#### Template Parameters - -| Name | Description | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| T | The type of the resource to create a MergePatch update request body for. | -| NameTemplate | A StringTemplate used to name any models created by applying
the merge-patch transform to the resource. The default name template is `{name}MergePatchCreateOrUpdate`,
for example, the merge patch transform of model `Widget` is named `WidgetMergePatchCreateOrUpdate`. | - -#### Examples - -```tsp -// An operation updating a 'Widget' using merge-patch -@patch op update(@body request: MergePatchCreateOrUpdate): Widget; -``` - -```tsp -// An operation updating a 'Widget' using merge-patch -@patch op update(@bodyRoot request: MergePatchCreateOrUpdate): Widget; -``` - -```tsp -// An operation updating a 'Widget' using merge-patch -@patch op update(...MergePatchCreateOrUpdate): Widget; -``` - -#### Properties - -None - -### `MergePatchUpdate` {#TypeSpec.Http.MergePatchUpdate} - -Create a MergePatch Request body for updating the given resource Model. -The MergePatch request created by this template provides a TypeSpec description of a -JSON MergePatch request that can successfully update the given resource. -The transformation follows the definition of JSON MergePatch requests in -rfc 7396: https://www.rfc-editor.org/rfc/rfc7396, -applying the merge-patch transform recursively to keyed types in the resource Model. - -Using this template in a PATCH request body overrides the `implicitOptionality` -setting for PATCH operations and sets `application/merge-patch+json` as the request -content-type. - -```typespec -model TypeSpec.Http.MergePatchUpdate -``` - -#### Template Parameters - -| Name | Description | -| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| T | The type of the resource to create a MergePatch update request body for. | -| NameTemplate | A StringTemplate used to name any models created by applying
the merge-patch transform to the resource. The default name template is `{name}MergePatchUpdate`,
for example, the merge patch transform of model `Widget` is named `WidgetMergePatchUpdate`. | - -#### Examples - -```tsp -// An operation updating a 'Widget' using merge-patch -@patch op update(@body request: MergePatchUpdate): Widget; -``` - -```tsp -// An operation updating a 'Widget' using merge-patch -@patch op update(@bodyRoot request: MergePatchUpdate): Widget; -``` - -```tsp -// An operation updating a 'Widget' using merge-patch -@patch op update(...MergePatchUpdate): Widget; -``` - -#### Properties - -None - ### `MovedResponse` {#TypeSpec.Http.MovedResponse} The URL of the requested resource has been changed permanently. The new URL is given in the response. diff --git a/website/src/content/docs/docs/libraries/http/reference/index.mdx b/website/src/content/docs/docs/libraries/http/reference/index.mdx index b9915ad2783..b947edff0a5 100644 --- a/website/src/content/docs/docs/libraries/http/reference/index.mdx +++ b/website/src/content/docs/docs/libraries/http/reference/index.mdx @@ -73,8 +73,6 @@ npm install --save-peer @typespec/http - [`ImplicitFlow`](./data-types.md#TypeSpec.Http.ImplicitFlow) - [`Link`](./data-types.md#TypeSpec.Http.Link) - [`LocationHeader`](./data-types.md#TypeSpec.Http.LocationHeader) -- [`MergePatchCreateOrUpdate`](./data-types.md#TypeSpec.Http.MergePatchCreateOrUpdate) -- [`MergePatchUpdate`](./data-types.md#TypeSpec.Http.MergePatchUpdate) - [`MovedResponse`](./data-types.md#TypeSpec.Http.MovedResponse) - [`NoAuth`](./data-types.md#TypeSpec.Http.NoAuth) - [`NoContentResponse`](./data-types.md#TypeSpec.Http.NoContentResponse) diff --git a/website/src/content/docs/docs/libraries/xml/guide.md b/website/src/content/docs/docs/libraries/xml/guide.md deleted file mode 100644 index 5c246f567db..00000000000 --- a/website/src/content/docs/docs/libraries/xml/guide.md +++ /dev/null @@ -1,968 +0,0 @@ ---- -title: Guide ---- - -## Default encoding of scalars - -As in Json we have some [default handling](https://typespec.io/docs/libraries/http/encoding#bytes) of the common scalars like `utcDateTime` - -| Scalar Type | Default Encoding | Encoding name | -| ---------------- | ----------------- | --------------------------------------- | -| `utcDateTime` | `xs:dateTime` | `TypeSpec.Xml.Encoding.xmlDateTime` | -| `offsetDateTime` | `xs:dateTime` | `TypeSpec.Xml.Encoding.xmlDateTime` | -| `plainDate` | `xs:date` | `TypeSpec.Xml.Encoding.xmlDate` | -| `plainTime` | `xs:time` | `TypeSpec.Xml.Encoding.xmlTime` | -| `duration` | `xs:duration` | `TypeSpec.Xml.Encoding.xmlDuration` | -| `bytes` | `xs:base64Binary` | `TypeSpec.Xml.Encoding.xmlBase64Binary` | - -## Examples - -### 1. Array of primitive types - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeSpecXmlOpenAPI3
- -```tsp -@encodedName("application/xml", "XmlPet") -model Pet { - @Xml.unwrapped - tags: string[]; -} -``` - - - -```xml - - abc - def - -``` - - - -```yaml -Pet: - type: "object" - properties: - tags: - type: "array" - items: - type: string - xml: - name: tags - xml: - name: "XmlPet" -``` - -
- -```tsp -@encodedName("application/xml", "XmlPet") -model Pet { - @encodedName("application/xml", "ItemsTags") - tags: string[]; -} -``` - - - -```xml - - - abc - def - - -``` - - - -```yaml -Pet: - type: "object" - properties: - tags: - type: "array" - xml: - name: "ItemsTags" - wrapped: true - items: - type: string - xml: - name: string - xml: - name: "XmlPet" -``` - -
- -```tsp -@encodedName("application/xml", "ItemsName") -scalar tag extends string; - -@encodedName("application/xml", "XmlPet") -model Pet { - @Xml.unwrapped - tags: tag[]; -} -``` - - - -```xml - - abc - def - -``` - - - -```yaml -Pet: - type: "object" - properties: - tags: - type: "array" - items: - type: string - xml: - name: tags - xml: - name: "XmlPet" -``` - -
- -```tsp -@encodedName("application/xml", "ItemsName") -scalar tag extends string; - -@encodedName("application/xml", "XmlPet") -model Pet { - @encodedName("application/xml", "ItemsTags") - tags: tag[]; -} -``` - - - -```xml - - - abc - def - - -``` - - - -```yaml -Pet: - type: "object" - properties: - tags: - type: "array" - xml: - name: "ItemsTags" - wrapped: true - items: - type: string - xml: - name: ItemsName - xml: - name: "XmlPet" -``` - -
- -### 2. Complex array types - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeSpecXmlOpenAPI3
- -```tsp -@encodedName("application/xml", "XmlPet") -model Pet { - @Xml.unwrapped - tags: Tag[]; -} - -@encodedName("application/xml", "XmlTag") -model Tag { - name: string; -} -``` - - - -```xml - - - string - - -``` - - - -```yaml -Tag: - type: "object" - properties: - name: - type: "string" - xml: - name: "XmlTag" -Pet: - type: "object" - properties: - tags: - type: "array" - items: - allOf: - - $ref: "#/definitions/Tag" - xml: - name: tags - xml: - name: "XmlPet" -``` - -
- -```tsp -@encodedName("application/xml", "XmlPet") -model Pet { - tags: Tag[]; -} - -@encodedName("application/xml", "XmlTag") -model Tag { - name: string; -} -``` - - - -```xml - - - string - - -``` - - - -```yaml -Tag: - type: "object" - properties: - name: - type: "string" - xml: - name: "XmlTag" -Pet: - type: object - properties: - tags: - type: array - items: - allOf: - - $ref: "#/components/schemas/Tag" - xml: - name: XmlTag - xml: - wrapped: true - xml: - name: XmlPet -``` - -
- -```tsp -@encodedName("application/xml", "XmlPet") -model Pet { - @encodedName("application/xml", "ItemsTag") - @Xml.unwrapped - tags: Tag[]; -} - -@encodedName("application/xml", "XmlTag") -model Tag { - name: string; -} -``` - - - -```xml - - - string - - -``` - - - -```yaml -Tag: - type: "object" - properties: - name: - type: "string" - xml: - name: "XmlTag" -Pet: - type: "object" - properties: - tags: - type: "array" - items: - allOf: - - $ref: "#/definitions/Tag" - xml: - name: ItemsTag - xml: - name: "XmlPet" -``` - -
- -```tsp -@encodedName("application/xml", "XmlPet") -model Pet { - @encodedName("application/xml", "ItemsTags") - tags: Tag[]; -} - -@encodedName("application/xml", "XmlTag") -model Tag { - name: string; -} -``` - - - -```xml - - - - string - - - -``` - - - -```yaml -Tag: - type: "object" - properties: - name: - type: "string" - xml: - name: "XmlTag" -Pet: - type: "object" - properties: - tags: - type: "array" - xml: - name: "ItemsTags" - wrapped: true - items: - allOf: - - $ref: "#/definitions/Tag" - xml: - name: XmlTag - xml: - name: "XmlPet" -``` - -
- -### 3. Nested models - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeSpecXmlOpenAPI3
- -```tsp -model Book { - author: Author; -} - -model Author { - name: string; -} -``` - - - -```xml - - - string - - -``` - - - -```yaml -Book: - type: object - properties: - author: - $ref: "#/components/schemas/Author" -Author: - type: object - properties: - name: - type: string -``` - -
- -```tsp -model Book { - author: Author; -} - -@encodedName("application/xml", "XmlAuthor") -model Author { - name: string; -} -``` - - - -```xml - - - string - - -``` - - - -```yaml -Book: - type: object - properties: - author: - allOf: - - $ref: "#/components/schemas/Author" - xml: - name: "author" # Here we have to redefine this name otherwise in OpenAPI semantic the `XmlAuthor` name would be used -Author: - type: object - properties: - name: - type: string - xml: - name: "XmlAuthor" -``` - -
- -```tsp -model Book { - @encodedName("application/xml", "xml-author") - author: Author; -} - -model Author { - name: string; -} -``` - - - -```xml - - - string - - -``` - - - -```yaml -Book: - type: object - properties: - author: - allOf: - - $ref: "#/components/schemas/Author" - xml: - name: "xml-author" -Author: - type: object - properties: - name: - type: string -``` - -
- -### 4. Attributes - - - - - - - - - - - - - - - - - -
TypeSpecXmlOpenAPI3
- -```tsp -model Book { - @Xml.attribute - id: integer; - - @Xml.name("xml-title") - title: string; - - author: string; -} -``` - - - -```xml - - string - string - -``` - - - -```yaml -Book: - type: object - properties: - id: - type: integer - xml: - attribute: true - title: - type: string - xml: - name: "xml-title" - author: - type: string -``` - -
- -### 5. Namespace and prefix (inline form) - - - - - - - - - - - - - - - - - - - - - - - - -
TypeSpecXmlOpenAPI3
- -```tsp -@Xml.ns("http://example.com/schema", "smp") -model Book { - id: integer; - title: string; - author: string; -} -``` - - - -```xml - - 0 - string - string - -``` - - - -```yaml -Book: - type: object - properties: - id: - type: integer - title: - type: string - author: - type: string - xml: - prefix: "smp" - namespace: "http://example.com/schema" -``` - -
- -```tsp -@Xml.ns("http://example.com/schema", "smp") -model Book { - id: integer; - - @Xml.ns("http://example.com/schema", "smp") - title: string; - - @Xml.ns("http://example.com/ns2", "ns2") - author: string; -} -``` - - - -```xml - - 0 - string - string - -``` - - - -```yaml -Book: - type: object - properties: - id: - type: integer - title: - type: string - xml: - prefix: "smp" - namespace: "http://example.com/schema" - author: - type: string - xml: - prefix: "ns2" - namespace: "http://example.com/ns2" - xml: - prefix: "smp" - namespace: "http://example.com/schema" -``` - -
- -### 6. Namespace and prefix (normalized form) - - - - - - - - - - - - - - - - - - - - - - - - -
TypeSpecXmlOpenAPI3
- -```tsp -@Xml.nsDeclarations -enum Namespaces { - smp: "http://example.com/schema", -} - -@Xml.ns(Namespaces.smp) -model Book { - id: integer; - title: string; - author: string; -} -``` - - - -```xml - - 0 - string - string - -``` - - - -```yaml -Book: - type: object - properties: - id: - type: integer - title: - type: string - author: - type: string - xml: - prefix: "smp" - namespace: "http://example.com/schema" -Namespaces: - type: string - enum: - - http://example.com/schema -``` - -
- -```tsp -@Xml.nsDeclarations -enum Namespaces { - smp: "http://example.com/schema", - ns2: "http://example.com/ns2", -} - -@Xml.ns(Namespaces.smp) -model Book { - id: integer; - - @Xml.ns(Namespaces.smp) - title: string; - - @Xml.ns(Namespaces.ns2) - author: string; -} -``` - - - -```xml - - 0 - string - string - -``` - - - -```yaml -Book: - type: object - properties: - id: - type: integer - title: - type: string - xml: - prefix: "smp" - namespace: "http://example.com/schema" - author: - type: string - xml: - prefix: "ns2" - namespace: "http://example.com/ns2" - xml: - prefix: "smp" - namespace: "http://example.com/schema" -Namespaces: - type: string - enum: - - http://example.com/schema - - http://example.com/ns2 -``` - -
- -### 6. Property setting the text of the node - - - - - - - - - - - - - - - - - -
TypeSpecXmlOpenAPI3
- -```tsp -model BlobName { - @Xml.attribute language: string; - @Xml.unwrapped content: string; -} -``` - - - -```xml - - ...content... - -``` - - - -```yaml -Book: - type: object - properties: - language: - type: string - xml: - attribute: true - content: - type: string -``` - -
diff --git a/website/src/content/docs/docs/libraries/xml/guide.mdx b/website/src/content/docs/docs/libraries/xml/guide.mdx new file mode 100644 index 00000000000..762c3200874 --- /dev/null +++ b/website/src/content/docs/docs/libraries/xml/guide.mdx @@ -0,0 +1,1508 @@ +--- +title: Guide +--- + +import { Tabs, TabItem } from "@astrojs/starlight/components"; + +## Default encoding of scalars + +As in JSON, there is some [default handling](https://typespec.io/docs/libraries/http/encoding#bytes) of the common scalars like `utcDateTime`: + +| Scalar Type | Default Encoding | Encoding name | +| ---------------- | ----------------- | --------------------------------------- | +| `utcDateTime` | `xs:dateTime` | `TypeSpec.Xml.Encoding.xmlDateTime` | +| `offsetDateTime` | `xs:dateTime` | `TypeSpec.Xml.Encoding.xmlDateTime` | +| `plainDate` | `xs:date` | `TypeSpec.Xml.Encoding.xmlDate` | +| `plainTime` | `xs:time` | `TypeSpec.Xml.Encoding.xmlTime` | +| `duration` | `xs:duration` | `TypeSpec.Xml.Encoding.xmlDuration` | +| `bytes` | `xs:base64Binary` | `TypeSpec.Xml.Encoding.xmlBase64Binary` | + +## 1. Primitive properties + +### 1.1 — Default serialization + +Properties of scalar types are serialized as child XML elements by default. + +```tsp +model Book { + id: integer; + title: string; + author: string; +} +``` + + + + +```xml + + 0 + The Great Gatsby + F. Scott Fitzgerald + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + title: + type: string + author: + type: string +``` + + + + +### 1.2 — Renaming a property + +`@encodedName("application/xml", ...)` or `@Xml.name(...)` changes how a property name appears in the XML output without affecting the TypeSpec model name. + + + + +```tsp +model Book { + id: integer; + + @Xml.name("book-title") + title: string; + + author: string; +} +``` + + + + +```tsp +model Book { + id: integer; + + @encodedName("application/xml", "book-title") + title: string; + + author: string; +} +``` + + + + + + + +```xml + + 0 + The Great Gatsby + F. Scott Fitzgerald + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + title: + type: string + xml: + name: "book-title" + author: + type: string +``` + + + + +### 1.3 — Renaming the model + +`@encodedName("application/xml", ...)` or `@Xml.name(...)` on a model changes the root element name in the XML output. + + + + +```tsp +@Xml.name("XmlBook") +model Book { + id: integer; + title: string; + author: string; +} +``` + + + + +```tsp +@encodedName("application/xml", "XmlBook") +model Book { + id: integer; + title: string; + author: string; +} +``` + + + + + + + +```xml + + 0 + Les Miserables + Victor Hugo + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + title: + type: string + author: + type: string + xml: + name: "XmlBook" +``` + + + + +## 2. Nested models + +### 2.1 — Basic nested model + +A property referencing another model is serialized as a nested XML element using the property name. + +```tsp +model Book { + author: Person; +} + +model Person { + name: string; +} +``` + + + + +```xml + + + F. Scott Fitzgerald + + +``` + + + + +```yaml +Book: + type: object + properties: + author: + $ref: "#/components/schemas/Person" +Person: + type: object + properties: + name: + type: string +``` + + + + +### 2.2 — Nested model with custom XML name on the model + +When the referenced model has `@Xml.name` or `@encodedName`, the property name still takes precedence for the XML element name. + + + + +```tsp +model Book { + author: Person; +} + +@Xml.name("XmlPerson") +model Person { + name: string; +} +``` + + + + +```tsp +model Book { + author: Person; +} + +@encodedName("application/xml", "XmlPerson") +model Person { + name: string; +} +``` + + + + + + + +```xml + + + F. Scott Fitzgerald + + +``` + + + + +```yaml +Book: + type: object + properties: + author: + allOf: + - $ref: "#/components/schemas/Person" + xml: + name: "author" # Here we have to redefine this name otherwise in OpenAPI semantic the `XmlPerson` name would be used +Person: + type: object + properties: + name: + type: string + xml: + name: "XmlPerson" +``` + + + + +### 2.3 — Nested model with custom XML name on the property + +Using `@Xml.name` or `@encodedName` on the property overrides the element name for the nested model. + + + + +```tsp +model Book { + @Xml.name("xml-author") + author: Person; +} + +model Person { + name: string; +} +``` + + + + +```tsp +model Book { + @encodedName("application/xml", "xml-author") + author: Person; +} + +model Person { + name: string; +} +``` + + + + + + + +```xml + + + F. Scott Fitzgerald + + +``` + + + + +```yaml +Book: + type: object + properties: + author: + allOf: + - $ref: "#/components/schemas/Person" + xml: + name: "xml-author" +Person: + type: object + properties: + name: + type: string +``` + + + + +## 3. Array of primitive types + +### 3.1 — Wrapped primitive array (default) + +By default, an array property is wrapped in a container element named after the property. Each item uses the scalar type name as its element name. + +```tsp +model Book { + tags: string[]; +} +``` + + + + +```xml + + + fiction + classic + + +``` + + + + +```yaml +Book: + type: "object" + properties: + tags: + type: "array" + xml: + wrapped: true + items: + type: string + xml: + name: string +``` + + + + +### 3.2 — Unwrapped primitive array + +`@Xml.unwrapped` removes the wrapper element. Each item is serialized using the property name as its XML element name. + +```tsp +model Book { + @Xml.unwrapped + tags: string[]; +} +``` + + + + +```xml + + fiction + classic + +``` + + + + +```yaml +Book: + type: "object" + properties: + tags: + type: "array" + items: + type: string + xml: + name: tags +``` + + + + +### 3.3 — Wrapped primitive array with custom wrapper name + +Without `@Xml.unwrapped`, the array is wrapped in a container element. `@Xml.name` or `@encodedName` on the property customizes the wrapper element name. + + + + +```tsp +model Book { + @Xml.name("ItemsTags") + tags: string[]; +} +``` + + + + +```tsp +model Book { + @encodedName("application/xml", "ItemsTags") + tags: string[]; +} +``` + + + + + + + +```xml + + + fiction + classic + + +``` + + + + +```yaml +Book: + type: "object" + properties: + tags: + type: "array" + xml: + name: "ItemsTags" + wrapped: true + items: + type: string + xml: + name: string +``` + + + + +### 3.4 — Unwrapped primitive array with custom item name + +`@Xml.name` or `@encodedName` on the property controls the element name of each item when the array is unwrapped. + + + + +```tsp +model Book { + @Xml.name("tag") + @Xml.unwrapped + tags: string[]; +} +``` + + + + +```tsp +model Book { + @encodedName("application/xml", "tag") + @Xml.unwrapped + tags: string[]; +} +``` + + + + + + + +```xml + + fiction + classic + +``` + + + + +```yaml +Book: + type: "object" + properties: + tags: + type: "array" + items: + type: string + xml: + name: tag +``` + + + + +### 3.5 — Wrapped primitive array with custom wrapper and item names + +Both the wrapper element and each item element have custom names via `@Xml.name` or `@encodedName`. + + + + +```tsp +@Xml.name("ItemName") +scalar tag extends string; + +model Book { + @Xml.name("ItemsTags") + tags: tag[]; +} +``` + + + + +```tsp +@encodedName("application/xml", "ItemName") +scalar tag extends string; + +model Book { + @encodedName("application/xml", "ItemsTags") + tags: tag[]; +} +``` + + + + + + + +```xml + + + fiction + classic + + +``` + + + + +```yaml +Book: + type: "object" + properties: + tags: + type: "array" + xml: + name: "ItemsTags" + wrapped: true + items: + type: string + xml: + name: ItemName +``` + + + + +## 4. Array of complex types + +### 4.1 — Wrapped array of models (default) + +By default, an array of models is wrapped in a container element named after the property. Each item uses the model name as its element name. + +```tsp +model Store { + books: Book[]; +} + +model Book { + title: string; +} +``` + + + + +```xml + + + + The Great Gatsby + + + Les Miserables + + + +``` + + + + +```yaml +Book: + type: "object" + properties: + title: + type: "string" +Store: + type: "object" + properties: + books: + type: "array" + items: + $ref: "#/components/schemas/Book" + xml: + wrapped: true +``` + + + + +### 4.2 — Unwrapped array of models + +`@Xml.unwrapped` removes the wrapper element. Each item uses the property name as its element name. + +```tsp +model Store { + @Xml.unwrapped + books: Book[]; +} + +model Book { + title: string; +} +``` + + + + +```xml + + + The Great Gatsby + + + Les Miserables + + +``` + + + + +```yaml +Book: + type: "object" + properties: + title: + type: "string" +Store: + type: "object" + properties: + books: + type: "array" + items: + $ref: "#/components/schemas/Book" +``` + + + + +### 4.3 — Wrapped array of models with custom wrapper name + +`@Xml.name` or `@encodedName` on the property customizes the wrapper element name. + + + + +```tsp +model Store { + @Xml.name("AllBooks") + books: Book[]; +} + +model Book { + title: string; +} +``` + + + + +```tsp +model Store { + @encodedName("application/xml", "AllBooks") + books: Book[]; +} + +model Book { + title: string; +} +``` + + + + + + + +```xml + + + + The Great Gatsby + + + Les Miserables + + + +``` + + + + +```yaml +Book: + type: "object" + properties: + title: + type: "string" +Store: + type: "object" + properties: + books: + type: "array" + xml: + name: "AllBooks" + wrapped: true + items: + $ref: "#/components/schemas/Book" +``` + + + + +### 4.4 — Unwrapped array of models with custom item name + +`@Xml.name` or `@encodedName` on the property overrides each item's element name when the array is unwrapped. + + + + +```tsp +model Store { + @Xml.name("BookItem") + @Xml.unwrapped + books: Book[]; +} + +model Book { + title: string; +} +``` + + + + +```tsp +model Store { + @encodedName("application/xml", "BookItem") + @Xml.unwrapped + books: Book[]; +} + +model Book { + title: string; +} +``` + + + + + + + +```xml + + + The Great Gatsby + + + Les Miserables + + +``` + + + + +```yaml +Book: + type: "object" + properties: + title: + type: "string" +Store: + type: "object" + properties: + books: + type: "array" + items: + allOf: + - $ref: "#/components/schemas/Book" + xml: + name: BookItem +``` + + + + +### 4.5 — Wrapped array of models with custom wrapper and item names + +Both the wrapper element and each item element have custom names. + + + + +```tsp +model Store { + @Xml.name("AllBooks") + books: Book[]; +} + +@Xml.name("BookItem") +model Book { + title: string; +} +``` + + + + +```tsp +model Store { + @encodedName("application/xml", "AllBooks") + books: Book[]; +} + +@encodedName("application/xml", "BookItem") +model Book { + title: string; +} +``` + + + + + + + +```xml + + + + The Great Gatsby + + + Les Miserables + + + +``` + + + + +```yaml +Book: + type: "object" + properties: + title: + type: "string" + xml: + name: "BookItem" +Store: + type: "object" + properties: + books: + type: "array" + xml: + name: "AllBooks" + wrapped: true + items: + allOf: + - $ref: "#/components/schemas/Book" + xml: + name: BookItem +``` + + + + +## 5. Array models + +An _array model_ is a named model that _is_ an array rather than a model that _has_ an array property. It is declared with `model X is Type[]`. + +### 5.1 — Array model by itself + +A standalone array model produces an array schema in OpenAPI. When serialized to XML, the model name becomes the root element and each item uses its type name as the element name. + +```tsp +model Tags is string[]; +``` + + + + +```xml + + fiction + classic + +``` + + + + +```yaml +Tags: + type: "array" + items: + type: "string" +``` + + + + +### 5.2 — Array model used as a property (default) + +When a property references an array model, it behaves the same as an inline array: the property name becomes the wrapper element and each item uses its type name as the element name. + +```tsp +model BookList is Book[]; + +model Book { + title: string; +} + +model Store { + books: BookList; +} +``` + + + + +```xml + + + + The Great Gatsby + + + Les Miserables + + + +``` + + + + +```yaml +Book: + type: "object" + properties: + title: + type: "string" +BookList: + type: "array" + items: + $ref: "#/components/schemas/Book" +Store: + type: "object" + properties: + books: + type: "array" + xml: + wrapped: true + items: + allOf: + - $ref: "#/components/schemas/Book" + xml: + name: "Book" +``` + + + + +### 5.3 — Unwrapped array model property + +`@Xml.unwrapped` on the property removes the wrapper element, just as with inline arrays. + +```tsp +model BookList is Book[]; + +model Book { + title: string; +} + +model Store { + @Xml.unwrapped + books: BookList; +} +``` + + + + +```xml + + + The Great Gatsby + + + Les Miserables + + +``` + + + + +```yaml +Book: + type: "object" + properties: + title: + type: "string" +BookList: + type: "array" + items: + $ref: "#/components/schemas/Book" +Store: + type: "object" + properties: + books: + type: "array" + items: + allOf: + - $ref: "#/components/schemas/Book" + xml: + name: "books" +``` + + + + +## 6. Attributes + +### 6.1 — Serializing a property as an XML attribute + +`@Xml.attribute` serializes a property as an XML attribute instead of a child element. + +```tsp +model Book { + @Xml.attribute + id: integer; + + title: string; + author: string; +} +``` + + + + +```xml + + The Great Gatsby + F. Scott Fitzgerald + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + xml: + attribute: true + title: + type: string + author: + type: string +``` + + + + +### 6.2 — Renaming an XML attribute + +`@Xml.name` or `@encodedName` on an `@Xml.attribute` property changes the attribute name in the XML output. + + + + +```tsp +model Book { + @Xml.attribute + @Xml.name("xml-id") + id: integer; + + title: string; + author: string; +} +``` + + + + +```tsp +model Book { + @Xml.attribute + @encodedName("application/xml", "xml-id") + id: integer; + + title: string; + author: string; +} +``` + + + + + + + +```xml + + The Great Gatsby + F. Scott Fitzgerald + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + xml: + attribute: true + name: "xml-id" + title: + type: string + author: + type: string +``` + + + + +## 7. Namespace and prefix (inline form) + +### 7.1 — Namespace on the model + +`@Xml.ns` on a model adds a namespace prefix and declaration to the root element. + +```tsp +@Xml.ns("http://example.com/schema", "smp") +model Book { + id: integer; + title: string; + author: string; +} +``` + + + + +```xml + + 0 + The Great Gatsby + F. Scott Fitzgerald + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + title: + type: string + author: + type: string + xml: + prefix: "smp" + namespace: "http://example.com/schema" +``` + + + + +### 7.2 — Namespace on individual properties + +Properties can declare their own namespace with `@Xml.ns`, which may differ from the model's namespace. + +```tsp +@Xml.ns("http://example.com/schema", "smp") +model Book { + id: integer; + + @Xml.ns("http://example.com/schema", "smp") + title: string; + + @Xml.ns("http://example.com/ns2", "ns2") + author: string; +} +``` + + + + +```xml + + 0 + The Great Gatsby + F. Scott Fitzgerald + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + title: + type: string + xml: + prefix: "smp" + namespace: "http://example.com/schema" + author: + type: string + xml: + prefix: "ns2" + namespace: "http://example.com/ns2" + xml: + prefix: "smp" + namespace: "http://example.com/schema" +``` + + + + +## 8. Namespace and prefix (normalized form) + +### 8.1 — Using an `@Xml.nsDeclarations` enum + +Declare namespaces in an enum to avoid repeating URIs. Reference enum members with `@Xml.ns`. + +```tsp +@Xml.nsDeclarations +enum Namespaces { + smp: "http://example.com/schema", +} + +@Xml.ns(Namespaces.smp) +model Book { + id: integer; + title: string; + author: string; +} +``` + + + + +```xml + + 0 + Les Miserables + Victor Hugo + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + title: + type: string + author: + type: string + xml: + prefix: "smp" + namespace: "http://example.com/schema" +Namespaces: + type: string + enum: + - http://example.com/schema +``` + + + + +### 8.2 — Multiple namespaces via enum + +Multiple namespace declarations can be defined in a single enum and referenced on individual properties. + +```tsp +@Xml.nsDeclarations +enum Namespaces { + smp: "http://example.com/schema", + ns2: "http://example.com/ns2", +} + +@Xml.ns(Namespaces.smp) +model Book { + id: integer; + + @Xml.ns(Namespaces.smp) + title: string; + + @Xml.ns(Namespaces.ns2) + author: string; +} +``` + + + + +```xml + + 0 + Les Miserables + Victor Hugo + +``` + + + + +```yaml +Book: + type: object + properties: + id: + type: integer + title: + type: string + xml: + prefix: "smp" + namespace: "http://example.com/schema" + author: + type: string + xml: + prefix: "ns2" + namespace: "http://example.com/ns2" + xml: + prefix: "smp" + namespace: "http://example.com/schema" +Namespaces: + type: string + enum: + - http://example.com/schema + - http://example.com/ns2 +``` + + + + +## 9. Property setting the text of the node + +### 9.1 — Text content with attributes + +`@Xml.unwrapped` on a scalar property makes it the text content of the parent element. Combined with `@Xml.attribute`, you can model elements that have both attributes and inline text. + +```tsp +model BookTitle { + @Xml.attribute language: string; + @Xml.unwrapped content: string; +} +``` + + + + +```xml + + ...content... + +``` + + + + +```yaml +BookTitle: + type: object + properties: + language: + type: string + xml: + attribute: true + content: + type: string +``` + + + diff --git a/website/src/content/docs/docs/standard-library/built-in-data-types.md b/website/src/content/docs/docs/standard-library/built-in-data-types.md index 663e1bca85d..fdd5d1d41e8 100644 --- a/website/src/content/docs/docs/standard-library/built-in-data-types.md +++ b/website/src/content/docs/docs/standard-library/built-in-data-types.md @@ -17,89 +17,6 @@ model Array | Element | The type of the array elements | -#### Properties -None - -### `Create` {#Create} - -A copy of the input model `T` with only the properties that are visible during the -"Create" resource lifecycle phase. - -This transformation is recursive, and will include only properties that have the -`Lifecycle.Create` visibility modifier. - -If a `NameTemplate` is provided, the new model will be named according to the template. -The template uses the same syntax as the `@friendlyName` decorator. -```typespec -model Create -``` - -#### Template Parameters -| Name | Description | -|------|-------------| -| T | The model to transform. | -| NameTemplate | The name template to use for the new model.

* | - -#### Examples - -```typespec -model Dog { - @visibility(Lifecycle.Read) - id: int32; - - name: string; -} - -// This model has only the `name` field. -model CreateDog is Create; -``` - -#### Properties -None - -### `CreateOrUpdate` {#CreateOrUpdate} - -A copy of the input model `T` with only the properties that are visible during the -"Create" or "Update" resource lifecycle phases. - -The "CreateOrUpdate" lifecycle phase is used by default for properties passed as parameters to operations -that can create _or_ update data, like HTTP PUT operations. - -This transformation is recursive, and will include only properties that have the -`Lifecycle.Create` or `Lifecycle.Update` visibility modifier. - -If a `NameTemplate` is provided, the new model will be named according to the template. -The template uses the same syntax as the `@friendlyName` decorator. -```typespec -model CreateOrUpdate -``` - -#### Template Parameters -| Name | Description | -|------|-------------| -| T | The model to transform. | -| NameTemplate | The name template to use for the new model.

* | - -#### Examples - -```typespec -model Dog { - @visibility(Lifecycle.Read) - id: int32; - - @visibility(Lifecycle.Create) - immutableSecret: string; - - @visibility(Lifecycle.Create, Lifecycle.Update) - secretName: string; - - name: string; -} - -// This model will have the `immutableSecret`, `secretName`, and `name` fields, but not the `id` field. -model CreateOrUpdateDog is CreateOrUpdate; -``` - #### Properties None @@ -117,51 +34,6 @@ model DefaultKeyVisibility | Visibility | The visibility to apply to all properties. | -#### Properties -None - -### `Delete` {#Delete} - -A copy of the input model `T` with only the properties that are visible during the -"Delete" resource lifecycle phase. - -The "Delete" lifecycle phase is used for properties passed as parameters to operations -that delete data, like HTTP DELETE operations. - -This transformation is recursive, and will include only properties that have the -`Lifecycle.Delete` visibility modifier. - -If a `NameTemplate` is provided, the new model will be named according to the template. -The template uses the same syntax as the `@friendlyName` decorator. -```typespec -model Delete -``` - -#### Template Parameters -| Name | Description | -|------|-------------| -| T | The model to transform. | -| NameTemplate | The name template to use for the new model.

* | - -#### Examples - -```typespec -model Dog { - @visibility(Lifecycle.Read) - id: int32; - - // Set when the Dog is removed from our data store. This happens when the - // Dog is re-homed to a new owner. - @visibility(Lifecycle.Delete) - nextOwner: string; - - name: string; -} - -// This model will have the `nextOwner` and `name` fields, but not the `id` field. -model DeleteDog is Delete; -``` - #### Properties None @@ -271,102 +143,6 @@ model PickProperties | Keys | The property keys to include. | -#### Properties -None - -### `Query` {#Query} - -A copy of the input model `T` with only the properties that are visible during the -"Query" resource lifecycle phase. - -The "Query" lifecycle phase is used for properties passed as parameters to operations -that read data, like HTTP GET or HEAD operations. This should not be confused for -the `@query` decorator, which specifies that the property is transmitted in the -query string of an HTTP request. - -This transformation is recursive, and will include only properties that have the -`Lifecycle.Query` visibility modifier. - -If a `NameTemplate` is provided, the new model will be named according to the template. -The template uses the same syntax as the `@friendlyName` decorator. -```typespec -model Query -``` - -#### Template Parameters -| Name | Description | -|------|-------------| -| T | The model to transform. | -| NameTemplate | The name template to use for the new model.

* | - -#### Examples - -```typespec -model Dog { - @visibility(Lifecycle.Read) - id: int32; - - // When getting information for a Dog, you can set this field to true to include - // some extra information about the Dog's pedigree that is normally not returned. - // Alternatively, you could just use a separate option parameter to get this - // information. - @visibility(Lifecycle.Query) - includePedigree?: boolean; - - name: string; - - // Only included if `includePedigree` is set to true in the request. - @visibility(Lifecycle.Read) - pedigree?: string; -} - -// This model will have the `includePedigree` and `name` fields, but not `id` or `pedigree`. -model QueryDog is Query; -``` - -#### Properties -None - -### `Read` {#Read} - -A copy of the input model `T` with only the properties that are visible during the -"Read" resource lifecycle phase. - -The "Read" lifecycle phase is used for properties returned by operations that read data, like -HTTP GET operations. - -This transformation is recursive, and will include only properties that have the -`Lifecycle.Read` visibility modifier. - -If a `NameTemplate` is provided, the new model will be named according to the template. -The template uses the same syntax as the `@friendlyName` decorator. -```typespec -model Read -``` - -#### Template Parameters -| Name | Description | -|------|-------------| -| T | The model to transform. | -| NameTemplate | The name template to use for the new model.

* | - -#### Examples - -```typespec -model Dog { - @visibility(Lifecycle.Read) - id: int32; - - @visibility(Lifecycle.Create, Lifecycle.Update) - secretName: string; - - name: string; -} - -// This model has the `id` and `name` fields, but not `secretName`. -model ReadDog is Read; -``` - #### Properties None @@ -400,50 +176,6 @@ model ServiceOptions |------|------|-------------| | title? | [`string`](#string) | Title of the service. | -### `Update` {#Update} - -A copy of the input model `T` with only the properties that are visible during the -"Update" resource lifecycle phase. - -The "Update" lifecycle phase is used for properties passed as parameters to operations -that update data, like HTTP PATCH operations. - -This transformation will include only the properties that have the `Lifecycle.Update` -visibility modifier, and the types of all properties will be replaced with the -equivalent `CreateOrUpdate` transformation. - -If a `NameTemplate` is provided, the new model will be named according to the template. -The template uses the same syntax as the `@friendlyName` decorator. -```typespec -model Update -``` - -#### Template Parameters -| Name | Description | -|------|-------------| -| T | The model to transform. | -| NameTemplate | The name template to use for the new model.

* | - -#### Examples - -```typespec -model Dog { - @visibility(Lifecycle.Read) - id: int32; - - @visibility(Lifecycle.Create, Lifecycle.Update) - secretName: string; - - name: string; -} - -// This model will have the `secretName` and `name` fields, but not the `id` field. -model UpdateDog is Update; -``` - -#### Properties -None - ### `UpdateableProperties` {#UpdateableProperties} Represents a collection of updateable properties. diff --git a/website/src/content/docs/docs/standard-library/built-in-decorators.md b/website/src/content/docs/docs/standard-library/built-in-decorators.md index 065a1cb5797..e38804062e6 100644 --- a/website/src/content/docs/docs/standard-library/built-in-decorators.md +++ b/website/src/content/docs/docs/standard-library/built-in-decorators.md @@ -1318,6 +1318,9 @@ Visibility may be set explicitly using any of the following decorators: ### `@withLifecycleUpdate` {#@withLifecycleUpdate} +:::caution +**Deprecated**: withLifecycleUpdate is deprecated and will be removed in a future release. Use the `Update` template instead. +::: Transforms the `target` model to include only properties that are visible during the "Update" lifecycle phase. @@ -1504,6 +1507,9 @@ model DogRead { ### `@withVisibilityFilter` {#@withVisibilityFilter} +:::caution +**Deprecated**: withVisibilityFilter is deprecated and will be removed in a future release. Use the `FilterVisibility` template or Lifecycle specific templates (e.g. `Read`, `Create`, `Update`, etc.) instead. +::: Applies the given visibility filter to the properties of the target model. diff --git a/website/src/content/docs/docs/release-notes/cadl-typespec-migration.md b/website/src/content/docs/release-notes/cadl-typespec-migration.md similarity index 100% rename from website/src/content/docs/docs/release-notes/cadl-typespec-migration.md rename to website/src/content/docs/release-notes/cadl-typespec-migration.md diff --git a/website/src/content/docs/docs/release-notes/images/tspconfig-completion.png b/website/src/content/docs/release-notes/images/tspconfig-completion.png similarity index 100% rename from website/src/content/docs/docs/release-notes/images/tspconfig-completion.png rename to website/src/content/docs/release-notes/images/tspconfig-completion.png diff --git a/website/src/content/docs/docs/release-notes/release-2022-07-08.md b/website/src/content/docs/release-notes/release-2022-07-08.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2022-07-08.md rename to website/src/content/docs/release-notes/release-2022-07-08.md index 62ec4531313..a4a083a61f8 100644 --- a/website/src/content/docs/docs/release-notes/release-2022-07-08.md +++ b/website/src/content/docs/release-notes/release-2022-07-08.md @@ -1,5 +1,6 @@ --- title: July 2022 +releaseDate: 2022-07-08 --- This release contains **breaking changes** diff --git a/website/src/content/docs/docs/release-notes/release-2022-08-10.md b/website/src/content/docs/release-notes/release-2022-08-10.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2022-08-10.md rename to website/src/content/docs/release-notes/release-2022-08-10.md index 6b6de8c10ae..b11ab444227 100644 --- a/website/src/content/docs/docs/release-notes/release-2022-08-10.md +++ b/website/src/content/docs/release-notes/release-2022-08-10.md @@ -1,5 +1,6 @@ --- title: August 2022 +releaseDate: 2022-08-10 --- This release contains **breaking changes** diff --git a/website/src/content/docs/docs/release-notes/release-2022-09-07.md b/website/src/content/docs/release-notes/release-2022-09-07.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2022-09-07.md rename to website/src/content/docs/release-notes/release-2022-09-07.md index 08eb6745b05..37c2aefa0f7 100644 --- a/website/src/content/docs/docs/release-notes/release-2022-09-07.md +++ b/website/src/content/docs/release-notes/release-2022-09-07.md @@ -1,5 +1,6 @@ --- title: September 2022 +releaseDate: 2022-09-07 --- This release contains **breaking changes**: diff --git a/website/src/content/docs/docs/release-notes/release-2022-10-12.md b/website/src/content/docs/release-notes/release-2022-10-12.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2022-10-12.md rename to website/src/content/docs/release-notes/release-2022-10-12.md index 02ccf87b29e..3b22d4798ff 100644 --- a/website/src/content/docs/docs/release-notes/release-2022-10-12.md +++ b/website/src/content/docs/release-notes/release-2022-10-12.md @@ -1,5 +1,6 @@ --- title: October 2022 +releaseDate: 2022-10-12 --- This release contains **breaking changes**: diff --git a/website/src/content/docs/docs/release-notes/release-2022-12-07.md b/website/src/content/docs/release-notes/release-2022-12-07.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2022-12-07.md rename to website/src/content/docs/release-notes/release-2022-12-07.md index 3afea3da30f..8aec0b6921d 100644 --- a/website/src/content/docs/docs/release-notes/release-2022-12-07.md +++ b/website/src/content/docs/release-notes/release-2022-12-07.md @@ -1,5 +1,6 @@ --- title: December 2022 +releaseDate: 2022-12-07 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-01-12.md b/website/src/content/docs/release-notes/release-2023-01-12.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2023-01-12.md rename to website/src/content/docs/release-notes/release-2023-01-12.md index 059eb0039bb..326db9b589a 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-01-12.md +++ b/website/src/content/docs/release-notes/release-2023-01-12.md @@ -1,5 +1,6 @@ --- title: January 2023 +releaseDate: 2023-01-12 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-02-07.md b/website/src/content/docs/release-notes/release-2023-02-07.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-02-07.md rename to website/src/content/docs/release-notes/release-2023-02-07.md index e34e08a5696..d6f5106e1ab 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-02-07.md +++ b/website/src/content/docs/release-notes/release-2023-02-07.md @@ -1,5 +1,6 @@ --- title: February 2023 +releaseDate: 2023-02-07 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-03-13.md b/website/src/content/docs/release-notes/release-2023-03-13.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2023-03-13.md rename to website/src/content/docs/release-notes/release-2023-03-13.md index 9ff647b4286..ef71402113f 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-03-13.md +++ b/website/src/content/docs/release-notes/release-2023-03-13.md @@ -1,5 +1,6 @@ --- title: March 2023 +releaseDate: 2023-03-13 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-04-11.md b/website/src/content/docs/release-notes/release-2023-04-11.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-04-11.md rename to website/src/content/docs/release-notes/release-2023-04-11.md index c22e61584db..1b1496eca77 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-04-11.md +++ b/website/src/content/docs/release-notes/release-2023-04-11.md @@ -1,5 +1,6 @@ --- title: April 2023 +releaseDate: 2023-04-11 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-05-10.md b/website/src/content/docs/release-notes/release-2023-05-10.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-05-10.md rename to website/src/content/docs/release-notes/release-2023-05-10.md index 29dc8516864..89b2515d47a 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-05-10.md +++ b/website/src/content/docs/release-notes/release-2023-05-10.md @@ -1,5 +1,6 @@ --- title: May 2023 +releaseDate: 2023-05-10 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-06-06.md b/website/src/content/docs/release-notes/release-2023-06-06.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-06-06.md rename to website/src/content/docs/release-notes/release-2023-06-06.md index 26915ec7756..5f5c01d07e7 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-06-06.md +++ b/website/src/content/docs/release-notes/release-2023-06-06.md @@ -1,5 +1,6 @@ --- title: June 2023 +releaseDate: 2023-06-06 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-07-11.md b/website/src/content/docs/release-notes/release-2023-07-11.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-07-11.md rename to website/src/content/docs/release-notes/release-2023-07-11.md index 5ed681897ac..5943ad04fd0 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-07-11.md +++ b/website/src/content/docs/release-notes/release-2023-07-11.md @@ -1,5 +1,6 @@ --- title: July 2023 +releaseDate: 2023-07-11 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-08-08.md b/website/src/content/docs/release-notes/release-2023-08-08.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-08-08.md rename to website/src/content/docs/release-notes/release-2023-08-08.md index 38185b8026b..624a37ab224 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-08-08.md +++ b/website/src/content/docs/release-notes/release-2023-08-08.md @@ -1,5 +1,6 @@ --- title: August 2023 +releaseDate: 2023-08-08 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-09-12.md b/website/src/content/docs/release-notes/release-2023-09-12.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-09-12.md rename to website/src/content/docs/release-notes/release-2023-09-12.md index bc228a07a36..39b7c6183a4 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-09-12.md +++ b/website/src/content/docs/release-notes/release-2023-09-12.md @@ -1,5 +1,6 @@ --- title: September 2023 +releaseDate: 2023-09-12 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-10-11.md b/website/src/content/docs/release-notes/release-2023-10-11.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-10-11.md rename to website/src/content/docs/release-notes/release-2023-10-11.md index a29404ff85b..83bdeb1f5c2 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-10-11.md +++ b/website/src/content/docs/release-notes/release-2023-10-11.md @@ -1,5 +1,6 @@ --- title: October 2023 +releaseDate: 2023-10-11 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-11-07.md b/website/src/content/docs/release-notes/release-2023-11-07.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-11-07.md rename to website/src/content/docs/release-notes/release-2023-11-07.md index 657676ef760..5259ebd4a35 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-11-07.md +++ b/website/src/content/docs/release-notes/release-2023-11-07.md @@ -1,5 +1,6 @@ --- title: November 2023 +releaseDate: 2023-11-07 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2023-12-06.md b/website/src/content/docs/release-notes/release-2023-12-06.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2023-12-06.md rename to website/src/content/docs/release-notes/release-2023-12-06.md index a4cdf92644b..cd7653ac9e3 100644 --- a/website/src/content/docs/docs/release-notes/release-2023-12-06.md +++ b/website/src/content/docs/release-notes/release-2023-12-06.md @@ -1,5 +1,6 @@ --- title: December 2023 +releaseDate: 2023-12-06 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-01-23.md b/website/src/content/docs/release-notes/release-2024-01-23.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2024-01-23.md rename to website/src/content/docs/release-notes/release-2024-01-23.md index 26424805d1e..52dd36603db 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-01-23.md +++ b/website/src/content/docs/release-notes/release-2024-01-23.md @@ -1,5 +1,6 @@ --- title: January 2024 +releaseDate: 2024-01-23 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-02-06.md b/website/src/content/docs/release-notes/release-2024-02-06.md similarity index 97% rename from website/src/content/docs/docs/release-notes/release-2024-02-06.md rename to website/src/content/docs/release-notes/release-2024-02-06.md index 701e96b09ac..c0d3f601bc1 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-02-06.md +++ b/website/src/content/docs/release-notes/release-2024-02-06.md @@ -1,5 +1,6 @@ --- title: February 2024 +releaseDate: 2024-02-06 --- ## Release of VSCode and Visual Studio extensions diff --git a/website/src/content/docs/docs/release-notes/release-2024-03-05.md b/website/src/content/docs/release-notes/release-2024-03-05.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2024-03-05.md rename to website/src/content/docs/release-notes/release-2024-03-05.md index d472306cd66..3c4b2a7c036 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-03-05.md +++ b/website/src/content/docs/release-notes/release-2024-03-05.md @@ -1,5 +1,6 @@ --- title: March 2024 +releaseDate: 2024-03-05 --- :::caution diff --git a/website/src/content/docs/docs/release-notes/signature-help.png b/website/src/content/docs/release-notes/signature-help.png similarity index 100% rename from website/src/content/docs/docs/release-notes/signature-help.png rename to website/src/content/docs/release-notes/signature-help.png diff --git a/website/src/content/docs/docs/release-notes/release-2024-04-02.md b/website/src/content/docs/release-notes/typespec-0-55.md similarity index 97% rename from website/src/content/docs/docs/release-notes/release-2024-04-02.md rename to website/src/content/docs/release-notes/typespec-0-55.md index 876ebd47447..5b0a31d9f85 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-04-02.md +++ b/website/src/content/docs/release-notes/typespec-0-55.md @@ -1,5 +1,8 @@ --- +slug: release-notes/typespec-0-55 title: 0.55 - April 2024 +releaseDate: 2024-04-02 +version: "0.55" --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-05-07.md b/website/src/content/docs/release-notes/typespec-0-56.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2024-05-07.md rename to website/src/content/docs/release-notes/typespec-0-56.md index 37ea7242261..8e8785ead36 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-05-07.md +++ b/website/src/content/docs/release-notes/typespec-0-56.md @@ -1,5 +1,8 @@ --- +slug: release-notes/typespec-0-56 title: 0.56 - May 2024 +releaseDate: 2024-05-07 +version: "0.56" --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-06-10.md b/website/src/content/docs/release-notes/typespec-0-57.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2024-06-10.md rename to website/src/content/docs/release-notes/typespec-0-57.md index a16dd83d0cd..a0961b47f28 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-06-10.md +++ b/website/src/content/docs/release-notes/typespec-0-57.md @@ -1,5 +1,8 @@ --- +slug: release-notes/typespec-0-57 title: 0.57 - June 2024 +releaseDate: 2024-06-10 +version: "0.57" --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-07-16.md b/website/src/content/docs/release-notes/typespec-0-58.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2024-07-16.md rename to website/src/content/docs/release-notes/typespec-0-58.md index c59347faae8..96c0a6ba239 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-07-16.md +++ b/website/src/content/docs/release-notes/typespec-0-58.md @@ -1,5 +1,8 @@ --- +slug: release-notes/typespec-0-58 title: 0.58 - July 2024 +releaseDate: 2024-07-16 +version: "0.58" --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-08-06.md b/website/src/content/docs/release-notes/typespec-0-59.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2024-08-06.md rename to website/src/content/docs/release-notes/typespec-0-59.md index 305eb495fc8..21afc668f90 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-08-06.md +++ b/website/src/content/docs/release-notes/typespec-0-59.md @@ -1,5 +1,8 @@ --- +slug: release-notes/typespec-0-59 title: 0.59 - August 2024 +releaseDate: 2024-08-06 +version: "0.59" --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-09-10.md b/website/src/content/docs/release-notes/typespec-0-60.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2024-09-10.md rename to website/src/content/docs/release-notes/typespec-0-60.md index 9fc28904094..ed2aadac584 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-09-10.md +++ b/website/src/content/docs/release-notes/typespec-0-60.md @@ -1,5 +1,8 @@ --- +slug: release-notes/typespec-0-60 title: 0.60 - September 2024 +releaseDate: 2024-09-10 +version: "0.60" --- ## Features diff --git a/website/src/content/docs/docs/release-notes/release-2024-10-09.md b/website/src/content/docs/release-notes/typespec-0-61.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2024-10-09.md rename to website/src/content/docs/release-notes/typespec-0-61.md index f32744b0c7d..0fde9cfa0c6 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-10-09.md +++ b/website/src/content/docs/release-notes/typespec-0-61.md @@ -1,5 +1,8 @@ --- +slug: release-notes/typespec-0-61 title: 0.61 - October 2024 +releaseDate: 2024-10-09 +version: "0.61" --- :::caution diff --git a/website/src/content/docs/docs/release-notes/release-2024-11-05.md b/website/src/content/docs/release-notes/typespec-0-62.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2024-11-05.md rename to website/src/content/docs/release-notes/typespec-0-62.md index 879ba330d70..b81375b0647 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-11-05.md +++ b/website/src/content/docs/release-notes/typespec-0-62.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-0-62 title: 0.62 - November 2024 releaseDate: 2024-11-05 version: "0.62" diff --git a/website/src/content/docs/docs/release-notes/release-2024-12-10.md b/website/src/content/docs/release-notes/typespec-0-63.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2024-12-10.md rename to website/src/content/docs/release-notes/typespec-0-63.md index 629d81a7472..5aef304cff9 100644 --- a/website/src/content/docs/docs/release-notes/release-2024-12-10.md +++ b/website/src/content/docs/release-notes/typespec-0-63.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-0-63 title: 0.63 - December 2024 releaseDate: 2024-12-10 version: "0.63" diff --git a/website/src/content/docs/docs/release-notes/release-2025-01-15.md b/website/src/content/docs/release-notes/typespec-0-64.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-01-15.md rename to website/src/content/docs/release-notes/typespec-0-64.md index d293cf3f72b..685a1890400 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-01-15.md +++ b/website/src/content/docs/release-notes/typespec-0-64.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-0-64 title: 0.64 - January 2025 releaseDate: 2025-01-15 version: "0.64" diff --git a/website/src/content/docs/docs/release-notes/release-2025-02-11.md b/website/src/content/docs/release-notes/typespec-0-65.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-02-11.md rename to website/src/content/docs/release-notes/typespec-0-65.md index afe2749bc74..2006b2ada08 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-02-11.md +++ b/website/src/content/docs/release-notes/typespec-0-65.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-0-65 title: 0.65 - February 2025 releaseDate: 2025-02-11 version: "0.65" diff --git a/website/src/content/docs/docs/release-notes/release-2025-03-04.md b/website/src/content/docs/release-notes/typespec-0-66.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-03-04.md rename to website/src/content/docs/release-notes/typespec-0-66.md index d2bb1d88701..825da319d53 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-03-04.md +++ b/website/src/content/docs/release-notes/typespec-0-66.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-0-66 title: 0.66 - March 2025 releaseDate: 2025-03-04 version: "0.66" diff --git a/website/src/content/docs/docs/release-notes/release-2025-03-18.md b/website/src/content/docs/release-notes/typespec-0-67.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-03-18.md rename to website/src/content/docs/release-notes/typespec-0-67.md index 0e63fccb097..3bde9e3756b 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-03-18.md +++ b/website/src/content/docs/release-notes/typespec-0-67.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-0-67 title: "0.67" releaseDate: 2025-03-18 version: "0.67" diff --git a/website/src/content/docs/docs/release-notes/release-2025-04-02.md b/website/src/content/docs/release-notes/typespec-1-0-0-rc-0.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-04-02.md rename to website/src/content/docs/release-notes/typespec-1-0-0-rc-0.md index 24dbc473fc9..5eb8bc54af0 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-04-02.md +++ b/website/src/content/docs/release-notes/typespec-1-0-0-rc-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-0-0-rc-0 title: "1.0.0-rc.0" releaseDate: 2025-04-02 version: "1.0.0-rc.0" diff --git a/website/src/content/docs/docs/release-notes/release-2025-04-22.md b/website/src/content/docs/release-notes/typespec-1-0-0-rc-1.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2025-04-22.md rename to website/src/content/docs/release-notes/typespec-1-0-0-rc-1.md index d465aa81c6f..bbd715851d3 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-04-22.md +++ b/website/src/content/docs/release-notes/typespec-1-0-0-rc-1.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-0-0-rc-1 title: "1.0.0-rc.1" releaseDate: 2025-04-22 version: "1.0.0-rc.1" diff --git a/website/src/content/docs/docs/release-notes/release-2025-05-06.md b/website/src/content/docs/release-notes/typespec-1-0-0.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-05-06.md rename to website/src/content/docs/release-notes/typespec-1-0-0.md index 869ca0d4ad4..3390dc0f86b 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-05-06.md +++ b/website/src/content/docs/release-notes/typespec-1-0-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-0-0 title: "1.0.0" releaseDate: 2025-05-06 version: "1.0.0" diff --git a/website/src/content/docs/docs/release-notes/release-2025-06-10.md b/website/src/content/docs/release-notes/typespec-1-1-0.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-06-10.md rename to website/src/content/docs/release-notes/typespec-1-1-0.md index b2579936162..9cb380d1dd4 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-06-10.md +++ b/website/src/content/docs/release-notes/typespec-1-1-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-1-0 title: "1.1.0" releaseDate: 2025-06-10 version: "1.1.0" diff --git a/website/src/content/docs/release-notes/typespec-1-10-0.md b/website/src/content/docs/release-notes/typespec-1-10-0.md new file mode 100644 index 00000000000..30f356f7cbb --- /dev/null +++ b/website/src/content/docs/release-notes/typespec-1-10-0.md @@ -0,0 +1,62 @@ +--- +slug: release-notes/typespec-1-10-0 +title: "1.10.0" +releaseDate: 2026-03-10 +version: "1.10.0" +--- + +# 1.10.0 + +## Features + +### @typespec/compiler + +- [#9060](https://github.com/microsoft/typespec/pull/9060) Added support for Functions, a new type graph entity and language feature. Functions enable library authors to provide input-output style transforms that operate on types and values. See [the Functions Documentation](https://typespec.io/docs/language-basics/functions/) for more information about the use and implementation of functions. +- [#9762](https://github.com/microsoft/typespec/pull/9762) Added experimental support for `internal` modifiers on type declarations. Any type _except `namespace`_ can be declared `internal`. An `internal` symbol can only be accessed from within the same package where it was declared. +- [#9829](https://github.com/microsoft/typespec/pull/9829) `tsp info` now accepts an optional `` argument to display detailed information about a specific library or emitter, including all available options. +- [#9819](https://github.com/microsoft/typespec/pull/9819) Export `resolveCodeFix` function to allow resolving a `CodeFix` into `CodeFixEdit[]` without the LSP layer. + +### @typespec/openapi + +- [#9577](https://github.com/microsoft/typespec/pull/9577) Add support for OpenAPI 3.2 nested tags via `parent` field in `@tagMetadata` decorator + +### @typespec/openapi3 + +- [#9577](https://github.com/microsoft/typespec/pull/9577) Add support for OpenAPI 3.2 nested tags via `parent` field in `@tagMetadata` decorator +- [#9890](https://github.com/microsoft/typespec/pull/9890) `file-type` can now receive an array to allow emitting both `json` and `yaml` output in the same run. +- [#9742](https://github.com/microsoft/typespec/pull/9742) importer - Support importing `readOnly` and `writeOnly` properties from OpenAPI. + - `readOnly: true` is converted to `@visibility(Lifecycle.Read)` + - `writeOnly: true` is converted to `@visibility(Lifecycle.Create)` + - Both properties are mutually exclusive, a warning is emitted if both are present and both are ignored + +## Bug Fixes + +### @typespec/compiler + +- [#9939](https://github.com/microsoft/typespec/pull/9939) Fix `@overload` interface validation failing when the enclosing namespace is versioned +- [#9641](https://github.com/microsoft/typespec/pull/9641) Don't report `non-literal-string-template` diagnostic when interpolating an invalid reference +- [#9803](https://github.com/microsoft/typespec/pull/9803) Support `TYPESPEC_NPM_REGISTRY` environment variable to configure the npm registry used by `tsp init` and `tsp install` when fetching package manifests and downloading packages. +- [#9804](https://github.com/microsoft/typespec/pull/9804) Fix crash when using custom scalar initializer in examples or default values. [API] Fix crash in `serializeValueAsJson` when a custom scalar initializer has no recognized constructor (e.g. `S.i()` with no args). Now returns `undefined` instead of crashing. +- [#9670](https://github.com/microsoft/typespec/pull/9670) Fixed an issue where referencing a member of a templated alias with defaultable parameters would fail to instantiate the alias, leaking template parameters. + +### @typespec/http + +- [#9935](https://github.com/microsoft/typespec/pull/9935) Do not join routes starting with `?` or `:` with `/` (e.g. `@route("?pet=cat")` would result in `/?pet=cat`) +- [#9887](https://github.com/microsoft/typespec/pull/9887) Remove `patch-implicit-optional` warning. + +### @typespec/openapi + +- [#9686](https://github.com/microsoft/typespec/pull/9686) [API] Expose `setOperationId` + +### @typespec/openapi3 + +- [#9634](https://github.com/microsoft/typespec/pull/9634) importer - Fix OpenAPI3 import to support JSON Schema 2020-12 sibling keywords alongside `$ref` (default, constraints, deprecated, etc.) +- [#9802](https://github.com/microsoft/typespec/pull/9802) Fix `tsp-openapi3` ignoring array constraints (`minItems`, `maxItems`) on nullable arrays defined with `anyOf` + `null` + +### @typespec/versioning + +- [#9932](https://github.com/microsoft/typespec/pull/9932) [API] Fix running multiple versioning mutators together + +### @typespec/html-program-viewer + +- [#9617](https://github.com/microsoft/typespec/pull/9617) Fix type graph viewer to display Symbol-keyed decorator state diff --git a/website/src/content/docs/release-notes/typespec-1-11-0.md b/website/src/content/docs/release-notes/typespec-1-11-0.md new file mode 100644 index 00000000000..b082dc5d50e --- /dev/null +++ b/website/src/content/docs/release-notes/typespec-1-11-0.md @@ -0,0 +1,33 @@ +--- +slug: release-notes/typespec-1-11-0 +title: "1.11.0" +releaseDate: 2026-04-07 +version: "1.11.0" +--- + +# 1.11.0 + +## Features + +### @typespec/compiler + +- [#9893](https://github.com/microsoft/typespec/pull/9893) Added a new template `FilterVisibility` to support more accurate visibility transforms. This replaces the `@withVisibilityFilter` decorator, which is now deprecated and slated for removal in a future version of TypeSpec. + +## Bug Fixes + +### @typespec/compiler + +- [#10196](https://github.com/microsoft/typespec/pull/10196) Include model name in `duplicate-property` error message +- [#10199](https://github.com/microsoft/typespec/pull/10199) `duplicateDefaultVariant` diagnostic now includes the union type name +- [#10183](https://github.com/microsoft/typespec/pull/10183) Do not interpolate non primitive values in config automatically. + ```yaml + file-type: ["json", "yaml"] + output-file: "openapi.{file-type}" + ``` + Will not be interpolated as `openapi.json,yaml` but keep the placeholder `{file-type}` intact for the emitter to handle. +- [#9893](https://github.com/microsoft/typespec/pull/9893) Fixed a bug that would prevent template parameters from assigning to values in some cases. + +### @typespec/openapi3 + +- [#10041](https://github.com/microsoft/typespec/pull/10041) [importer] Fix `anyOf` with `$ref` and inline object being incorrectly imported as a model instead of a union. +- [#10046](https://github.com/microsoft/typespec/pull/10046) Fix OpenAPI emitter failing with "Duplicate type name" error when using a named union with a `bytes` variant in a multipart body (e.g. `HttpPart` where `MyUnion` includes `bytes`). diff --git a/website/src/content/docs/docs/release-notes/release-2025-07-15.md b/website/src/content/docs/release-notes/typespec-1-2-0.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2025-07-15.md rename to website/src/content/docs/release-notes/typespec-1-2-0.md index 5410e361845..8531c60b03a 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-07-15.md +++ b/website/src/content/docs/release-notes/typespec-1-2-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-2-0 title: "1.2.0" releaseDate: 2025-07-15 version: "1.2.0" diff --git a/website/src/content/docs/docs/release-notes/release-2025-08-06.md b/website/src/content/docs/release-notes/typespec-1-3-0.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2025-08-06.md rename to website/src/content/docs/release-notes/typespec-1-3-0.md index 8d9a9828af2..79a47f996f6 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-08-06.md +++ b/website/src/content/docs/release-notes/typespec-1-3-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-3-0 title: "1.3.0" releaseDate: 2025-08-06 version: "1.3.0" diff --git a/website/src/content/docs/docs/release-notes/release-2025-09-09.md b/website/src/content/docs/release-notes/typespec-1-4-0.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2025-09-09.md rename to website/src/content/docs/release-notes/typespec-1-4-0.md index 580b549ba8f..bc27fe14b36 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-09-09.md +++ b/website/src/content/docs/release-notes/typespec-1-4-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-4-0 title: "1.4.0" releaseDate: 2025-08-06 version: "1.4.0" diff --git a/website/src/content/docs/docs/release-notes/release-2025-10-08.md b/website/src/content/docs/release-notes/typespec-1-5-0.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-10-08.md rename to website/src/content/docs/release-notes/typespec-1-5-0.md index 615b4da9433..dd5f9522470 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-10-08.md +++ b/website/src/content/docs/release-notes/typespec-1-5-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-5-0 title: "1.5.0" releaseDate: 2025-10-08 version: "1.5.0" diff --git a/website/src/content/docs/docs/release-notes/release-2025-11-11.md b/website/src/content/docs/release-notes/typespec-1-6-0.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2025-11-11.md rename to website/src/content/docs/release-notes/typespec-1-6-0.md index c1580c42d59..486f7580de7 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-11-11.md +++ b/website/src/content/docs/release-notes/typespec-1-6-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-6-0 title: "1.6.0" releaseDate: 2025-11-11 version: "1.6.0" diff --git a/website/src/content/docs/docs/release-notes/release-2025-12-09.md b/website/src/content/docs/release-notes/typespec-1-7-0.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2025-12-09.md rename to website/src/content/docs/release-notes/typespec-1-7-0.md index da0d02e248e..27828767885 100644 --- a/website/src/content/docs/docs/release-notes/release-2025-12-09.md +++ b/website/src/content/docs/release-notes/typespec-1-7-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-7-0 title: "1.7.0" releaseDate: 2025-12-09 version: "1.7.0" diff --git a/website/src/content/docs/docs/release-notes/release-2026-01-13.md b/website/src/content/docs/release-notes/typespec-1-8-0.md similarity index 98% rename from website/src/content/docs/docs/release-notes/release-2026-01-13.md rename to website/src/content/docs/release-notes/typespec-1-8-0.md index c7b54d4c7b1..404bac3a44c 100644 --- a/website/src/content/docs/docs/release-notes/release-2026-01-13.md +++ b/website/src/content/docs/release-notes/typespec-1-8-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-8-0 title: "1.8.0" releaseDate: 2026-01-13 version: "1.8.0" diff --git a/website/src/content/docs/docs/release-notes/release-2026-02-10.md b/website/src/content/docs/release-notes/typespec-1-9-0.md similarity index 99% rename from website/src/content/docs/docs/release-notes/release-2026-02-10.md rename to website/src/content/docs/release-notes/typespec-1-9-0.md index 36edfba00e3..64192e1c5d6 100644 --- a/website/src/content/docs/docs/release-notes/release-2026-02-10.md +++ b/website/src/content/docs/release-notes/typespec-1-9-0.md @@ -1,4 +1,5 @@ --- +slug: release-notes/typespec-1-9-0 title: "1.9.0" releaseDate: 2026-02-10 version: "1.9.0" diff --git a/website/src/layouts/base-layout.astro b/website/src/layouts/base-layout.astro index 4d2361eab40..4d22634c126 100644 --- a/website/src/layouts/base-layout.astro +++ b/website/src/layouts/base-layout.astro @@ -3,12 +3,15 @@ import "@site/src/css/custom.css"; import Header from "@site/src/components/header/header.astro"; import Footer from "@site/src/components/footer/footer.astro"; import { baseUrl } from "@typespec/astro-utils/utils/base-url"; +import { computeSriHash } from "@site/src/utils/sri-hash"; export interface Props { /** Whether to render the footer @default true */ footer?: boolean; } const { footer = true } = Astro.props; + +const initJsIntegrity = computeSriHash("1ds-init.js"); --- @@ -18,9 +21,12 @@ const { footer = true } = Astro.props; typespec.io - + -
diff --git a/website/src/pages/blog/[...slug].astro b/website/src/pages/blog/[...slug].astro index c2e55e63f7e..e4a57cac7df 100644 --- a/website/src/pages/blog/[...slug].astro +++ b/website/src/pages/blog/[...slug].astro @@ -1,5 +1,5 @@ --- -import { getCollection } from "astro:content"; +import { getCollection, render } from "astro:content"; import BlogPost from "../../layouts/blog-post.astro"; export async function getStaticPaths() { @@ -8,7 +8,7 @@ export async function getStaticPaths() { // Create paths for all posts using their main slug const mainPaths = posts.map((post) => { // Get the proper slug to use - prioritize data.slug, then post.slug - const mainSlug = post.data.slug || post.slug; + const mainSlug = post.data.slug || post.id; return { params: { slug: mainSlug }, @@ -19,8 +19,7 @@ export async function getStaticPaths() { // Create redirect paths for posts that have a redirect_slug const redirectPaths = posts .filter( - (post) => - post.data.redirect_slug && post.data.redirect_slug !== (post.data.slug || post.slug), + (post) => post.data.redirect_slug && post.data.redirect_slug !== (post.data.slug || post.id), ) .map((post) => ({ params: { slug: post.data.redirect_slug }, @@ -36,10 +35,10 @@ const { post, isRedirect } = Astro.props; // Include trailing slash since trailingSlash is set to always if (isRedirect) { // Perform the redirect directly without creating an intermediate variable - return Astro.redirect(`/blog/${post.data.slug || post.slug}/`); + return Astro.redirect(`/blog/${post.data.slug || post.id}/`); } -const { Content } = await post.render(); +const { Content } = await render(post); --- diff --git a/website/src/pages/blog/_BlogPostPreview.astro b/website/src/pages/blog/_BlogPostPreview.astro index 56c1eb636a6..b939134ccaf 100644 --- a/website/src/pages/blog/_BlogPostPreview.astro +++ b/website/src/pages/blog/_BlogPostPreview.astro @@ -6,7 +6,7 @@ import Link from "@typespec/astro-utils/components/link.astro"; export type Props = { post: { - slug?: string; + id: string; data: { slug?: string; redirect_slug?: string; @@ -21,8 +21,8 @@ export type Props = { const { post, imageLoading } = Astro.props; -// Get the actual slug to use - prioritize data.slug, then post.slug, then fallback to data.redirect_slug -const postSlug = post.data.slug || post.slug || post.data.redirect_slug || ""; +// Get the actual slug to use - prioritize data.slug, then post.id, then fallback to data.redirect_slug +const postSlug = post.data.slug || post.id || post.data.redirect_slug || ""; // Use the determined slug for image resolution const image = post.data.image && (await resolveBlogImagePath(postSlug, post.data.image)); diff --git a/website/src/pages/blog/resolve-image.ts b/website/src/pages/blog/resolve-image.ts index 759d3dbbc90..ee3cf744bc9 100644 --- a/website/src/pages/blog/resolve-image.ts +++ b/website/src/pages/blog/resolve-image.ts @@ -1,6 +1,6 @@ import type { ImageMetadata } from "astro"; import { getCollection } from "astro:content"; -import { join, normalize } from "path/posix"; +import { dirname, join, normalize } from "path/posix"; const allImages = import.meta.glob<{ default: ImageMetadata }>( "../../content/blog/**/*.{png,jpg,jpeg,webp}", @@ -26,14 +26,14 @@ export async function resolveBlogImagePath( // Find the post that matches either the slug or redirect_slug const post = posts.find( - (post) => post.data.slug === slug || post.data.redirect_slug === slug || post.slug === slug, + (post) => post.data.slug === slug || post.data.redirect_slug === slug || post.id === slug, ); - if (post) { - // Use the collection entry's id which contains the directory name with date - // Collection entry id looks like: "2024-04-25-introducing/blog.md" - const dirWithDate = post.id.split("/")[0]; - const path = normalize(join("../../content/blog/", dirWithDate, relativeImage)); + if (post?.filePath) { + // Use the collection entry's filePath to extract the directory + // filePath looks like: "src/content/blog/2024-04-25-introducing/blog.md" + const dir = dirname(post.filePath).replace(/^.*\/content\/blog\//, ""); + const path = normalize(join("../../content/blog/", dir, relativeImage)); imageImporter = allImages[path]; } } diff --git a/website/src/pages/docs/[...slug].md.ts b/website/src/pages/docs/[...slug].md.ts index 13884a9b872..06a61b18c3b 100644 --- a/website/src/pages/docs/[...slug].md.ts +++ b/website/src/pages/docs/[...slug].md.ts @@ -8,7 +8,7 @@ export async function getStaticPaths() { return docs .filter((doc) => { // Exclude release notes - if (doc.id.includes("/release-notes/")) return false; + if (doc.id.startsWith("release-notes/")) return false; return true; }) .map((doc) => ({ diff --git a/website/src/utils/sri-hash.ts b/website/src/utils/sri-hash.ts new file mode 100644 index 00000000000..002686ab3d6 --- /dev/null +++ b/website/src/utils/sri-hash.ts @@ -0,0 +1,16 @@ +import { createHash } from "node:crypto"; +import { readFileSync } from "node:fs"; +import { resolve } from "node:path"; + +/** + * Compute a SHA-384 subresource integrity (SRI) hash for the given file, + * relative to the website `public/` directory. + * + * Uses `process.cwd()` because Astro always runs from the website root, + * and `import.meta.dirname` is unreliable after bundling during pre-render. + */ +export function computeSriHash(publicRelativePath: string): string { + const absPath = resolve(process.cwd(), "public", publicRelativePath); + const content = readFileSync(absPath); + return `sha384-${createHash("sha384").update(content).digest("base64")}`; +}