diff --git a/.editorconfig b/.editorconfig index f8ad6ea8e56..f9d4bba31a7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -78,7 +78,8 @@ csharp_prefer_static_local_function = true:suggestion dotnet_diagnostic.IDE0010.severity = suggestion # IDE0010: Add missing cases to switch statement dotnet_style_object_initializer = true:suggestion # IDE0017: Use object initializers csharp_style_inlined_variable_declaration = true:suggestion # IDE0018: Inline variable declaration -dotnet_style_collection_initializer = true:suggestion # IDE0028: Use collection initializers +dotnet_style_collection_initializer = true:suggestion # IDE0028: Use collection initializers or expressions +dotnet_style_prefer_collection_expression = true:suggestion # IDE0028: Use collection initializers or expressions dotnet_style_prefer_auto_properties = true:suggestion # IDE0032: Use auto-implemented property dotnet_style_explicit_tuple_names = true:suggestion # IDE0033: Use explicitly provided tuple name csharp_prefer_simple_default_expression = true:suggestion # IDE0034: Simplify default expression @@ -153,13 +154,15 @@ dotnet_style_namespace_match_folder = true:suggestion # IDE013 dotnet_diagnostic.IDE0001.severity = suggestion # IDE0001: Simplify name dotnet_diagnostic.IDE0002.severity = suggestion # IDE0002: Simplify member access dotnet_diagnostic.IDE0004.severity = suggestion # IDE0004: Remove unnecessary cast -dotnet_diagnostic.IDE0005.severity = suggestion # IDE0005: Remove unnecessary import +dotnet_diagnostic.IDE0005.severity = warning # IDE0005: Remove unnecessary import dotnet_diagnostic.IDE0035.severity = suggestion # IDE0035: Remove unreachable code dotnet_diagnostic.IDE0051.severity = suggestion # IDE0051: Remove unused private member dotnet_diagnostic.IDE0052.severity = suggestion # IDE0052: Remove unread private member +dotnet_diagnostic.IDE0058.severity = silent # IDE0058: Remove unnecessary expression value dotnet_diagnostic.IDE0080.severity = suggestion # IDE0080: Remove unnecessary suppression operator dotnet_diagnostic.IDE0100.severity = suggestion # IDE0100: Remove unnecessary equality operator dotnet_diagnostic.IDE0110.severity = suggestion # IDE0110: Remove unnecessary discard +dotnet_diagnostic.IDE0130.severity = silent # IDE0130: Namespace does not match folder structure dotnet_diagnostic.IDE0240.severity = suggestion # IDE0240: Nullable directive is redundant dotnet_diagnostic.IDE0241.severity = suggestion # IDE0241: Nullable directive is unnecessary diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 3529e471e79..16f26d096a4 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -13,6 +13,13 @@ runs: 9.x 8.x + - name: Install fonts-noto-color-emoji package (Linux only) + if: runner.os == 'Linux' + shell: bash + run: | + sudo apt-get update + sudo apt-get install -y fonts-noto-color-emoji + - run: npm ci shell: bash working-directory: templates diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 00000000000..6dc80b46343 --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: + default: + informational: true + patch: + default: + informational: true +comment: false +github_checks: + annotations: false diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4654d707d57..8df7c73ba09 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -18,7 +18,10 @@ updates: patterns: - "xunit" - "xunit.*" + - "xunit.v3" + - "xunit.v3.*" - "Verify.Xunit" + - "Verify.XunitV3" - package-ecosystem: npm target-branch: main diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fbcefc84a4..47462c6cd30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,12 +9,13 @@ on: jobs: test: runs-on: ${{ matrix.os }} + timeout-minutes: 30 strategy: fail-fast: false matrix: os: [windows-latest, macos-latest, ubuntu-latest] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: ref: ${{github.event.pull_request.head.ref}} repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -45,13 +46,19 @@ jobs: env: PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} + - uses: codecov/codecov-action@v5 + if: matrix.os == 'ubuntu-latest' + with: + fail_ci_if_error: false + token: ${{ secrets.CODECOV_TOKEN }} + - run: echo "DOTNET_DbgEnableMiniDump=1" >> $GITHUB_ENV if: matrix.os == 'ubuntu-latest' - run: dotnet run -c Release --no-build -f net8.0 --project src/docfx -- docs/docfx.json - run: dotnet run -c Release --no-build -f net8.0 --project src/docfx -- samples/seed/docfx.json --output docs/_site/seed - - uses: actions/upload-pages-artifact@v3 + - uses: actions/upload-pages-artifact@v4 if: matrix.os == 'ubuntu-latest' with: path: docs/_site diff --git a/.github/workflows/dependabot.yml b/.github/workflows/dependabot.yml index 22ba8db6ce1..786a829c086 100644 --- a/.github/workflows/dependabot.yml +++ b/.github/workflows/dependabot.yml @@ -10,11 +10,19 @@ jobs: runs-on: ubuntu-latest if: ${{ github.actor == 'dependabot[bot]' }} steps: - - run: gh pr review --approve "$PR_URL" + - name: Retrieve Dependabot metadata + id: metadata + uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7 # v2.3.0 + + - name: Auto Approve PR + run: gh pr review --approve "$PR_URL" env: PR_URL: ${{github.event.pull_request.html_url}} GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - - run: gh pr merge --auto --squash "$PR_URL" + + - name: Auto Merge PR + run: gh pr merge --auto --squash "$PR_URL" + if: ${{ steps.metadata.outputs.package-ecosystem != 'github_actions' }} env: PR_URL: ${{github.event.pull_request.html_url}} GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000000..3100653b971 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,44 @@ +name: lint + +on: + pull_request: + types: + - opened + - reopened + - synchronize + - ready_for_review + workflow_dispatch: + +jobs: + build: + name: Lint + runs-on: ubuntu-latest + timeout-minutes: 30 + if: github.event.pull_request.draft == false + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Setup .NET SDK + uses: actions/setup-dotnet@v5 + with: + dotnet-version: | + 9.x + + - name: Run `dotnet format` command + run: | + dotnet restore + dotnet format --no-restore --verify-no-changes + + - name: Report failures as Job Summary + if: ${{ failure() }} + shell: pwsh + run: | + $content = ' + ## Failed to run the `lint.yml` workflow + To fix workflow errors. Please follow the steps below. + 1. Run `dotnet format` command. + 2. Commit changes as separated commit. + 3. Push changes to source branch of PR. + ' + Write-Output $content >> $env:GITHUB_STEP_SUMMARY diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 944d0da0fcc..54d974c01df 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -11,10 +11,16 @@ jobs: publish-github-packages: if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest + timeout-minutes: 30 permissions: packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/setup-dotnet@v5 + with: + dotnet-version: | + 10.x + + - uses: actions/checkout@v5 with: fetch-depth: 0 @@ -26,12 +32,10 @@ jobs: - uses: ./.github/actions/build - name: dotnet test - id: test-net90 - run: dotnet test -c Release -f net9.0 --no-build + run: dotnet test -c Release -f net8.0 --no-build - - name: Report failed tests - if: ${{ failure() && steps.test-net90.outcome == 'failure' }} - uses: ./.github/actions/report-failed-tests + - name: dotnet test + run: dotnet test -c Release -f net10.0 --no-build - name: dotnet pack run: dotnet pack -c Release /p:Version=${{ steps.version.outputs.version }} /p:ApiCompatGenerateSuppressionFile=true -o drop/nuget @@ -50,7 +54,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Create NuGet.config shell: pwsh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 82f921c982c..c74a2db1175 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,103 +1,120 @@ -name: release -on: - release: - types: [published] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: ./.github/actions/build - - - name: dotnet pack - run: dotnet pack -c Release /p:Version=${GITHUB_REF_NAME#v} -o drop/nuget - - - name: dotnet publish - run: | - dotnet publish src/docfx -f net8.0 -c Release /p:Version=${GITHUB_REF_NAME#v} --self-contained -r win-x64 -o drop/publish/win-x64 - dotnet publish src/docfx -f net8.0 -c Release /p:Version=${GITHUB_REF_NAME#v} --self-contained -r linux-x64 -o drop/publish/linux-x64 - dotnet publish src/docfx -f net8.0 -c Release /p:Version=${GITHUB_REF_NAME#v} --self-contained -r osx-x64 -o drop/publish/osx-x64 - mkdir -p drop/bin - - - run: zip -r ../../bin/docfx-win-x64-${GITHUB_REF_NAME}.zip . - working-directory: drop/publish/win-x64 - - run: zip -r ../../bin/docfx-linux-x64-${GITHUB_REF_NAME}.zip . - working-directory: drop/publish/linux-x64 - - run: zip -r ../../bin/docfx-osx-x64-${GITHUB_REF_NAME}.zip . - working-directory: drop/publish/osx-x64 - - - uses: actions/upload-artifact@v4 - with: - name: nuget - path: drop/nuget - - - uses: actions/upload-artifact@v4 - with: - name: bin - path: drop/bin - - sign: - runs-on: windows-latest - needs: build - steps: - - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.x - - - uses: actions/download-artifact@v4 - with: - name: nuget - path: drop/nuget - - - run: dotnet tool install --tool-path . sign --version 0.9.1-beta.24170.3 - - - run: > - ./sign code azure-key-vault - drop/nuget/**/*.* - --description "Docfx code sign" - --description-url "https://dotnet.github.io/docfx" - --timestamp-url http://timestamp.digicert.com - --azure-key-vault-url "${{ secrets.SIGN_KEY_VAULT_URL }}" - --azure-key-vault-certificate "${{ secrets.SIGN_KEY_VAULT_CERTIFICATE }}" - --azure-key-vault-tenant-id "${{ secrets.SIGN_KEY_VAULT_TENANT_ID }}" - --azure-key-vault-client-id "${{ secrets.SIGN_KEY_VAULT_CLIENT_ID }}" - --azure-key-vault-client-secret "${{ secrets.SIGN_KEY_VAULT_CLIENT_SECRET }}" - - - uses: actions/upload-artifact@v4 - with: - name: nuget-signed - path: drop/nuget - - publish: - runs-on: ubuntu-latest - needs: sign - permissions: - contents: write - steps: - - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.x - - - uses: actions/download-artifact@v4 - with: - name: nuget-signed - path: drop/nuget - - - uses: actions/download-artifact@v4 - with: - name: bin - path: drop/bin - - - name: Publish NuGet packages - run: | - dotnet nuget push drop/nuget/*.nupkg --api-key "${{ secrets.NUGET_KEY }}" --skip-duplicate --source https://api.nuget.org/v3/index.json - - - name: Upload GitHub release - run: | - gh release upload --repo dotnet/docfx ${GITHUB_REF_NAME} drop/bin/docfx-win-x64-${GITHUB_REF_NAME}.zip - gh release upload --repo dotnet/docfx ${GITHUB_REF_NAME} drop/bin/docfx-linux-x64-${GITHUB_REF_NAME}.zip - gh release upload --repo dotnet/docfx ${GITHUB_REF_NAME} drop/bin/docfx-osx-x64-${GITHUB_REF_NAME}.zip - env: - GH_TOKEN: ${{ github.token }} +name: release +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - uses: ./.github/actions/build + + - name: dotnet pack + run: dotnet pack -c Release /p:Version=${GITHUB_REF_NAME#v} -o drop/nuget + + - name: dotnet publish + run: | + dotnet publish src/docfx -f net8.0 -c Release /p:Version=${GITHUB_REF_NAME#v} --self-contained -r win-x64 -o drop/publish/win-x64 + dotnet publish src/docfx -f net8.0 -c Release /p:Version=${GITHUB_REF_NAME#v} --self-contained -r linux-x64 -o drop/publish/linux-x64 + dotnet publish src/docfx -f net8.0 -c Release /p:Version=${GITHUB_REF_NAME#v} --self-contained -r osx-x64 -o drop/publish/osx-x64 + mkdir -p drop/bin + + - run: zip -r ../../bin/docfx-win-x64-${GITHUB_REF_NAME}.zip . + working-directory: drop/publish/win-x64 + - run: zip -r ../../bin/docfx-linux-x64-${GITHUB_REF_NAME}.zip . + working-directory: drop/publish/linux-x64 + - run: zip -r ../../bin/docfx-osx-x64-${GITHUB_REF_NAME}.zip . + working-directory: drop/publish/osx-x64 + + - uses: actions/upload-artifact@v4 + with: + name: nuget + path: drop/nuget + + - uses: actions/upload-artifact@v4 + with: + name: bin + path: drop/bin + + sign: + runs-on: windows-latest + needs: build + environment: nuget.org + permissions: + id-token: write + steps: + - uses: actions/setup-dotnet@v5 + with: + dotnet-version: 8.x + + - uses: actions/download-artifact@v5 + with: + name: nuget + path: drop/nuget + + - run: dotnet tool install --tool-path . --prerelease sign + + - uses: azure/login@v1 + with: + allow-no-subscriptions: true + client-id: ${{ secrets.SIGN_KEY_VAULT_CLIENT_ID }} + tenant-id: ${{ secrets.SIGN_KEY_VAULT_TENANT_ID }} + + - run: > + ./sign code azure-key-vault + drop/nuget/**/*.* + --description "Docfx code sign" + --description-url "https://dotnet.github.io/docfx" + --timestamp-url http://timestamp.digicert.com + --azure-credential-type "azure-cli" + --azure-key-vault-url "${{ secrets.SIGN_KEY_VAULT_URL }}" + --azure-key-vault-certificate "${{ secrets.SIGN_KEY_VAULT_CERTIFICATE }}" + + - uses: actions/upload-artifact@v4 + with: + name: nuget-signed + path: drop/nuget + + publish: + runs-on: ubuntu-latest + needs: sign + environment: nuget.org + permissions: + contents: write + id-token: write + steps: + - uses: actions/setup-dotnet@v5 + with: + dotnet-version: 8.x + + - uses: actions/download-artifact@v5 + with: + name: nuget-signed + path: drop/nuget + + - uses: actions/download-artifact@v5 + with: + name: bin + path: drop/bin + + - name: NuGet login + uses: NuGet/login@v1 + id: nuget-login + with: + user: ${{ secrets.NUGET_USER }} + + - name: Publish NuGet packages + run: | + dotnet nuget push drop/nuget/*.nupkg --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" --skip-duplicate --source https://api.nuget.org/v3/index.json + + - name: Upload GitHub release + run: | + gh release upload --repo dotnet/docfx ${GITHUB_REF_NAME} drop/bin/docfx-win-x64-${GITHUB_REF_NAME}.zip + gh release upload --repo dotnet/docfx ${GITHUB_REF_NAME} drop/bin/docfx-linux-x64-${GITHUB_REF_NAME}.zip + gh release upload --repo dotnet/docfx ${GITHUB_REF_NAME} drop/bin/docfx-osx-x64-${GITHUB_REF_NAME}.zip + env: + GH_TOKEN: ${{ github.token }} + + diff --git a/.github/workflows/reports.yml b/.github/workflows/reports.yml index 88edd1c0b69..e096fda76b7 100644 --- a/.github/workflows/reports.yml +++ b/.github/workflows/reports.yml @@ -1,58 +1,60 @@ -name: report-test-results -run-name: Generate Test Report for ${{ github.event.workflow_run.head_commit.message }} -on: - workflow_run: - workflows: - - ci - types: - - completed - -permissions: - contents: read - actions: read - checks: write - -jobs: - report: - runs-on: ubuntu-latest - if: ${{ github.event.workflow_run.conclusion == 'success' || github.event.workflow_run.conclusion == 'failure' }} - steps: - - name: Create Test Report - uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5 # v1.9.1 - id : test-reports - with: - artifact: /^logs-(.*)/ # Name of artifact to report - name: test-results # Name of the `check run` which will be created - path: 'test/TestResults/*.trx' - reporter: dotnet-trx - fail-on-error: false - fail-on-empty: false - - - name: Output message to job summary - id: output-job-summary - shell: pwsh - if: ${{ steps.test-reports.outputs.time != '0' }} - run: | - $conclusion = "${{ steps.test-reports.outputs.conclusion }}" - $passed = "${{ steps.test-reports.outputs.passed }}" - $failed = "${{ steps.test-reports.outputs.failed }}" - $skipped = "${{ steps.test-reports.outputs.skipped }}" - $time = "${{ steps.test-reports.outputs.time }}" - $url_html = "${{ steps.test-reports.outputs.url_html }}" - - $content = @" - ## Summary of Test Report - - - **Report URL**: $url_html - - | Conclusion | Passed | Failed | Skipped | Time | - |-------------|---------|---------|----------|------------| - | $conclusion | $passed | $failed | $skipped | $time [ms] | - "@ - - Write-Output $content >> $env:GITHUB_STEP_SUMMARY - - if($failed -ne '0'){ - echo "::error::Test Report contains ${failed} errors." - exit 1 - } +name: report-test-results +run-name: Generate Test Report for ${{ github.event.workflow_run.head_commit.message }} +on: + workflow_run: + workflows: + - ci + - nightly + types: + - completed + +permissions: + contents: read + actions: read + checks: write + +jobs: + report: + runs-on: ubuntu-latest + timeout-minutes: 30 + if: ${{ github.event.workflow_run.conclusion == 'success' || github.event.workflow_run.conclusion == 'failure' }} + steps: + - name: Create Test Report + uses: dorny/test-reporter@dc3a92680fcc15842eef52e8c4606ea7ce6bd3f3 # v2.1.1 + id : test-reports + with: + artifact: /^logs-(.*)/ # Name of artifact to report + name: test-results # Name of the `check run` which will be created + path: 'test/TestResults/*.trx' + reporter: dotnet-trx + fail-on-error: false + fail-on-empty: false + + - name: Output message to job summary + id: output-job-summary + shell: pwsh + if: ${{ steps.test-reports.outputs.time != '0' }} + run: | + $conclusion = "${{ steps.test-reports.outputs.conclusion }}" + $passed = "${{ steps.test-reports.outputs.passed }}" + $failed = "${{ steps.test-reports.outputs.failed }}" + $skipped = "${{ steps.test-reports.outputs.skipped }}" + $time = "${{ steps.test-reports.outputs.time }}" + $url_html = "${{ steps.test-reports.outputs.url_html }}" + + $content = @" + ## Summary of Test Report + + - **Report URL**: $url_html + + | Conclusion | Passed | Failed | Skipped | Time | + |-------------|---------|---------|----------|------------| + | $conclusion | $passed | $failed | $skipped | $time [ms] | + "@ + + Write-Output $content >> $env:GITHUB_STEP_SUMMARY + + if($failed -ne '0'){ + echo "::error::Test Report contains ${failed} errors." + exit 1 + } diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 4d383270736..b7e442c99f9 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -1,63 +1,70 @@ -# This workflow update snapshot. -name: snapshot -on: - workflow_dispatch: - inputs: - dryrun: - type: boolean - description: Set `true` to skip commit diffs. - default: true - -jobs: - snapshot: - runs-on: ubuntu-latest - environment: ci - strategy: - fail-fast: false - permissions: - actions: write # Required to invoke another workflow with `createWorkflowDispatch`. - contents: write # Required to commit snapshot diffs. - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.ref_name }} - lfs: true - - # Build projects - - uses: ./.github/actions/build - - # Update snapshots & accept changes - - run: dotnet test -c Release -f net8.0 --no-build --filter Stage=Snapshot - working-directory: test/docfx.Snapshot.Tests - env: - BUILD_SERVER: false # Need to accept file changes automatically. - - # Show diff file names (It's required when using dryrun option) - - name: Show diff file names - run: | - git diff --name-only - - # Commit updated snapshot contents - - uses: stefanzweifel/git-auto-commit-action@v5 - id: auto-commit-action - if: ${{ github.event.inputs.dryrun == 'false'}} - with: - commit_message: 'test(snapshot): update snapshots ${{ github.sha }}' - - # Invoke CI workflow if changes are committed. - - uses: actions/github-script@v7 - if: ${{ steps.auto-commit-action.outputs.changes_detected == 'true' }} - with: - script: | - try { - await github.rest.actions.createWorkflowDispatch({ - owner: context.repo.owner, - repo: context.repo.repo, - workflow_id: 'ci.yml', - ref: '${{ github.ref_name }}', - }) - } - catch(error) { - console.error(error) - core.setFailed(error) - } +# This workflow update snapshot. +name: snapshot +on: + workflow_dispatch: + inputs: + dryrun: + type: boolean + description: Set `true` to skip commit diffs. + default: true + +jobs: + snapshot: + runs-on: ubuntu-latest + timeout-minutes: 30 + environment: ci + strategy: + fail-fast: false + permissions: + actions: write # Required to invoke another workflow with `createWorkflowDispatch`. + contents: write # Required to commit snapshot diffs. + steps: + - uses: actions/checkout@v5 + with: + ref: ${{ github.ref_name }} + lfs: true + + # Install fonts-noto-color-emoji for emoji support in PDF generation + - name: Install fonts-noto-color-emoji + run: | + sudo apt-get update + sudo apt-get install -y fonts-noto-color-emoji + + # Build projects + - uses: ./.github/actions/build + + # Update snapshots & accept changes + - run: dotnet test -c Release -f net8.0 --no-build --filter Stage=Snapshot + working-directory: test/docfx.Snapshot.Tests + env: + BUILD_SERVER: false # Need to accept file changes automatically. + + # Show diff file names (It's required when using dryrun option) + - name: Show diff file names + run: | + git diff --name-only + + # Commit updated snapshot contents + - uses: stefanzweifel/git-auto-commit-action@v7 + id: auto-commit-action + if: ${{ github.event.inputs.dryrun == 'false'}} + with: + commit_message: 'test(snapshot): update snapshots ${{ github.sha }}' + + # Invoke CI workflow if changes are committed. + - uses: actions/github-script@v7 + if: ${{ steps.auto-commit-action.outputs.changes_detected == 'true' }} + with: + script: | + try { + await github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'ci.yml', + ref: '${{ github.ref_name }}', + }) + } + catch(error) { + console.error(error) + core.setFailed(error) + } diff --git a/Directory.Build.props b/Directory.Build.props index 3006e8571fe..365e0cace63 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,61 +1,54 @@ - - - true - net8.0;net9.0 - net8.0;net9.0 - Preview - enable - true - - - - true - false - - - - - $(NoWarn);NU1507;NU5104;NU5111 - - - - contentFiles - - true - true - snupkg - true - - .NET Foundation and Contributors - Copyright (c) .NET Foundation and Contributors - Technical documentation tool with markdown, API docs for .NET, REST API and more. - - README.md - https://github.com/dotnet/docfx - MIT - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - - - - - - - - - + + + true + net8.0;net9.0 + net8.0;net10.0 + Preview + enable + true + + + + true + false + + + + + $(NoWarn);NU1507;NU5104;NU5111 + + + + contentFiles + + true + true + snupkg + true + + .NET Foundation and Contributors + Copyright (c) .NET Foundation and Contributors + Technical documentation tool with markdown, API docs for .NET, REST API and more. + + README.md + https://github.com/dotnet/docfx + MIT + + + + + + + + + + + + + + diff --git a/Directory.Packages.props b/Directory.Packages.props index 7034c3c082f..0dca50580bf 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,47 +4,45 @@ true - - - - - - - - + + + + + + + - + - - + + - - - - - + + + + - - - - - - - - + + + - - - - - - - - + + + + + + + + + + + + + diff --git a/Dockerfile b/Dockerfile index c2aa4f3dbf6..ec5ca671b1c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ ENV PATH="${PATH}:/root/.dotnet/tools" ENV PLAYWRIGHT_NODEJS_PATH="/usr/bin/node" # Set target docfx version. -ARG DOCFX_VERSION=2.78.1 +ARG DOCFX_VERSION=2.78.2 # Install DocFX as a dotnet tool. RUN dotnet tool install docfx -g --version ${DOCFX_VERSION} && \ @@ -25,4 +25,4 @@ RUN apt-get install -y -qq --update --no-install-recommends nodejs && \ WORKDIR /opt/prj VOLUME [ "/opt/prj" ] -ENTRYPOINT [ "docfx" ] \ No newline at end of file +ENTRYPOINT [ "docfx" ] diff --git a/README.md b/README.md index 8b534c0d8f7..dd5d8682d0a 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![ci](https://github.com/dotnet/docfx/actions/workflows/ci.yml/badge.svg)](https://github.com/dotnet/docfx/actions/workflows/ci.yml) [![nightly](https://github.com/dotnet/docfx/actions/workflows/nightly.yml/badge.svg)](https://github.com/dotnet/docfx/actions/workflows/nightly.yml) [![Help Wanted](https://img.shields.io/github/issues/dotnet/docfx/help-wanted?label=help-wanted)](https://github.com/dotnet/docfx/labels/help-wanted) +[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/dotnet/docfx) * [Getting Started](#getting-started) * [Contributing](#contributing) diff --git a/docfx.sln b/docfx.sln index 9e732c85f0f..a5974afe119 100644 --- a/docfx.sln +++ b/docfx.sln @@ -15,6 +15,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{926A0726-B806-4215-82EF-AF8E22D0FACF}" ProjectSection(SolutionItems) = preProject test\Directory.Build.props = test\Directory.Build.props + test\Directory.Packages.props = test\Directory.Packages.props EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "docfx", "src\docfx\docfx.csproj", "{EF53214F-BA98-4026-BEED-CF771865C312}" @@ -97,6 +98,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Docfx.Build.OverwriteDocume EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Docfx.Build.OverwriteDocuments.Tests", "test\Docfx.Build.OverwriteDocuments.Tests\Docfx.Build.OverwriteDocuments.Tests.csproj", "{CAECA6C3-3317-4E6E-8927-9186857B23E8}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + Directory.Build.props = Directory.Build.props + Directory.Packages.props = Directory.Packages.props + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/docs/docs/dotnet-api-docs.md b/docs/docs/dotnet-api-docs.md index a1d81f5be61..821e8af964a 100644 --- a/docs/docs/dotnet-api-docs.md +++ b/docs/docs/dotnet-api-docs.md @@ -66,7 +66,7 @@ If [source link](https://learn.microsoft.com/en-us/dotnet/standard/library-guida ## Generate from projects or solutions -When the file extension is `.csproj`, `.vbproj`, `.sln` or `slnf`, docfx uses [`MSBuildWorkspace`](https://gist.github.com/DustinCampbell/32cd69d04ea1c08a16ae5c4cd21dd3a3) to perform a design-time build of the projects before generating API docs. +When the file extension is `.csproj`, `.vbproj`, `.sln`, `.slnf` or `.slnx` (.NET 9.0+), docfx uses [`MSBuildWorkspace`](https://gist.github.com/DustinCampbell/32cd69d04ea1c08a16ae5c4cd21dd3a3) to perform a design-time build of the projects before generating API docs. In order to successfully load an MSBuild project, .NET Core SDK must be installed and available globally. The installation must have the necessary workloads and components to support the projects you'll be loading. diff --git a/docs/docs/markdown.md b/docs/docs/markdown.md index 7eb433ef87e..b0c383e9b54 100644 --- a/docs/docs/markdown.md +++ b/docs/docs/markdown.md @@ -329,7 +329,7 @@ There are plenty of other diagrams supported by PlantUML such as: * [Sequence diagram](http://plantuml.com/sequence-diagram) * [Use Case diagram](http://plantuml.com/use-case-diagram) -* [Class diagram](http://plantuml.com/activity-diagram-beta) +* [Class diagram](http://plantuml.com/class-diagram) * [Activity diagram](http://plantuml.com/activity-diagram-beta) * [Component diagram](http://plantuml.com/component-diagram) * [State diagram](http://plantuml.com/state-diagram) @@ -486,6 +486,8 @@ Tabs are indicated by using a specific link syntax within a Markdown header. The A tab starts with a Markdown header, `#`, and is followed by a Markdown link `[]()`. The text of the link will become the text of the tab header, displayed to the customer. In order for the header to be recognized as a tab, the link itself must start with `#tab/` and be followed by an ID representing the content of the tab. The ID is used to sync all same-ID tabs across the page. Using the above example, when a user selects a tab with the link `#tab/windows`, all tabs with the link `#tab/windows` on the page will be selected. +To denote the end of a tab's content, use `***`. + ### Dependent tabs It's possible to make the selection in one set of tabs dependent on the selection in another set of tabs. Here's an example of that in action: diff --git a/docs/index.md b/docs/index.md index 0ea52aeee8d..daefed5dbe1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -131,7 +131,7 @@ If you want to use prerelease version, you can install package with following st 2. Login to GitHub with additional scope request ```pwsh - gh auth login --scopes "read:packages" --host github.com + gh auth login --scopes "read:packages" --hostname github.com ``` 3. Follow the instructions and complete the login steps. diff --git a/docs/reference/docfx-cli-reference/docfx-metadata.md b/docs/reference/docfx-cli-reference/docfx-metadata.md index fc679ed5142..fcf55620fd2 100644 --- a/docs/reference/docfx-cli-reference/docfx-metadata.md +++ b/docs/reference/docfx-cli-reference/docfx-metadata.md @@ -77,6 +77,10 @@ Run `docfx metadata --help` or `docfx -h` to get a list of all available options Disable the default API filter (default filter only generate public or protected APIs). +- **--noRestore** + + Do not run `dotnet restore` before building the projects. + - **--namespaceLayout** Determines the namespace layout in table of contents. diff --git a/docs/reference/docfx-json-reference.md b/docs/reference/docfx-json-reference.md index ff1e2dee49b..87656e9ea83 100644 --- a/docs/reference/docfx-json-reference.md +++ b/docs/reference/docfx-json-reference.md @@ -71,6 +71,20 @@ Specifies an array of resource files to include in the project. Supports [File M Contains all the conceptual files that contain yaml headers with `uid` values and is intended to override the existing metadata `yml` files. Supports [File Mappings](#file-mappings). +### `xref` + +Specifies the urls of xrefmap used by content files. Currently, it supports following scheme: http, https, file. + +### `dest` + +Specifies the output folder of the generated metadata files relative to `docfx.json` directory. +Command line --output argument prepends this value. + +### `output` + +Defines the output folder of the generated build files. +Command line --output argument override this value. + ### `globalMetadata` Contains metadata that will be applied to every file, in key-value pair format. For example, you can define `"_appTitle": "This is the title"` in this section, and when applying template `default`, it will be part of the page title as defined in the template. @@ -88,6 +102,17 @@ Contains metadata that will be applied to every file, in key-value pair format. See [Predefined Metadata](#predefined-metadata) section for a list of predefined metadata. +### `globalMetadataFiles` + +Set [`globalMetadata`](#globalmetadata) from external files. + +```json +{ + "build": { + "globalMetadataFiles": ["global1.json", "global2.json"] + } +} +``` ### `fileMetadata` Specifies metadata associated with a particular file in order of metadata name, file [glob patterns](#glob-patterns) and metadata value: @@ -114,17 +139,6 @@ Specifies metadata associated with a particular file in order of metadata name, See [Predefined Metadata](#predefined-metadata) section for a list of predefined metadata. -### `globalMetadataFiles` - -Set [`globalMetadata`](#globalmetadata) from external files. - -```json -{ - "build": { - "globalMetadataFiles": ["global1.json", "global2.json"] - } -} -``` ### `fileMetadataFiles` @@ -170,9 +184,19 @@ The themes applied to the documentation. Theme is used to customize the styles g Theme is to provide general styles for all the generated pages. Files inside a theme will be generally copied to the output folder. A typical usage is, after YAML files are transformed to HTML pages, well-designed CSS style files in a Theme can then overwrite the default styles defined in template, e.g. `main.css`. -### `xref` +### `postProcessors` -Specifies the urls of xrefmap used by content files. Currently, it supports following scheme: http, https, file. +Specify PostProcessor array. +Built-in HtmlProcessor is automatically added by default. + +### `debug` + +Run in debug mode. With debug mode, raw model and view model will be exported +automatically when it encounters error when applying templates. + +### `debugOutput` + +The output folder for files generated for debugging purpose when in debug mode. ### `exportRawModel` @@ -360,7 +384,7 @@ If set to true, DocFX would not render triple-slash-comments in source code as m ### `references` Specify additinal assembly reference files. -This settings is used when generating metadata from DLLs or source files. +This setting is used when generating metadata from DLLs or source files. Solution or project file-based metadata generation does not use this property. ### `filter` @@ -414,7 +438,7 @@ Specifies how categories in TOC are organized: - `flattened` (default): Renders the namespaces as a plain label. - `nested`: Renders the categories in a nested tree form. -- `none`: Don't render categoriy labels. +- `none`: Don't render category labels. > [!NOTE] > This setting is valid when using `apiPage` or `markdown` output format. `mref` format don't support categories. @@ -499,8 +523,8 @@ The folder name for the generated files. ### Glob Patterns -- `*`: Matches 0 or more charactors in a single path portion. -- `?`: Matches 1 character in a signle path portion. +- `*`: Matches 0 or more characters in a single path portion. +- `?`: Matches 1 character in a sigle path portion. - `**`: Matches 0 or more directories and subdirectories. - `{}`: Expands the comma-delimited sections within the braces into a set. diff --git a/samples/seed/docfx.json b/samples/seed/docfx.json index 6dcf2b76192..3dfed8aca10 100644 --- a/samples/seed/docfx.json +++ b/samples/seed/docfx.json @@ -70,7 +70,7 @@ { "files": [ "**" ], "src": "obj/md", "dest": "md" }, { "files": [ "**" ], "src": "obj/apipage", "dest": "apipage" }, { "files": [ "articles/**/*.{md,yml}", "*.md", "toc.yml", "restapi/**" ] }, - { "files": [ "pdf/**" ] } + { "files": [ "pdf/*.{md,yml}" ] } ], "resource": [ { diff --git a/samples/seed/dotnet/assembly/BuildFromAssembly.csproj b/samples/seed/dotnet/assembly/BuildFromAssembly.csproj index b42d68e6ba4..8dca6967d9f 100644 --- a/samples/seed/dotnet/assembly/BuildFromAssembly.csproj +++ b/samples/seed/dotnet/assembly/BuildFromAssembly.csproj @@ -1,7 +1,7 @@ - net7.0 + net8.0 enable enable true @@ -9,11 +9,4 @@ CS1591 - - - all - runtime; build; native; contentfiles; analyzers - - - diff --git a/samples/seed/dotnet/project/Project/Inheritdoc.cs b/samples/seed/dotnet/project/Project/Inheritdoc.cs index a2423174f30..be73e56bf7f 100644 --- a/samples/seed/dotnet/project/Project/Inheritdoc.cs +++ b/samples/seed/dotnet/project/Project/Inheritdoc.cs @@ -108,4 +108,41 @@ public class Class2 : Class1 public override bool TestMethod1(bool parm1, int parm2) => false; } } -} \ No newline at end of file + + // Issue #9736 #9495 #9754 + public class Issue9736 + { + public interface IJsonApiOptions + { + /// + /// Whether to use relative links for all resources. false by default. + /// + /// + /// + /// + /// + bool UseRelativeLinks { get; } + } + + public sealed class JsonApiOptions : IJsonApiOptions + { + /// + public bool UseRelativeLinks { get; set; } + } + } +} diff --git a/samples/seed/template/public/bicep.js b/samples/seed/template/public/bicep.js index d2bfe5c9173..e83fed99b21 100644 --- a/samples/seed/template/public/bicep.js +++ b/samples/seed/template/public/bicep.js @@ -1,156 +1,2 @@ -/** - Origin: https://github.com/Duncanma/highlight.js/blob/stable/src/languages/bicep.js - */ - -export function bicep(hljs) { - var bounded = function (text) { return "\\b" + text + "\\b"; }; - var after = function (regex) { return "(?<=" + regex + ")"; }; - var notAfter = function (regex) { return "(?`\\b${n}\\b`,l=n=>`(?<=${n})`,u=n=>`(?`(?=${n})`,c=n=>`(?!${n})`,g="[_a-zA-Z]",b="[_a-zA-Z0-9]",s=o(`${g}${b}*`),r=o("[_a-zA-Z-0-9]+"),e="(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*",d={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:["metadata","targetScope","resource","module","param","var","output","for","in","if","existing","import","as","type","with","using","extends","func","assert","extension"],literal:["true","false","null"],built_in:["az","sys"]},f={className:"comment",match:`//.*${i("$")}`},M={className:"comment",begin:"/\\*",end:"\\*/"},p={variants:[f,M]};function t(n){return[...n,p]}const a={variants:[]},N={match:"\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)"},h={className:"string",begin:"'''",end:`'''${c("'")}`},v={className:"subst",begin:`${u("\\\\")}(\\\${)`,end:"(})",contains:t([a])},A={className:"string",begin:`'${c("''")}`,end:"'",contains:[N,v]},L={className:"number",match:"[0-9]+"},S={className:"literal",match:o("(true|false|null)"),relevance:0},m={className:"variable",match:`${s}${c(`${e}\\(`)}`,keywords:d},y={begin:"{",end:"}",contains:t([{className:"property",match:`${s}${i(`${e}:`)}`,relevance:0},a])},_={begin:`\\[${c(`${e}${o("for")}`)}`,end:"]",contains:t([a])},$={className:"function",begin:`(${s})${e}\\(`,end:"\\)",contains:t([a])},w={className:"meta",begin:`@${e}${i(s)}`,end:"",contains:t([$])},x=`(\\(${e}${s}${e}(,${e}${s}${e})*\\)|\\(${e}\\)|${e}${s}${e})${i(`${e}=>`)}`,z={begin:x,returnBegin:!0,end:`${e}=>`,contains:t([m])},C={begin:`${l(`^${e}`)}#${r}`,end:"$",className:"meta",contains:t([{className:"variable",match:r}])};a.variants=[A,h,L,S,y,_,m,$,w,z,C];export default function(n){return{aliases:["bicep"],case_insensitive:!0,keywords:d,contains:t([a])}} diff --git a/samples/seed/template/public/main.js b/samples/seed/template/public/main.js index 76fb0b02456..410ae6d8ebc 100644 --- a/samples/seed/template/public/main.js +++ b/samples/seed/template/public/main.js @@ -1,4 +1,4 @@ -import { bicep } from './bicep.js' +import bicep from './bicep.js' export default { iconLinks: [ diff --git a/src/Docfx.App/Config/BuildJsonConfig.cs b/src/Docfx.App/Config/BuildJsonConfig.cs index c9dd2a4003a..ed4b395004f 100644 --- a/src/Docfx.App/Config/BuildJsonConfig.cs +++ b/src/Docfx.App/Config/BuildJsonConfig.cs @@ -72,7 +72,7 @@ internal class BuildJsonConfig /// [JsonProperty("globalMetadataFiles")] [JsonPropertyName("globalMetadataFiles")] - public ListWithStringFallback GlobalMetadataFiles { get; set; } = new(); + public ListWithStringFallback GlobalMetadataFiles { get; set; } = []; /// /// Metadata that applies to some specific files. @@ -99,7 +99,7 @@ internal class BuildJsonConfig /// [JsonProperty("template")] [JsonPropertyName("template")] - public ListWithStringFallback Template { get; set; } = new(); + public ListWithStringFallback Template { get; set; } = []; /// /// The themes applied to the documentation. @@ -123,7 +123,7 @@ internal class BuildJsonConfig /// [JsonProperty("postProcessors")] [JsonPropertyName("postProcessors")] - public ListWithStringFallback PostProcessors { get; set; } = new(); + public ListWithStringFallback PostProcessors { get; set; } = []; /// /// Run in debug mode. With debug mode, raw model and view model will be exported diff --git a/src/Docfx.App/Config/FileMetadataPairs.cs b/src/Docfx.App/Config/FileMetadataPairs.cs index 7390e638ad1..b816e909576 100644 --- a/src/Docfx.App/Config/FileMetadataPairs.cs +++ b/src/Docfx.App/Config/FileMetadataPairs.cs @@ -39,7 +39,7 @@ public FileMetadataPairs(IEnumerable items) /// public FileMetadataPairs(FileMetadataPairsItem item) { - _items = new List { item }; + _items = [item]; } /// diff --git a/src/Docfx.App/Config/FileMetadataPairsConverter.SystemTextJson.cs b/src/Docfx.App/Config/FileMetadataPairsConverter.SystemTextJson.cs index 5d294a0e691..7756e581a4b 100644 --- a/src/Docfx.App/Config/FileMetadataPairsConverter.SystemTextJson.cs +++ b/src/Docfx.App/Config/FileMetadataPairsConverter.SystemTextJson.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Linq; using System.Text.Json; using System.Text.Json.Serialization; using Docfx.Common; diff --git a/src/Docfx.App/Config/FileMetadataPairsConverter.cs b/src/Docfx.App/Config/FileMetadataPairsConverter.cs index 71dcc5f3458..a982a1a9c28 100644 --- a/src/Docfx.App/Config/FileMetadataPairsConverter.cs +++ b/src/Docfx.App/Config/FileMetadataPairsConverter.cs @@ -1,11 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Docfx.Common; - -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - namespace Docfx; /// diff --git a/src/Docfx.App/Config/GroupConfig.cs b/src/Docfx.App/Config/GroupConfig.cs index c6346938de3..f443a717c1a 100644 --- a/src/Docfx.App/Config/GroupConfig.cs +++ b/src/Docfx.App/Config/GroupConfig.cs @@ -23,5 +23,5 @@ internal class GroupConfig /// [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.App/Config/ListWithStringFallbackConverter.SystemTextJson.cs b/src/Docfx.App/Config/ListWithStringFallbackConverter.SystemTextJson.cs index 219ec035958..1c1ef94d29a 100644 --- a/src/Docfx.App/Config/ListWithStringFallbackConverter.SystemTextJson.cs +++ b/src/Docfx.App/Config/ListWithStringFallbackConverter.SystemTextJson.cs @@ -1,10 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.IO; using System.Text.Json; using System.Text.Json.Serialization; -using YamlDotNet.Serialization; namespace Docfx; @@ -35,7 +33,7 @@ public override ListWithStringFallback Read(ref Utf8JsonReader reader, Type type { using var document = JsonDocument.ParseValue(ref reader); JsonElement root = document.RootElement; - var values = root.EnumerateObject().Select(x=>x.ToString()); + var values = root.EnumerateObject().Select(x => x.ToString()); return new ListWithStringFallback(values); } default: diff --git a/src/Docfx.App/Config/ListWithStringFallbackConverter.cs b/src/Docfx.App/Config/ListWithStringFallbackConverter.cs index 12188991a86..ea91f6aa239 100644 --- a/src/Docfx.App/Config/ListWithStringFallbackConverter.cs +++ b/src/Docfx.App/Config/ListWithStringFallbackConverter.cs @@ -1,9 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - namespace Docfx; diff --git a/src/Docfx.App/Config/MergeJsonConfigConverter.NewtonsoftJson.cs b/src/Docfx.App/Config/MergeJsonConfigConverter.NewtonsoftJson.cs index 344c352c61f..2c72f7efef4 100644 --- a/src/Docfx.App/Config/MergeJsonConfigConverter.NewtonsoftJson.cs +++ b/src/Docfx.App/Config/MergeJsonConfigConverter.NewtonsoftJson.cs @@ -65,4 +65,4 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s serializer.Serialize(writer, ((MergeJsonConfig)value).ToArray()); } } -} \ No newline at end of file +} diff --git a/src/Docfx.App/Config/MergeJsonConfigConverter.SystemTextJson.cs b/src/Docfx.App/Config/MergeJsonConfigConverter.SystemTextJson.cs index 90ebe522bd1..fcb0825a71a 100644 --- a/src/Docfx.App/Config/MergeJsonConfigConverter.SystemTextJson.cs +++ b/src/Docfx.App/Config/MergeJsonConfigConverter.SystemTextJson.cs @@ -3,7 +3,6 @@ using System.Text.Json; using System.Text.Json.Serialization; -using YamlDotNet.Serialization; namespace Docfx; diff --git a/src/Docfx.App/Config/MergeJsonConfigConverter.cs b/src/Docfx.App/Config/MergeJsonConfigConverter.cs index 64d4e815013..03c9836af2f 100644 --- a/src/Docfx.App/Config/MergeJsonConfigConverter.cs +++ b/src/Docfx.App/Config/MergeJsonConfigConverter.cs @@ -1,9 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - namespace Docfx; /// diff --git a/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs b/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs index 2bafb81bef6..c9324530912 100644 --- a/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs +++ b/src/Docfx.App/Helpers/DocumentBuilderWrapper.cs @@ -263,7 +263,7 @@ private static FileMetadata GetFileMetadata(string baseDirectory, BuildJsonConfi { foreach (var (key, value) in config.FileMetadata) { - var list = result.TryGetValue(key, out var items) ? items : result[key] = new(); + var list = result.TryGetValue(key, out var items) ? items : result[key] = []; foreach (var pair in value.Items) { list.Add(new FileMetadataItem(pair.Glob, key, pair.Value)); @@ -277,7 +277,7 @@ private static FileMetadata GetFileMetadata(string baseDirectory, BuildJsonConfi { foreach (var (key, value) in JsonUtility.Deserialize>(path)) { - var list = result.TryGetValue(key, out var items) ? items : result[key] = new(); + var list = result.TryGetValue(key, out var items) ? items : result[key] = []; foreach (var pair in value.Items) { list.Add(new FileMetadataItem(pair.Glob, key, pair.Value)); diff --git a/src/Docfx.App/Helpers/MetadataMerger.cs b/src/Docfx.App/Helpers/MetadataMerger.cs index 2dee2e496f3..c4b80118d2f 100644 --- a/src/Docfx.App/Helpers/MetadataMerger.cs +++ b/src/Docfx.App/Helpers/MetadataMerger.cs @@ -14,8 +14,8 @@ namespace Docfx; internal class MetadataMerger { - private readonly Dictionary> _metaTable = new(); - private readonly Dictionary> _propTable = new(); + private readonly Dictionary> _metaTable = []; + private readonly Dictionary> _propTable = []; public void Merge(MetadataMergeParameters parameters) { diff --git a/src/Docfx.App/PdfBuilder.cs b/src/Docfx.App/PdfBuilder.cs index a1c4396f60f..bd3c7d28f14 100644 --- a/src/Docfx.App/PdfBuilder.cs +++ b/src/Docfx.App/PdfBuilder.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Buffers; using System.Collections.Concurrent; using System.Diagnostics; using System.Reflection; @@ -25,6 +26,7 @@ using UglyToad.PdfPig.Writer; using static Docfx.Build.HtmlTemplate; +using static UglyToad.PdfPig.Writer.PdfDocumentBuilder; #nullable enable @@ -32,6 +34,8 @@ namespace Docfx.Pdf; static class PdfBuilder { + private static readonly SearchValues InvalidPathChars = SearchValues.Create(Path.GetInvalidPathChars()); + class Outline { public string name { get; init; } = ""; @@ -48,17 +52,17 @@ class Outline public string? pdfFooterTemplate { get; init; } } - public static Task Run(BuildJsonConfig config, string configDirectory, string? outputDirectory = null) + public static Task Run(BuildJsonConfig config, string configDirectory, string? outputDirectory = null, CancellationToken cancellationToken = default) { var outputFolder = Path.GetFullPath(Path.Combine( string.IsNullOrEmpty(outputDirectory) ? Path.Combine(configDirectory, config.Output ?? "") : outputDirectory, config.Dest ?? "")); Logger.LogInfo($"Searching for manifest in {outputFolder}"); - return CreatePdf(outputFolder); + return CreatePdf(outputFolder, cancellationToken); } - public static async Task CreatePdf(string outputFolder) + public static async Task CreatePdf(string outputFolder, CancellationToken cancellationToken = default) { var stopwatch = Stopwatch.StartNew(); var pdfTocs = GetPdfTocs().ToDictionary(p => p.url, p => p.toc); @@ -67,7 +71,7 @@ public static async Task CreatePdf(string outputFolder) PlaywrightHelper.EnsurePlaywrightNodeJsPath(); - Program.Main(["install", "chromium"]); + Program.Main(["install", "chromium", "--only-shell"]); var builder = WebApplication.CreateBuilder(); builder.Logging.ClearProviders(); @@ -79,7 +83,7 @@ public static async Task CreatePdf(string outputFolder) using var app = builder.Build(); app.UseServe(outputFolder); app.MapGet("/_pdftoc/{*url}", TocPage); - await app.StartAsync(); + await app.StartAsync(cancellationToken); baseUrl = new Uri(app.Urls.First()); @@ -94,27 +98,54 @@ public static async Task CreatePdf(string outputFolder) using var pageLimiter = new SemaphoreSlim(Environment.ProcessorCount, Environment.ProcessorCount); var pagePool = new ConcurrentBag(); - var headerFooterCache = new ConcurrentDictionary<(string, string), Task>(); + var headerFooterTemplateCache = new ConcurrentDictionary(); + var headerFooterPageCache = new ConcurrentDictionary<(string, string), Task>(); - await AnsiConsole.Progress().StartAsync(async progress => + var pdfBuildTask = AnsiConsole.Progress().StartAsync(async progress => { - await Parallel.ForEachAsync(pdfTocs, async (item, _) => + await Parallel.ForEachAsync(pdfTocs, new ParallelOptions { CancellationToken = cancellationToken }, async (item, _) => { var (url, toc) = item; var outputName = Path.Combine(Path.GetDirectoryName(url) ?? "", toc.pdfFileName ?? Path.ChangeExtension(Path.GetFileName(url), ".pdf")); var task = progress.AddTask(outputName); - var outputPath = Path.Combine(outputFolder, outputName); + var pdfOutputPath = Path.Combine(outputFolder, outputName); await CreatePdf( - PrintPdf, PrintHeaderFooter, task, new(baseUrl, url), toc, outputPath, - pageNumbers => pdfPageNumbers[url] = pageNumbers); + PrintPdf, PrintHeaderFooter, task, new(baseUrl, url), toc, outputFolder, pdfOutputPath, + pageNumbers => pdfPageNumbers[url] = pageNumbers, + cancellationToken); task.Value = task.MaxValue; task.StopTask(); }); }); + try + { + await pdfBuildTask.WaitAsync(cancellationToken); + } + catch (OperationCanceledException) + { + if (!pdfBuildTask.IsCompleted) + { + // If pdf generation task is not completed. + // Manually close playwright context/browser to immediately shutdown remaining tasks. + await context.CloseAsync(); + await browser.CloseAsync(); + try + { + await pdfBuildTask; // Wait AnsiConsole.Progress operation completed to output logs. + } + catch + { + Logger.LogError($"PDF file generation is canceled by user interaction."); + return; + } + } + } + Logger.LogVerbose($"PDF done in {stopwatch.Elapsed}"); + return; IEnumerable<(string url, Outline toc)> GetPdfTocs() { @@ -146,27 +177,47 @@ IResult TocPage(string url) async Task PrintPdf(Outline outline, Uri url) { - await pageLimiter.WaitAsync(); + await pageLimiter.WaitAsync(cancellationToken); var page = pagePool.TryTake(out var pooled) ? pooled : await context.NewPageAsync(); try { + Uri beforeUri = new(page.Url); var response = await page.GotoAsync(url.ToString(), new() { WaitUntil = WaitUntilState.DOMContentLoaded }); if (response?.Status is 404) return null; - if (response is null || !response.Ok) - throw new InvalidOperationException($"Failed to build PDF page [{response?.Status}]: {url}"); + bool isSameUrlNavigation = response == null && beforeUri == url; + bool isHashFragmentNavigation = response == null + && beforeUri.GetLeftPart(UriPartial.Path) == url.GetLeftPart(UriPartial.Path) + && beforeUri.Fragment != url.Fragment; - try + if (isSameUrlNavigation) { - await page.AddScriptTagAsync(new() { Content = EnsureHeadingAnchorScript }); - await page.WaitForFunctionAsync("!window.docfx || window.docfx.ready"); - await page.WaitForLoadStateAsync(LoadState.NetworkIdle); + // Specified page content is already loaded. } - catch (TimeoutException) + else if (isHashFragmentNavigation) { - Logger.LogWarning($"Timeout waiting for page to load, generated PDF page may be incomplete: {url}"); + // Hash fragment navigation inside page. network request is not executed. + await page.WaitForURLAsync(url.ToString()); + } + else if (response is null || !response.Ok) + { + // Goto navigation failed. + throw new InvalidOperationException($"Failed to build PDF page [{response?.Status}]: {url}"); + } + else + { + try + { + await page.AddScriptTagAsync(new() { Content = EnsureHeadingAnchorScript }); + await page.WaitForFunctionAsync("!window.docfx || window.docfx.ready"); + await page.WaitForLoadStateAsync(LoadState.NetworkIdle); + } + catch (TimeoutException) + { + Logger.LogWarning($"Timeout waiting for page to load, generated PDF page may be incomplete: {url}"); + } } return await page.PdfAsync(new PagePdfOptions @@ -187,11 +238,11 @@ Task PrintHeaderFooter(Outline toc, int pageNumber, int totalPages, Page var headerTemplate = ExpandTemplate(GetHeaderFooter(toc.pdfHeaderTemplate), pageNumber, totalPages); var footerTemplate = ExpandTemplate(GetHeaderFooter(toc.pdfFooterTemplate) ?? DefaultFooterTemplate, pageNumber, totalPages); - return headerFooterCache.GetOrAdd((headerTemplate, footerTemplate), _ => PrintHeaderFooterCore()); + return headerFooterPageCache.GetOrAdd((headerTemplate, footerTemplate), _ => PrintHeaderFooterCore()); async Task PrintHeaderFooterCore() { - await pageLimiter.WaitAsync(); + await pageLimiter.WaitAsync(cancellationToken); var page = pagePool.TryTake(out var pooled) ? pooled : await context.NewPageAsync(); try @@ -241,26 +292,36 @@ static string ExpandTemplate(string? pdfTemplate, int pageNumber, int totalPages if (string.IsNullOrEmpty(template)) return template; - try - { - var path = Path.Combine(outputFolder, template); - return File.Exists(path) ? File.ReadAllText(path) : template; - } - catch - { + // Check path chars. If it's contains HTML chars. Skip access to file content to optimmize performance + if (template.AsSpan().ContainsAny(InvalidPathChars)) return template; - } + + return headerFooterTemplateCache.GetOrAdd(template, (_) => + { + // Note: This valueFactory might be called multiple times. + try + { + var path = Path.GetFullPath(Path.Combine(outputFolder, template)); + if (!File.Exists(path)) + return template; + + var templateContent = File.ReadAllText(path); + return templateContent; + } + catch + { + return template; + } + }); } + } } static async Task CreatePdf( Func> printPdf, Func> printHeaderFooter, ProgressTask task, - Uri outlineUrl, Outline outline, string outputPath, Action> updatePageNumbers) + Uri outlineUrl, Outline outline, string outputFolder, string pdfOutputPath, Action> updatePageNumbers, CancellationToken cancellationToken) { - var tempDirectory = Path.Combine(Path.GetTempPath(), ".docfx", "pdf", "pages"); - Directory.CreateDirectory(tempDirectory); - var pages = GetPages(outline).ToArray(); if (pages.Length == 0) return; @@ -270,7 +331,7 @@ static async Task CreatePdf( // Make progress at 99% before merge PDF task.MaxValue = pages.Length + (pages.Length / 99.0); - await Parallel.ForEachAsync(pages, async (item, _) => + await Parallel.ForEachAsync(pages, new ParallelOptions { CancellationToken = cancellationToken }, async (item, _) => { var (url, node) = item; if (await printPdf(outline, url) is { } bytes) @@ -288,6 +349,8 @@ await Parallel.ForEachAsync(pages, async (item, _) => foreach (var (url, node) in pages) { + cancellationToken.ThrowIfCancellationRequested(); + if (!pageBytes.TryGetValue(node, out var bytes)) continue; @@ -297,7 +360,7 @@ await Parallel.ForEachAsync(pages, async (item, _) => var key = CleanUrl(url); if (!pagesByUrl.TryGetValue(key, out var dests)) - pagesByUrl[key] = dests = new(); + pagesByUrl[key] = dests = []; dests.Add((node, document.Structure.Catalog.GetNamedDestinations())); pageBytes[node] = bytes; @@ -310,13 +373,14 @@ await Parallel.ForEachAsync(pages, async (item, _) => var producer = $"docfx ({typeof(PdfBuilder).Assembly.GetCustomAttribute()?.Version})"; - using var output = File.Create(outputPath); + using var output = File.Create(pdfOutputPath); using var builder = new PdfDocumentBuilder(output); builder.DocumentInformation = new() { Producer = producer }; builder.Bookmarks = CreateBookmarks(outline.items); await MergePdf(); + return; IEnumerable<(Uri url, Outline node)> GetPages(Outline outline) { @@ -354,10 +418,12 @@ async Task MergePdf() foreach (var (url, node) in pages) { + cancellationToken.ThrowIfCancellationRequested(); + if (!pageBytes.TryGetValue(node, out var bytes)) continue; - var isCoverPage = url.AbsolutePath.TrimStart('/').Equals(outline.pdfCoverPage, GetStringComparison()); + var isCoverPage = IsCoverPage(url, outputFolder, outline.pdfCoverPage); var isTocPage = IsTocPage(url); if (isTocPage) @@ -373,9 +439,14 @@ async Task MergePdf() using var document = PdfDocument.Open(bytes); for (var i = 1; i <= document.NumberOfPages; i++) { + cancellationToken.ThrowIfCancellationRequested(); + pageNumber++; - var pageBuilder = builder.AddPage(document, i, x => CopyLink(node, x)); + var pageBuilder = builder.AddPage(document, i, new AddPageOptions + { + CopyLinkFunc = x => CopyLink(node, x), + }); if (isCoverPage) continue; @@ -440,6 +511,19 @@ PdfAction HandleUriAction(UriAction url) static Uri CleanUrl(Uri url) => new UriBuilder(url) { Query = null, Fragment = null }.Uri; + static bool IsCoverPage(Uri pageUri, string baseFolder, string? pdfCoverPage) + { + Debug.Assert(Path.IsPathFullyQualified(baseFolder)); + + if (string.IsNullOrEmpty(pdfCoverPage)) + return false; + + string pagePath = pageUri.AbsolutePath.TrimStart('/'); + string covePagePath = PathUtility.MakeRelativePath(baseFolder, Path.GetFullPath(Path.Combine(baseFolder, pdfCoverPage))); + + return pagePath.Equals(covePagePath, GetStringComparison()); + } + static bool IsTocPage(Uri url) => url.AbsolutePath.StartsWith("/_pdftoc/"); Bookmarks CreateBookmarks(Outline[]? items) diff --git a/src/Docfx.App/RunBuild.cs b/src/Docfx.App/RunBuild.cs index 5501ae9e856..0549827bfd3 100644 --- a/src/Docfx.App/RunBuild.cs +++ b/src/Docfx.App/RunBuild.cs @@ -21,7 +21,7 @@ public static string Exec(BuildJsonConfig config, BuildOptions options, string c var stopwatch = Stopwatch.StartNew(); if (config.Template == null || config.Template.Count == 0) { - config.Template = new ListWithStringFallback { "default" }; + config.Template = ["default"]; } var baseDirectory = Path.GetFullPath(string.IsNullOrEmpty(configDirectory) ? Directory.GetCurrentDirectory() : configDirectory); diff --git a/src/Docfx.App/RunMerge.cs b/src/Docfx.App/RunMerge.cs index 76df5b5ed51..1b6ed57744a 100644 --- a/src/Docfx.App/RunMerge.cs +++ b/src/Docfx.App/RunMerge.cs @@ -56,7 +56,7 @@ private static MetadataMergeParameters ConfigToParameter(MergeJsonItemConfig con OutputBaseDir = outputDirectory, Metadata = config.GlobalMetadata?.ToImmutableDictionary() ?? ImmutableDictionary.Empty, FileMetadata = ConvertToFileMetadataItem(baseDirectory, config.FileMetadata), - TocMetadata = config.TocMetadata?.ToImmutableList() ?? ImmutableList.Empty, + TocMetadata = config.TocMetadata?.ToImmutableList() ?? [], Files = GetFileCollectionFromFileMapping( baseDirectory, DocumentType.Article, diff --git a/src/Docfx.App/RunServe.cs b/src/Docfx.App/RunServe.cs index 54cfb197ddc..fa14f8d5135 100644 --- a/src/Docfx.App/RunServe.cs +++ b/src/Docfx.App/RunServe.cs @@ -2,15 +2,19 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using Docfx.Common; using Docfx.Plugins; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +#nullable enable + namespace Docfx; /// @@ -44,6 +48,7 @@ public static void Exec(string folder, string host, int? port, bool openBrowser, Console.WriteLine($"Serving \"{folder}\" on {url}"); Console.WriteLine("Press Ctrl+C to shut down"); using var app = builder.Build(); + app.UseExtensionlessHtmlUrl(); app.UseServe(folder); if (openBrowser || !string.IsNullOrEmpty(openFile)) @@ -161,4 +166,41 @@ private static void LaunchBrowser(string url) Logger.LogError($"Could not launch the browser process. with error - {ex.Message}"); } } + + /// + /// Enable HTML content access with extensionless URL. + /// This extension method must be called before `UseFileServer` or `UseStaticFiles`. + /// + private static IApplicationBuilder UseExtensionlessHtmlUrl(this WebApplication app) + { + // Configure middleware that rewrite extensionless url to physical HTML file path. + return app.Use(async (context, next) => + { + if (IsGetOrHeadMethod(context.Request.Method) + && TryResolveHtmlFilePath(context.Request.Path, out var htmlFilePath)) + { + context.Request.Path = htmlFilePath; + } + + await next(); + }); + + static bool IsGetOrHeadMethod(string method) => HttpMethods.IsGet(method) || HttpMethods.IsHead(method); + + // Try to resolve HTML file path. + bool TryResolveHtmlFilePath(PathString pathString, [NotNullWhen(true)] out string? htmlPath) + { + var path = pathString.Value; + if (!string.IsNullOrEmpty(path) && !Path.HasExtension(path) && !path.EndsWith('/')) + { + htmlPath = $"{path}.html"; + var fileInfo = app.Environment.WebRootFileProvider.GetFileInfo(htmlPath); + if (fileInfo != null) + return true; + } + + htmlPath = null; + return false; + } + } } diff --git a/src/Docfx.Build.Common/DisposableDocumentProcessor.cs b/src/Docfx.Build.Common/DisposableDocumentProcessor.cs index 1b0047efee8..bee6f68db69 100644 --- a/src/Docfx.Build.Common/DisposableDocumentProcessor.cs +++ b/src/Docfx.Build.Common/DisposableDocumentProcessor.cs @@ -22,6 +22,15 @@ public abstract class DisposableDocumentProcessor : IDocumentProcessor, IDisposa public void Dispose() { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (!disposing) + return; + if (BuildSteps != null) { foreach (var buildStep in BuildSteps) diff --git a/src/Docfx.Build.Common/MarkdownReader.cs b/src/Docfx.Build.Common/MarkdownReader.cs index 1aae2b1eaf8..66e9a40fc33 100644 --- a/src/Docfx.Build.Common/MarkdownReader.cs +++ b/src/Docfx.Build.Common/MarkdownReader.cs @@ -13,7 +13,7 @@ namespace Docfx.Build.Common; public class MarkdownReader { - private static readonly ImmutableList RequiredProperties = ImmutableList.Create(Constants.PropertyName.Uid); + private static readonly ImmutableList RequiredProperties = [Constants.PropertyName.Uid]; public static IEnumerable ReadMarkdownAsOverwrite(IHostService host, FileAndType ft) { diff --git a/src/Docfx.Build.Common/ModelAttributeHandlers/HandleModelAttributesContext.cs b/src/Docfx.Build.Common/ModelAttributeHandlers/HandleModelAttributesContext.cs index 10f37bc5c1c..87a6811be05 100644 --- a/src/Docfx.Build.Common/ModelAttributeHandlers/HandleModelAttributesContext.cs +++ b/src/Docfx.Build.Common/ModelAttributeHandlers/HandleModelAttributesContext.cs @@ -14,11 +14,11 @@ public class HandleModelAttributesContext public bool EnableContentPlaceholder { get; set; } public string PlaceholderContent { get; set; } public bool ContainsPlaceholder { get; set; } - public HashSet Dependency { get; set; } = new(); + public HashSet Dependency { get; set; } = []; public FileAndType FileAndType { get; set; } public HashSet LinkToFiles { get; set; } = new(FilePathComparer.OSPlatformSensitiveStringComparer); - public HashSet LinkToUids { get; set; } = new(); - public List Uids { get; set; } = new(); - public Dictionary> UidLinkSources { get; set; } = new(); - public Dictionary> FileLinkSources { get; set; } = new(); + public HashSet LinkToUids { get; set; } = []; + public List Uids { get; set; } = []; + public Dictionary> UidLinkSources { get; set; } = []; + public Dictionary> FileLinkSources { get; set; } = []; } diff --git a/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/BaseModelAttributeHandler.cs b/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/BaseModelAttributeHandler.cs index 1178c9062bf..50ca4526e80 100644 --- a/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/BaseModelAttributeHandler.cs +++ b/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/BaseModelAttributeHandler.cs @@ -78,7 +78,7 @@ public object Handle(object obj, HandleModelAttributesContext context) protected virtual bool ShouldHandle(object currentObj, object declaringObject, PropInfo currentPropInfo, HandleModelAttributesContext context) { - return currentPropInfo is {Attr: not null}; + return currentPropInfo is { Attr: not null }; } /// diff --git a/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/UrlContentHandler.cs b/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/UrlContentHandler.cs index 369a59e41f3..9cd182da3fa 100644 --- a/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/UrlContentHandler.cs +++ b/src/Docfx.Build.Common/ModelAttributeHandlers/Handlers/UrlContentHandler.cs @@ -98,7 +98,7 @@ private static string GetHrefFromRoot(string originalHref, HandleModelAttributes if (!context.FileLinkSources.TryGetValue(file, out List sources)) { - sources = new List(); + sources = []; context.FileLinkSources[file] = sources; } sources.Add(new LinkSourceInfo diff --git a/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs b/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs index 8ac8f568cbb..90d9118ba0c 100644 --- a/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs +++ b/src/Docfx.Build.Common/Reference/OverwriteDocumentModel.cs @@ -17,7 +17,7 @@ public class OverwriteDocumentModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; /// /// The uid for this overwrite document, as defined in YAML header @@ -49,7 +49,7 @@ public class OverwriteDocumentModel [YamlIgnore] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public HashSet LinkToFiles { get; set; } = new(); + public HashSet LinkToFiles { get; set; } = []; /// /// Links to other Uids @@ -57,7 +57,7 @@ public class OverwriteDocumentModel [YamlIgnore] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public HashSet LinkToUids { get; set; } = new(); + public HashSet LinkToUids { get; set; } = []; /// /// Link sources information for file @@ -65,7 +65,7 @@ public class OverwriteDocumentModel [YamlIgnore] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public Dictionary> FileLinkSources { get; set; } = new(); + public Dictionary> FileLinkSources { get; set; } = []; /// /// Link sources information for Uid @@ -73,7 +73,7 @@ public class OverwriteDocumentModel [YamlIgnore] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public Dictionary> UidLinkSources { get; set; } = new(); + public Dictionary> UidLinkSources { get; set; } = []; /// /// Dependencies extracted from the markdown content diff --git a/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs b/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs index 9135d8c370a..87da14659f5 100644 --- a/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs +++ b/src/Docfx.Build.ManagedReference/ApplyPlatformVersion.cs @@ -60,7 +60,7 @@ private static List GetPlatformVersionFromMetadata(object value) { if (value is string text) { - return new List { text }; + return [text]; } if (value is IEnumerable collection) diff --git a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs index d3087ea9a83..989e40db3f4 100644 --- a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs +++ b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiBuildOutput.cs @@ -184,7 +184,7 @@ public class ApiBuildOutput [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; public static ApiBuildOutput FromModel(PageViewModel model) { diff --git a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs index 14416d04deb..dda51eaf027 100644 --- a/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs +++ b/src/Docfx.Build.ManagedReference/BuildOutputs/ApiReferenceBuildOutput.cs @@ -174,7 +174,7 @@ public class ApiReferenceBuildOutput [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] @@ -300,7 +300,7 @@ public void Expand(Dictionary references, strin public static List GetSpecNames(string xref, string[] supportedLanguages, SortedList> specs = null) { - if (specs is {Count: > 0}) + if (specs is { Count: > 0 }) { return (from spec in specs where supportedLanguages.Contains(spec.Key) diff --git a/src/Docfx.Build.ManagedReference/FillMetadata.cs b/src/Docfx.Build.ManagedReference/FillMetadata.cs new file mode 100644 index 00000000000..e35ea0f0725 --- /dev/null +++ b/src/Docfx.Build.ManagedReference/FillMetadata.cs @@ -0,0 +1,42 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections.Immutable; +using System.Composition; +using Docfx.Build.Common; +using Docfx.DataContracts.ManagedReference; +using Docfx.Plugins; + +namespace Docfx.Build.ManagedReference; + +[Export(nameof(ManagedReferenceDocumentProcessor), typeof(IDocumentBuildStep))] +public class FillMetadata : BaseDocumentBuildStep +{ + public override string Name => nameof(FillMetadata); + public override int BuildOrder => 0x30; + + public override void Postbuild(ImmutableList models, IHostService host) + { + if (models.Count > 0) + { + foreach (var model in models) + { + if (model.Type != DocumentType.Article) + { + continue; + } + + model.ManifestProperties.Uid = null; + var pageViewModel = (PageViewModel)model.Content; + if (pageViewModel.Items.Count == 0) + { + continue; + } + + model.ManifestProperties.IsMRef = true; + model.ManifestProperties.Title = pageViewModel.Items[0].FullName; + model.ManifestProperties.Summary = pageViewModel.Items[0].Summary; + } + } + } +} diff --git a/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs b/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs index 96268da6666..63356c20225 100644 --- a/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs +++ b/src/Docfx.Build.ManagedReference/FillReferenceInformation.cs @@ -14,7 +14,7 @@ namespace Docfx.Build.ManagedReference; [Export(nameof(ManagedReferenceDocumentProcessor), typeof(IDocumentBuildStep))] public class FillReferenceInformation : BaseDocumentBuildStep { - private readonly Dictionary _items = new(); + private readonly Dictionary _items = []; public override string Name => nameof(FillReferenceInformation); @@ -111,10 +111,10 @@ private void TraceSourceInfo(PageViewModel model, string file) private static IEnumerable GetUidsToFill(PageViewModel pageViewModel) { return from i in pageViewModel.Items - from c in (i.Children ?? Enumerable.Empty()) - .Concat(i.ExtensionMethods ?? Enumerable.Empty()) - .Concat(i.InheritedMembers ?? Enumerable.Empty()) - select c; + from c in (i.Children ?? Enumerable.Empty()) + .Concat(i.ExtensionMethods ?? Enumerable.Empty()) + .Concat(i.InheritedMembers ?? Enumerable.Empty()) + select c; } #endregion diff --git a/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs b/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs index acf4e8e7c7a..6f823e326a6 100644 --- a/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs +++ b/src/Docfx.Build.ManagedReference/MergeManagedReferenceDocument.cs @@ -176,7 +176,7 @@ private static PageViewModel ConvertToVM(MergeItem mergeItem) { var vm = new PageViewModel { - Items = new List(), + Items = [], References = mergeItem.References?.Values.ToList(), Metadata = mergeItem.Metadata, }; diff --git a/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs b/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs index 73349a07201..934c312bcdd 100644 --- a/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs +++ b/src/Docfx.Build.ManagedReference/SplitClassPageToMemberLevel.cs @@ -21,8 +21,8 @@ public class SplitClassPageToMemberLevel : BaseDocumentBuildStep private const string SplitFromPropertyName = "_splitFrom"; private const string IsOverloadPropertyName = "_isOverload"; private const int MaximumFileNameLength = 180; - private static readonly List EmptyList = new(); - private static readonly string[] EmptyArray = Array.Empty(); + private static readonly List EmptyList = []; + private static readonly string[] EmptyArray = []; public override string Name => nameof(SplitClassPageToMemberLevel); @@ -95,7 +95,7 @@ private static void RenewDupeFileModels(FileModel dupeModel, Dictionary { }); + var newModel = GenerateNewFileModel(dupeModel, page, Path.GetFileNameWithoutExtension(newFilePath), []); modelsDict[newFilePath] = newModel; } @@ -180,7 +180,7 @@ private SplittedResult SplitModelToOverloadLevel(FileModel model, Dictionary { primaryItem }; + page.Items = [primaryItem]; page.Metadata[SplitReferencePropertyName] = true; page.Metadata[SplitFromPropertyName] = true; @@ -210,7 +210,7 @@ private static IEnumerable GetNewPages(PageViewModel page) { foreach (var item in overload) { - yield return ExtractPageViewModel(page, new List { item }); + yield return ExtractPageViewModel(page, [item]); } } else @@ -296,7 +296,7 @@ private static List GetVersionFromMetadata(object value) { if (value is string text) { - return new List { text }; + return [text]; } return GetListFromObject(value); diff --git a/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs b/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs index b108f10f8cb..6d520c7b5a7 100644 --- a/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs +++ b/src/Docfx.Build.OperationLevelRestApi/SplitRestApiToOperationLevel.cs @@ -77,9 +77,9 @@ private static Tuple, List> SplitModelToOpe } // Reset children - content.Children = new List(); + content.Children = []; content.Metadata["_isSplittedByOperation"] = true; - content.Tags = new List(); + content.Tags = []; model.Content = content; // Reset uid definition @@ -123,8 +123,8 @@ private static IEnumerable GenerateOperationModels(Res Summary = child.Summary, Remarks = child.Remarks, Documentation = child.Documentation, - Children = new List { child }, - Tags = new List(), + Children = [child], + Tags = [], Metadata = MergeChildMetadata(root, child) }; @@ -139,7 +139,7 @@ private static IEnumerable GenerateOperationModels(Res child.Description = null; child.Summary = null; child.Remarks = null; - child.Tags = new List(); + child.Tags = []; yield return model; } diff --git a/src/Docfx.Build.OverwriteDocuments/MarkdownFragmentsCreator.cs b/src/Docfx.Build.OverwriteDocuments/MarkdownFragmentsCreator.cs index 34a8c202ecc..0eebf55cdd9 100644 --- a/src/Docfx.Build.OverwriteDocuments/MarkdownFragmentsCreator.cs +++ b/src/Docfx.Build.OverwriteDocuments/MarkdownFragmentsCreator.cs @@ -69,7 +69,7 @@ private List PropertySection() { PropertyName = key, PropertyNameSource = Next(), - PropertyValue = new List(), + PropertyValue = [], }; Block block; while ((block = Peek()) != null && !_inlineCodeHeadingRule.Parse(block, out var _)) diff --git a/src/Docfx.Build.OverwriteDocuments/OverwriteDocumentModelCreator.cs b/src/Docfx.Build.OverwriteDocuments/OverwriteDocumentModelCreator.cs index 5a9f3f2af30..2d4bc3a3fa7 100644 --- a/src/Docfx.Build.OverwriteDocuments/OverwriteDocumentModelCreator.cs +++ b/src/Docfx.Build.OverwriteDocuments/OverwriteDocumentModelCreator.cs @@ -37,7 +37,7 @@ internal static Dictionary ConvertYamlCodeBlock(string yamlCodeB { if (string.IsNullOrEmpty(yamlCodeBlock) || yamlCodeBlockSource == null) { - return new Dictionary(); + return []; } using var reader = new StringReader(yamlCodeBlock); @@ -202,7 +202,7 @@ private MarkdownDocument CreateDocument(MarkdownPropertyModel model) private static Dictionary CreateDictionaryObject() { - return new Dictionary(); + return []; } private static List CreateDictionaryArrayObject(OPathSegment segment) diff --git a/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs b/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs index 869b012e0a7..04744dd0e43 100644 --- a/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs +++ b/src/Docfx.Build.OverwriteDocuments/OverwriteUtility.cs @@ -79,7 +79,7 @@ public static void AddOrUpdateFragmentEntity(this Dictionary(), + Properties = [], Metadata = metadata }; fragments.Add(uid, value); @@ -93,7 +93,7 @@ public static void AddOrUpdateFragmentProperty(this MarkdownFragment fragment, s { if (!fragment.Properties.TryGetValue(oPath, out var property)) { - fragment.Properties[oPath] = property = new MarkdownProperty { OPath = oPath}; + fragment.Properties[oPath] = property = new MarkdownProperty { OPath = oPath }; } if (string.IsNullOrEmpty(property.Content)) diff --git a/src/Docfx.Build.OverwriteDocuments/Rules/YamlCodeBlockRule.cs b/src/Docfx.Build.OverwriteDocuments/Rules/YamlCodeBlockRule.cs index 08f1c03e0c0..e8fef8289cf 100644 --- a/src/Docfx.Build.OverwriteDocuments/Rules/YamlCodeBlockRule.cs +++ b/src/Docfx.Build.OverwriteDocuments/Rules/YamlCodeBlockRule.cs @@ -10,7 +10,7 @@ public sealed class YamlCodeBlockRule : IOverwriteBlockRule { public string TokenName => "YamlCodeBlock"; - private static readonly List _allowedLanguages = new() { "yaml", "yml" }; + private static readonly List _allowedLanguages = ["yaml", "yml"]; public bool Parse(Block block, out string value) { diff --git a/src/Docfx.Build.RestApi/BuildRestApiDocument.cs b/src/Docfx.Build.RestApi/BuildRestApiDocument.cs index 479fa53a900..8e2b79feafb 100644 --- a/src/Docfx.Build.RestApi/BuildRestApiDocument.cs +++ b/src/Docfx.Build.RestApi/BuildRestApiDocument.cs @@ -15,7 +15,7 @@ namespace Docfx.Build.RestApi; [Export(nameof(RestApiDocumentProcessor), typeof(IDocumentBuildStep))] public class BuildRestApiDocument : BuildReferenceDocumentBase { - private static readonly HashSet MarkupKeys = new() { "description" }; + private static readonly HashSet MarkupKeys = ["description"]; public override string Name => nameof(BuildRestApiDocument); @@ -102,7 +102,7 @@ private static void MarkupRecursive(JToken jToken, IHostService host, FileModel { if (MarkupKeys.Contains(pair.Key) && pair.Value != null) { - if (pair.Value is JValue {Type: JTokenType.String} jValue) + if (pair.Value is JValue { Type: JTokenType.String } jValue) { jObject[pair.Key] = Markup(host, (string)jValue, model, filter); } diff --git a/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs b/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs index fe922ad87a2..72bc22a9968 100644 --- a/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs +++ b/src/Docfx.Build.RestApi/RestApiDocumentProcessor.cs @@ -248,7 +248,8 @@ private static void CheckOperationId(SwaggerModel swagger, string fileName) private static string ChangeFileExtension(string file) { - return file.Substring(0, file.Length - SupportedFileEndings.First(s => IsSupportedFileEnding(file, s)).Length) + ".json"; + var suffix = SupportedFileEndings.First(s => IsSupportedFileEnding(file, s)); + return $"{file.AsSpan(0, file.Length - suffix.Length)}.json"; } private static Dictionary MergeMetadata(IDictionary item, IDictionary overwriteItems) diff --git a/src/Docfx.Build.RestApi/Swagger/InfoObject.cs b/src/Docfx.Build.RestApi/Swagger/InfoObject.cs index f599720bf85..5248b10b8e0 100644 --- a/src/Docfx.Build.RestApi/Swagger/InfoObject.cs +++ b/src/Docfx.Build.RestApi/Swagger/InfoObject.cs @@ -32,5 +32,5 @@ public class InfoObject [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary PatternedObjects { get; set; } = new(); + public Dictionary PatternedObjects { get; set; } = []; } diff --git a/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerArray.cs b/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerArray.cs index 6219f6b225d..087513a2e3c 100644 --- a/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerArray.cs +++ b/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerArray.cs @@ -7,7 +7,7 @@ internal class SwaggerArray : SwaggerObjectBase { public override SwaggerObjectType ObjectType => SwaggerObjectType.Array; - public List Array { get; set; } = new(); + public List Array { get; set; } = []; public override SwaggerObjectBase Clone() { diff --git a/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerObject.cs b/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerObject.cs index 397971ea2ce..58fabf90f16 100644 --- a/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerObject.cs +++ b/src/Docfx.Build.RestApi/Swagger/Internals/SwaggerObject.cs @@ -7,7 +7,7 @@ internal class SwaggerObject : SwaggerObjectBase { public override SwaggerObjectType ObjectType => SwaggerObjectType.Object; - public Dictionary Dictionary { get; set; } = new(); + public Dictionary Dictionary { get; set; } = []; public override SwaggerObjectBase Clone() { diff --git a/src/Docfx.Build.RestApi/Swagger/OperationObject.cs b/src/Docfx.Build.RestApi/Swagger/OperationObject.cs index 070d2bc56ca..060977a85ab 100644 --- a/src/Docfx.Build.RestApi/Swagger/OperationObject.cs +++ b/src/Docfx.Build.RestApi/Swagger/OperationObject.cs @@ -49,5 +49,5 @@ public class OperationObject [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.RestApi/Swagger/ParameterObject.cs b/src/Docfx.Build.RestApi/Swagger/ParameterObject.cs index b09e5759b01..3e547b8d9b7 100644 --- a/src/Docfx.Build.RestApi/Swagger/ParameterObject.cs +++ b/src/Docfx.Build.RestApi/Swagger/ParameterObject.cs @@ -23,5 +23,5 @@ public class ParameterObject [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.RestApi/Swagger/PathItemObject.cs b/src/Docfx.Build.RestApi/Swagger/PathItemObject.cs index 6071499c396..d50da2c9583 100644 --- a/src/Docfx.Build.RestApi/Swagger/PathItemObject.cs +++ b/src/Docfx.Build.RestApi/Swagger/PathItemObject.cs @@ -25,5 +25,5 @@ public class PathItemObject [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.RestApi/Swagger/ResponseObject.cs b/src/Docfx.Build.RestApi/Swagger/ResponseObject.cs index fd098a1a225..a4affc6a5b9 100644 --- a/src/Docfx.Build.RestApi/Swagger/ResponseObject.cs +++ b/src/Docfx.Build.RestApi/Swagger/ResponseObject.cs @@ -31,5 +31,5 @@ public class ResponseObject [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.RestApi/Swagger/SwaggerModel.cs b/src/Docfx.Build.RestApi/Swagger/SwaggerModel.cs index fa68585d5a8..f4359c2829c 100644 --- a/src/Docfx.Build.RestApi/Swagger/SwaggerModel.cs +++ b/src/Docfx.Build.RestApi/Swagger/SwaggerModel.cs @@ -95,5 +95,5 @@ public class SwaggerModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.RestApi/Swagger/TagItemObject.cs b/src/Docfx.Build.RestApi/Swagger/TagItemObject.cs index f632850f081..ba48519bc88 100644 --- a/src/Docfx.Build.RestApi/Swagger/TagItemObject.cs +++ b/src/Docfx.Build.RestApi/Swagger/TagItemObject.cs @@ -37,5 +37,5 @@ public class TagItemObject [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.RestApi/SwaggerModelConverter.cs b/src/Docfx.Build.RestApi/SwaggerModelConverter.cs index 72d25d62495..9a83e692a9b 100644 --- a/src/Docfx.Build.RestApi/SwaggerModelConverter.cs +++ b/src/Docfx.Build.RestApi/SwaggerModelConverter.cs @@ -25,9 +25,9 @@ public static RestApiRootItemViewModel FromSwaggerModel(SwaggerModel swagger) Metadata = swagger.Metadata, Description = swagger.Description, Summary = swagger.Summary, - Children = new List(), + Children = [], Raw = swagger.Raw, - Tags = new List() + Tags = [] }; if (swagger.Tags != null) { diff --git a/src/Docfx.Build.RestApi/ValidateRestApiDocumentMetadata.cs b/src/Docfx.Build.RestApi/ValidateRestApiDocumentMetadata.cs index 8494910a04a..f082944c26d 100644 --- a/src/Docfx.Build.RestApi/ValidateRestApiDocumentMetadata.cs +++ b/src/Docfx.Build.RestApi/ValidateRestApiDocumentMetadata.cs @@ -29,10 +29,9 @@ public override void Build(FileModel model, IHostService host) case DocumentType.Overwrite: foreach (var item in (List)model.Content) { - host.ValidateInputMetadata( - model.OriginalFileAndType.File, - // use RestApiChildItemViewModel because it contains all properties for REST. - item.ConvertTo().Metadata.ToImmutableDictionary()); + // use RestApiChildItemViewModel because it contains all properties for REST + var metadata = item.ConvertTo().Metadata.ToImmutableDictionary(); + host.ValidateInputMetadata(model.OriginalFileAndType.File, metadata); } break; default: diff --git a/src/Docfx.Build.SchemaDriven/Models/DocumentSchema.cs b/src/Docfx.Build.SchemaDriven/Models/DocumentSchema.cs index 3dfa1ad58c3..6a9422ed41b 100644 --- a/src/Docfx.Build.SchemaDriven/Models/DocumentSchema.cs +++ b/src/Docfx.Build.SchemaDriven/Models/DocumentSchema.cs @@ -142,7 +142,7 @@ BaseSchema ResolveRefCore(BaseSchema schema) private static bool CheckOverwriteAbility(BaseSchema schema) { - return CheckOverwriteAbilityCore(schema, new Dictionary()); + return CheckOverwriteAbilityCore(schema, []); } private static bool CheckOverwriteAbilityCore(BaseSchema schema, Dictionary cache) diff --git a/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs b/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs index 99bb7ddba2d..fca8be66e26 100644 --- a/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs +++ b/src/Docfx.Build.SchemaDriven/Models/JsonPointer.cs @@ -24,7 +24,7 @@ public JsonPointer(string raw) throw new InvalidJsonPointerException($"Invalid json pointer \"{raw}\""); } - _parts = _isRoot ? Array.Empty() : raw.Substring(1).Split(Splitter[0]); + _parts = _isRoot ? [] : raw.Substring(1).Split(Splitter[0]); _raw = raw; } @@ -32,7 +32,7 @@ public JsonPointer(string raw) public JsonPointer(string[] parts) { _isRoot = parts == null || parts.Length == 0; - _parts = parts ?? Array.Empty(); + _parts = parts ?? []; _raw = Splitter + string.Join(Splitter, parts); } @@ -49,7 +49,7 @@ public JsonPointer GetParentPointer() public static bool TryCreate(string raw, out JsonPointer pointer) { pointer = null; - if (raw is {Length: > 0} && raw[0] != '/') + if (raw is { Length: > 0 } && raw[0] != '/') { return false; } diff --git a/src/Docfx.Build.SchemaDriven/Processors/FileInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/FileInterpreter.cs index d67f99742ed..5f34be6c817 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/FileInterpreter.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/FileInterpreter.cs @@ -19,7 +19,7 @@ public FileInterpreter(bool exportFileLink, bool updateValue) public bool CanInterpret(BaseSchema schema) { - return schema is {ContentType: ContentType.File}; + return schema is { ContentType: ContentType.File }; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) diff --git a/src/Docfx.Build.SchemaDriven/Processors/Helper.cs b/src/Docfx.Build.SchemaDriven/Processors/Helper.cs index 400c17da3b5..6c0e3e3d2b5 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/Helper.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/Helper.cs @@ -21,7 +21,7 @@ public static void AddFileLinkSource(this Dictionary sources)) { - sources = new List(); + sources = []; fileLinkSources[file] = sources; } sources.Add(source); @@ -31,7 +31,7 @@ public static void SetOriginalContentFile(this IProcessContext context, string p { if (!context.PathProperties.TryGetValue(path, out var properties)) { - properties = context.PathProperties[path] = new Dictionary(); + properties = context.PathProperties[path] = []; } properties[ContentOriginalFileKeyName] = file; diff --git a/src/Docfx.Build.SchemaDriven/Processors/HrefInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/HrefInterpreter.cs index afe370d804d..5cf6ad2c171 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/HrefInterpreter.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/HrefInterpreter.cs @@ -21,7 +21,7 @@ public HrefInterpreter(bool exportFileLink, bool updateValue, string siteHostNam public bool CanInterpret(BaseSchema schema) { - return schema is {ContentType: ContentType.Href}; + return schema is { ContentType: ContentType.Href }; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) diff --git a/src/Docfx.Build.SchemaDriven/Processors/MarkdownInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/MarkdownInterpreter.cs index 2ac605ee96e..90213afea8c 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/MarkdownInterpreter.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/MarkdownInterpreter.cs @@ -9,7 +9,7 @@ public class MarkdownInterpreter : IInterpreter { public bool CanInterpret(BaseSchema schema) { - return schema is {ContentType: ContentType.Markdown}; + return schema is { ContentType: ContentType.Markdown }; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) @@ -37,7 +37,7 @@ private static string MarkupCore(string content, IProcessContext context, string context.Dependency.UnionWith(mr.Dependency); if (mr.Html.StartsWith(""), " jsonPath=\"" + path + "\""); + mr.Html = mr.Html.Insert(mr.Html.IndexOf('>'), " jsonPath=\"" + path + "\""); return mr.Html; } } diff --git a/src/Docfx.Build.SchemaDriven/Processors/MergeTypeInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/MergeTypeInterpreter.cs index 8abff012fa9..f9a55570624 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/MergeTypeInterpreter.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/MergeTypeInterpreter.cs @@ -17,9 +17,4 @@ public object Interpret(BaseSchema schema, object value, IProcessContext context // TODO implement return value; } - - private static object MergeCore(object value, IProcessContext context) - { - return value; - } } diff --git a/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs b/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs index 4fe3d6bc2fd..3d9054ede99 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/ProcessContext.cs @@ -51,12 +51,12 @@ public ProcessContext(IHostService hs, FileModel fm, IDocumentBuildContext bc, M _model = fm; OriginalFileAndType = fm.OriginalFileAndType; FileAndType = fm.FileAndType; - Uids = new List(); - UidLinkSources = new Dictionary>(); - FileLinkSources = new Dictionary>(); - Dependency = new HashSet(); - XRefSpecs = new List(); - ExternalXRefSpecs = new List(); + Uids = []; + UidLinkSources = []; + FileLinkSources = []; + Dependency = []; + XRefSpecs = []; + ExternalXRefSpecs = []; Metadata = new Dictionary(); if (((IDictionary)fm.Properties).TryGetValue("PathProperties", out var properties)) { @@ -65,7 +65,7 @@ public ProcessContext(IHostService hs, FileModel fm, IDocumentBuildContext bc, M } else { - fm.Properties.PathProperties = PathProperties = new Dictionary>(); + fm.Properties.PathProperties = PathProperties = []; } Host = hs; diff --git a/src/Docfx.Build.SchemaDriven/Processors/XrefInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/XrefInterpreter.cs index e4c0f1618f3..f2fe10dc811 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/XrefInterpreter.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/XrefInterpreter.cs @@ -19,7 +19,7 @@ public XrefInterpreter(bool aggregateXrefs, bool resolveXref) public bool CanInterpret(BaseSchema schema) { - return schema is {ContentType: ContentType.Xref}; + return schema is { ContentType: ContentType.Xref }; } public object Interpret(BaseSchema schema, object value, IProcessContext context, string path) @@ -61,7 +61,7 @@ private static void AddUidLinkSource(Dictionary> ui var file = source.Target; if (!uidLinkSources.TryGetValue(file, out List sources)) { - sources = new List(); + sources = []; uidLinkSources[file] = sources; } sources.Add(source); diff --git a/src/Docfx.Build.SchemaDriven/Processors/XrefPropertiesInterpreter.cs b/src/Docfx.Build.SchemaDriven/Processors/XrefPropertiesInterpreter.cs index a6df05fedd5..a101c6bb28f 100644 --- a/src/Docfx.Build.SchemaDriven/Processors/XrefPropertiesInterpreter.cs +++ b/src/Docfx.Build.SchemaDriven/Processors/XrefPropertiesInterpreter.cs @@ -62,7 +62,7 @@ public object Interpret(BaseSchema schema, object value, IProcessContext context Uid = uid }; - var parts = schema.XrefProperties ?? new List { "name", "fullName" }; + var parts = schema.XrefProperties ?? ["name", "fullName"]; var root = context.GetModel(); foreach (var part in parts.Distinct()) { diff --git a/src/Docfx.Build.SchemaDriven/SchemaDrivenDocumentProcessor.cs b/src/Docfx.Build.SchemaDriven/SchemaDrivenDocumentProcessor.cs index b6fb209ee32..545e0d3e837 100644 --- a/src/Docfx.Build.SchemaDriven/SchemaDrivenDocumentProcessor.cs +++ b/src/Docfx.Build.SchemaDriven/SchemaDrivenDocumentProcessor.cs @@ -185,8 +185,7 @@ public override SaveResult Save(FileModel model) if (((IDictionary)model.Properties).TryGetValue("XrefSpec", out var value)) { - var xrefSpec = value as XRefSpec; - if (xrefSpec != null) + if (value is XRefSpec xrefSpec) { result.XRefSpecs = [xrefSpec]; } diff --git a/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs b/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs index 4d4aa003a70..0a8ff8d107b 100644 --- a/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs +++ b/src/Docfx.Build.SchemaDriven/ValidateFragmentsHandler.cs @@ -10,7 +10,7 @@ namespace Docfx.Build.SchemaDriven; public class ValidateFragmentsHandler : ISchemaFragmentsHandler { - private readonly Dictionary _isMissingUidsLogged = new(); + private readonly Dictionary _isMissingUidsLogged = []; public void HandleUid(string uidKey, YamlMappingNode node, Dictionary fragments, BaseSchema schema, string oPathPrefix, string uid) { diff --git a/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs b/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs index dacd4b03c3a..021a9aabac4 100644 --- a/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs +++ b/src/Docfx.Build.TagLevelRestApi/SplitRestApiToTagLevel.cs @@ -82,7 +82,7 @@ private static Tuple, TreeItemRestructure> SplitModelToOperation // Only keep not tagged children in root model var groupedUids = splittedModels.SelectMany(m => m.Uids).Select(u => u.Name).ToList(); - content.Tags = new List(); + content.Tags = []; content.Children = content.Children.Where(child => !groupedUids.Contains(child.Uid)).ToList(); content.Metadata["_isSplittedByTag"] = true; model.Content = content; @@ -118,7 +118,7 @@ private static IEnumerable GenerateTagModels(RestApiRo Description = tag.Description, Documentation = tag.Documentation, Children = tagChildren, - Tags = new List(), + Tags = [], Metadata = MergeTagMetadata(root, tag) }; } @@ -131,7 +131,7 @@ private static IEnumerable GetChildrenByTag(RestApiRo var children = root.Children.Where(child => child.Tags != null && tagName == child.Tags.FirstOrDefault()); foreach (var child in children) { - child.Tags = new List(); + child.Tags = []; yield return child; } } diff --git a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiBuildOutput.cs b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiBuildOutput.cs index f5284e1a38d..58a24f7b476 100644 --- a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiBuildOutput.cs +++ b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiBuildOutput.cs @@ -175,5 +175,5 @@ public class ApiBuildOutput [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiExceptionInfoBuildOutput.cs b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiExceptionInfoBuildOutput.cs index d9963944c0f..f20e4133064 100644 --- a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiExceptionInfoBuildOutput.cs +++ b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiExceptionInfoBuildOutput.cs @@ -24,5 +24,5 @@ public class ApiExceptionInfoBuildOutput [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiInheritanceTreeBuildOutput.cs b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiInheritanceTreeBuildOutput.cs index 17666ce6e3f..eb063276c24 100644 --- a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiInheritanceTreeBuildOutput.cs +++ b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiInheritanceTreeBuildOutput.cs @@ -30,5 +30,5 @@ public class ApiInheritanceTreeBuildOutput [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiNames.cs b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiNames.cs index 687702098cc..eaf537642ba 100644 --- a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiNames.cs +++ b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiNames.cs @@ -45,5 +45,5 @@ public class ApiNames [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiParameterBuildOutput.cs b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiParameterBuildOutput.cs index f9e9419457b..56f95c95805 100644 --- a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiParameterBuildOutput.cs +++ b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiParameterBuildOutput.cs @@ -39,5 +39,5 @@ public class ApiParameterBuildOutput [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiSyntaxBuildOutput.cs b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiSyntaxBuildOutput.cs index 70490d78d8c..901b101b529 100644 --- a/src/Docfx.Build.UniversalReference/BuildOutputs/ApiSyntaxBuildOutput.cs +++ b/src/Docfx.Build.UniversalReference/BuildOutputs/ApiSyntaxBuildOutput.cs @@ -35,5 +35,5 @@ public class ApiSyntaxBuildOutput [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Build.UniversalReference/ModelConverter.cs b/src/Docfx.Build.UniversalReference/ModelConverter.cs index e0bbd94a4e8..9d09fc18c52 100644 --- a/src/Docfx.Build.UniversalReference/ModelConverter.cs +++ b/src/Docfx.Build.UniversalReference/ModelConverter.cs @@ -31,7 +31,7 @@ public static ApiBuildOutput ToApiBuildOutput(PageViewModel model) Dictionary references = null; if (model.References != null) { - references = new Dictionary(); + references = []; foreach (var reference in model.References .Where(r => !string.IsNullOrEmpty(r.Uid)) .Select(ToReferenceApiNames)) @@ -44,7 +44,7 @@ public static ApiBuildOutput ToApiBuildOutput(PageViewModel model) var childUids = model.Items[0].Children ?? Enumerable.Empty() .Concat(model.Items[0].ChildrenInDevLangs != null ? model.Items[0].ChildrenInDevLangs.SelectMany(kv => kv.Value) - : Enumerable.Empty()) + : []) .Distinct(); var children = new Dictionary(); if (model.References != null) @@ -388,7 +388,7 @@ public static List> ToApiListInDevLangs(T defaultValu } var result = new List>(); - values ??= new SortedList(); + values ??= []; foreach (var language in supportedLanguages) { result.Add(new ApiLanguageValuePair diff --git a/src/Docfx.Build/ApiPage/ApiPageProcessor.cs b/src/Docfx.Build/ApiPage/ApiPageProcessor.cs index 115bdd30127..e84aee5cf76 100644 --- a/src/Docfx.Build/ApiPage/ApiPageProcessor.cs +++ b/src/Docfx.Build/ApiPage/ApiPageProcessor.cs @@ -11,6 +11,8 @@ namespace Docfx.Build.ApiPage; class ApiPageDocumentProcessor(IMarkdownService markdownService) : IDocumentProcessor { + private static IDeserializer deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); + IEnumerable IDocumentProcessor.BuildSteps => Array.Empty(); void IDocumentProcessor.UpdateHref(FileModel model, IDocumentBuildContext context) { } @@ -35,7 +37,6 @@ public ProcessingPriority GetProcessingPriority(FileAndType file) public FileModel Load(FileAndType file, ImmutableDictionary metadata) { - var deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); var yml = EnvironmentContext.FileAbstractLayer.ReadAllText(file.File); var json = JsonSerializer.Serialize(deserializer.Deserialize(yml)); var data = JsonSerializer.Deserialize(json, ApiPage.JsonSerializerOptions); diff --git a/src/Docfx.Build/CompilePhaseHandler.cs b/src/Docfx.Build/CompilePhaseHandler.cs index 71da01dbaf2..e766f87abb9 100644 --- a/src/Docfx.Build/CompilePhaseHandler.cs +++ b/src/Docfx.Build/CompilePhaseHandler.cs @@ -10,7 +10,7 @@ namespace Docfx.Build.Engine; internal class CompilePhaseHandler { - private readonly List _restructions = new(); + private readonly List _restructions = []; public DocumentBuildContext Context { get; } diff --git a/src/Docfx.Build/Conceptual/ConceptualDocumentProcessor.cs b/src/Docfx.Build/Conceptual/ConceptualDocumentProcessor.cs index acc43035a68..14cd89c49e8 100644 --- a/src/Docfx.Build/Conceptual/ConceptualDocumentProcessor.cs +++ b/src/Docfx.Build/Conceptual/ConceptualDocumentProcessor.cs @@ -107,8 +107,7 @@ public override SaveResult Save(FileModel model) if (((IDictionary)model.Properties).TryGetValue("XrefSpec", out var value)) { - var xrefSpec = value as XRefSpec; - if (xrefSpec != null) + if (value is XRefSpec xrefSpec) { result.XRefSpecs = [xrefSpec]; } diff --git a/src/Docfx.Build/DocumentBuildContext.cs b/src/Docfx.Build/DocumentBuildContext.cs index 9f8e0ac58f0..f38bedb442d 100644 --- a/src/Docfx.Build/DocumentBuildContext.cs +++ b/src/Docfx.Build/DocumentBuildContext.cs @@ -126,7 +126,7 @@ from u in xrefMaps public ConcurrentDictionary> TocMap { get; } = new(FilePathComparer.OSPlatformSensitiveStringComparer); - public HashSet XRef { get; } = new(); + public HashSet XRef { get; } = []; public string RootTocPath { get; } @@ -136,7 +136,7 @@ from u in xrefMaps public CancellationToken CancellationToken { get; } = CancellationToken.None; - internal ConcurrentBag ManifestItems { get; } = new(); + internal ConcurrentBag ManifestItems { get; } = []; private ConcurrentDictionary ExternalXRefSpec { get; } = new(); diff --git a/src/Docfx.Build/DocumentBuilder.cs b/src/Docfx.Build/DocumentBuilder.cs index 6b9c3f72813..055ac658b06 100644 --- a/src/Docfx.Build/DocumentBuilder.cs +++ b/src/Docfx.Build/DocumentBuilder.cs @@ -9,11 +9,10 @@ using Docfx.Common; using Docfx.MarkdigEngine; using Docfx.Plugins; -using Newtonsoft.Json; namespace Docfx.Build.Engine; -public class DocumentBuilder : IDisposable +public sealed class DocumentBuilder : IDisposable { [ImportMany] internal IEnumerable Processors { get; set; } @@ -27,7 +26,7 @@ public class DocumentBuilder : IDisposable public DocumentBuilder(IEnumerable assemblies, ImmutableArray postProcessorNames) { Logger.LogVerbose("Loading plug-ins and post-processors..."); - var assemblyList = assemblies?.ToList() ?? new List(); + var assemblyList = assemblies?.ToList() ?? []; assemblyList.Add(typeof(DocumentBuilder).Assembly); _container = CompositionContainer.GetContainer(assemblyList); _container.SatisfyImports(this); @@ -147,7 +146,7 @@ public void Build(IList parameters, string outputDirect .WriteToManifest(generatedManifest, parameters[0].OutputBaseDir) .Create(); - _postProcessorsManager.Process(generatedManifest, outputDirectory); + _postProcessorsManager.Process(generatedManifest, outputDirectory, cancellationToken); generatedManifest.Dereference(parameters[0].OutputBaseDir, parameters[0].MaxParallelism); diff --git a/src/Docfx.Build/FileCollection.cs b/src/Docfx.Build/FileCollection.cs index 48b557d0ee3..d330383a373 100644 --- a/src/Docfx.Build/FileCollection.cs +++ b/src/Docfx.Build/FileCollection.cs @@ -8,7 +8,7 @@ namespace Docfx.Build.Engine; public class FileCollection { - private readonly List _files = new(); + private readonly List _files = []; public int Count => _files.Count; diff --git a/src/Docfx.Build/HostService.cs b/src/Docfx.Build/HostService.cs index f71caf153f9..409baa2dd11 100644 --- a/src/Docfx.Build/HostService.cs +++ b/src/Docfx.Build/HostService.cs @@ -12,7 +12,7 @@ namespace Docfx.Build.Engine; [Export(typeof(IHostService))] class HostService : IHostService { - private Dictionary> _uidIndex = new(); + private Dictionary> _uidIndex = []; public TemplateProcessor Template { get; set; } @@ -65,7 +65,7 @@ public ImmutableList LookupByUid(string uid) { return result.ToImmutableList(); } - return ImmutableList.Empty; + return []; } public MarkupResult Markup(string markdown, FileAndType ft) diff --git a/src/Docfx.Build/HtmlTemplate.cs b/src/Docfx.Build/HtmlTemplate.cs index d8ceb951c14..a1db3eb3622 100644 --- a/src/Docfx.Build/HtmlTemplate.cs +++ b/src/Docfx.Build/HtmlTemplate.cs @@ -8,8 +8,11 @@ namespace Docfx.Build; -struct HtmlTemplate +partial struct HtmlTemplate { + [GeneratedRegex("(\\s+[a-zA-Z0-9_-]+)=([\"']){(\\d)}[\"']")] + private static partial Regex AttributePlaceholderRegex(); + private string? _html; public override string ToString() => _html ?? ""; @@ -18,7 +21,7 @@ struct HtmlTemplate public static HtmlTemplate Html(FormattableString template) { - var format = Regex.Replace(template.Format, "(\\s+[a-zA-Z0-9_-]+)=([\"']){(\\d)}[\"']", RenderAttribute); + var format = AttributePlaceholderRegex().Replace(template.Format, RenderAttribute); var html = string.Format(format, Array.ConvertAll(template.GetArguments(), Render)); return new() { _html = html }; diff --git a/src/Docfx.Build/LinkPhaseHandler.cs b/src/Docfx.Build/LinkPhaseHandler.cs index 5957e92252d..519c5746b73 100644 --- a/src/Docfx.Build/LinkPhaseHandler.cs +++ b/src/Docfx.Build/LinkPhaseHandler.cs @@ -35,7 +35,7 @@ public void Handle(List hostServices, int maxParallelism) private void Save(List hostServices, int maxParallelism) { - _manifestWithContext = new List(); + _manifestWithContext = []; foreach (var hostService in hostServices) { _manifestWithContext.AddRange(ExportManifest(hostService)); diff --git a/src/Docfx.Build/ManifestProcessor.cs b/src/Docfx.Build/ManifestProcessor.cs index e135b74a317..37e60352b6f 100644 --- a/src/Docfx.Build/ManifestProcessor.cs +++ b/src/Docfx.Build/ManifestProcessor.cs @@ -29,7 +29,7 @@ public ManifestProcessor(List manifestWithContext, Docu // E.g. we can set TOC model to be globally shared by every data model // Make sure it is single thread _globalMetadata = _templateProcessor.Tokens?.ToDictionary(pair => pair.Key, pair => (object)pair.Value) - ?? new Dictionary(); + ?? []; } public void Process() diff --git a/src/Docfx.Build/MarkupResultUtility.cs b/src/Docfx.Build/MarkupResultUtility.cs index 53a642c18cb..754c58e4860 100644 --- a/src/Docfx.Build/MarkupResultUtility.cs +++ b/src/Docfx.Build/MarkupResultUtility.cs @@ -109,7 +109,7 @@ where string.Equals(attr.Name, "src", StringComparison.OrdinalIgnoreCase) || if (!fileLinkSources.TryGetValue(file, out List sources)) { - sources = new List(); + sources = []; fileLinkSources[file] = sources; } sources.Add(new LinkSourceInfo diff --git a/src/Docfx.Build/OneOfJsonConverterFactory.cs b/src/Docfx.Build/OneOfJsonConverterFactory.cs index 9c4e48ad146..497af6dc308 100644 --- a/src/Docfx.Build/OneOfJsonConverterFactory.cs +++ b/src/Docfx.Build/OneOfJsonConverterFactory.cs @@ -2,9 +2,13 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.Contracts; using System.Reflection; +using System.Runtime.CompilerServices; using System.Text.Json; using System.Text.Json.Serialization; +using Docfx.Build.ApiPage; using OneOf; #nullable enable @@ -38,6 +42,9 @@ private class OneOfJsonConverter : JsonConverter where T : IOneOf // It also depends on marking discriminator properties as required. foreach (var (type, cast) in s_types) { + if (!IsDeserializableType(ref reader, type, typeToConvert)) + continue; + try { Utf8JsonReader readerCopy = reader; @@ -77,5 +84,177 @@ private static (Type type, MethodInfo cast)[] GetOneOfTypes() } throw new InvalidOperationException($"{typeof(T)} isn't OneOf or OneOfBase"); } + + /// + /// Helper method to check it can deserialize to specified type. + /// + /// Current reader. + /// The type that to be deserialized by JsonSerializer. + /// The type that to be converted by JsonConverter. + private static bool IsDeserializableType(ref Utf8JsonReader reader, Type type, Type typeToConvert) + { + var tokenType = reader.TokenType; + switch (tokenType) + { + case JsonTokenType.String: + if (type == typeof(bool) && typeToConvert == typeof(OneOf)) + return false; + + Assert(type, [typeof(string), typeof(Span)]); + Assert(typeToConvert, [typeof(Span), typeof(Inline), typeof(OneOf), typeof(OneOf)]); + + return true; + + case JsonTokenType.StartArray: + Assert(type, [typeof(string), typeof(string[]), typeof(Span), typeof(Span[])]); + Assert(typeToConvert, [typeof(Inline), typeof(OneOf)]); + + return type.IsArray; + + case JsonTokenType.StartObject: + if (!TryGetFirstPropertyName(ref reader, out var propertyName)) + return false; + + var key = (typeToConvert, type, propertyName); + + if (KnownTypes.Contains(key)) + return true; + + if (KnownTypesToSkip.Contains(key)) + return false; + + // Unknown type/name combinations found. + // Fallback to default behavior. + return true; + + default: + return true; + } + } + + private static bool TryGetFirstPropertyName(ref Utf8JsonReader reader, [NotNullWhen(true)] out string? propertyName) + { + Contract.Assert(reader.TokenType == JsonTokenType.StartObject); + + var readerCopy = reader; + if (readerCopy.Read() && readerCopy.TokenType == JsonTokenType.PropertyName) + { + propertyName = readerCopy.GetString()!; + return true; + } + + propertyName = null; + return false; + } + + [Conditional("DEBUG")] + private static void Assert( + Type type, + Type[] expectedTypes, + [CallerArgumentExpression(nameof(expectedTypes))] string? message = null) + { + if (!expectedTypes.Contains(type)) + throw new InvalidOperationException($"{type.Name} is not expected. Expected: {message}"); + } + + /// + /// Known type/name combinations that can be deserialize. + /// + private static readonly HashSet<(Type, Type, string)> KnownTypes = + [ + // Block : OneOfBase + (typeof(Block), typeof(Heading), "h1"), + (typeof(Block), typeof(Heading), "h2"), + (typeof(Block), typeof(Heading), "h3"), + (typeof(Block), typeof(Heading), "h4"), + (typeof(Block), typeof(Heading), "h5"), + (typeof(Block), typeof(Heading), "h6"), + (typeof(Block), typeof(Api), "api1"), + (typeof(Block), typeof(Api), "api2"), + (typeof(Block), typeof(Api), "api3"), + (typeof(Block), typeof(Api), "api4"), + (typeof(Block), typeof(Markdown), "markdown"), + (typeof(Block), typeof(Facts), "facts"), + (typeof(Block), typeof(Parameters), "parameters"), + (typeof(Block), typeof(List), "list"), + (typeof(Block), typeof(Inheritance), "inheritance"), + (typeof(Block), typeof(Code), "code"), + + // Heading : OneOfBase + (typeof(Heading), typeof(H1), "h1"), + (typeof(Heading), typeof(H2), "h2"), + (typeof(Heading), typeof(H3), "h3"), + (typeof(Heading), typeof(H4), "h4"), + (typeof(Heading), typeof(H5), "h5"), + (typeof(Heading), typeof(H6), "h6"), + + // Api : OneOfBase + (typeof(Api), typeof(Api1), "api1"), + (typeof(Api), typeof(Api2), "api2"), + (typeof(Api), typeof(Api3), "api3"), + (typeof(Api), typeof(Api4), "api4"), + + // Span : OneOfBase + (typeof(Span), typeof(LinkSpan), "text"), + + // Inline : OneOfBase + (typeof(Inline), typeof(Span), "text"), + ]; + + /// + /// Known type/name combinations that can not be deserialize. + /// + private static readonly HashSet<(Type, Type, string)> KnownTypesToSkip = + [ + // Block : OneOfBase + (typeof(Heading), typeof(H1), "h2"), + (typeof(Heading), typeof(H1), "h3"), + (typeof(Heading), typeof(H2), "h3"), + (typeof(Heading), typeof(H1), "h4"), + (typeof(Heading), typeof(H2), "h4"), + (typeof(Heading), typeof(H3), "h4"), + (typeof(Block), typeof(Heading), "api1"), + (typeof(Block), typeof(Heading), "api2"), + (typeof(Block), typeof(Heading), "api3"), + (typeof(Block), typeof(Heading), "api4"), + (typeof(Block), typeof(Heading), "markdown"), + (typeof(Block), typeof(Api), "markdown"), + (typeof(Block), typeof(Heading), "facts"), + (typeof(Block), typeof(Api), "facts"), + (typeof(Block), typeof(Markdown), "facts"), + (typeof(Block), typeof(Heading), "parameters"), + (typeof(Block), typeof(Api), "parameters"), + (typeof(Block), typeof(Markdown), "parameters"), + (typeof(Block), typeof(Facts), "parameters"), + (typeof(Block), typeof(Heading), "list"), + (typeof(Block), typeof(Api), "list"), + (typeof(Block), typeof(Markdown), "list"), + (typeof(Block), typeof(Facts), "list"), + (typeof(Block), typeof(Parameters), "list"), + (typeof(Block), typeof(Heading), "inheritance"), + (typeof(Block), typeof(Api), "inheritance"), + (typeof(Block), typeof(Markdown), "inheritance"), + (typeof(Block), typeof(Facts), "inheritance"), + (typeof(Block), typeof(Parameters), "inheritance"), + (typeof(Block), typeof(List), "inheritance"), + (typeof(Block), typeof(Heading), "code"), + (typeof(Block), typeof(Api), "code"), + (typeof(Block), typeof(Markdown), "code"), + (typeof(Block), typeof(Facts), "code"), + (typeof(Block), typeof(Parameters), "code"), + (typeof(Block), typeof(List), "code"), + (typeof(Block), typeof(Inheritance), "code"), + + // OneOfBase + (typeof(Api), typeof(Api1), "api2"), + (typeof(Api), typeof(Api1), "api3"), + (typeof(Api), typeof(Api2), "api3"), + (typeof(Api), typeof(Api1), "api4"), + (typeof(Api), typeof(Api2), "api4"), + (typeof(Api), typeof(Api3), "api4"), + + // OneOfBase + (typeof(Span), typeof(String), "text"), + ]; } } diff --git a/src/Docfx.Build/PostProcessors/ExtractSearchIndex.cs b/src/Docfx.Build/PostProcessors/ExtractSearchIndex.cs index 34e11fb2d2a..4b966b2cf38 100644 --- a/src/Docfx.Build/PostProcessors/ExtractSearchIndex.cs +++ b/src/Docfx.Build/PostProcessors/ExtractSearchIndex.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; @@ -9,7 +9,6 @@ using Docfx.Common; using Docfx.Plugins; using HtmlAgilityPack; -using Newtonsoft.Json; namespace Docfx.Build.Engine; @@ -19,6 +18,10 @@ partial class ExtractSearchIndex : IPostProcessor [GeneratedRegex(@"\s+")] private static partial Regex s_regexWhiteSpace(); + + [GeneratedRegex(@"[a-z0-9]+|[A-Z0-9]+[a-z0-9]*|[0-9]+")] + private static partial Regex s_regexCase(); + private static readonly HashSet s_htmlInlineTags = new(StringComparer.OrdinalIgnoreCase) { "a", "area", "del", "ins", "link", "map", "meta", "abbr", "audio", "b", "bdo", "button", "canvas", "cite", "code", "command", "data", @@ -30,12 +33,20 @@ partial class ExtractSearchIndex : IPostProcessor public string Name => nameof(ExtractSearchIndex); public const string IndexFileName = "index.json"; + internal bool UseMetadata { get; set; } = false; + internal bool UseMetadataTitle { get; set; } = true; + public ImmutableDictionary PrepareMetadata(ImmutableDictionary metadata) { if (!metadata.ContainsKey("_enableSearch")) { metadata = metadata.Add("_enableSearch", true); } + + UseMetadata = metadata.TryGetValue("_searchIndexUseMetadata", out var useMetadataObject) && (bool)useMetadataObject; + UseMetadataTitle = !metadata.TryGetValue("_searchIndexUseMetadataTitle", out var useMetadataTitleObject) || (bool)useMetadataTitleObject; + + Logger.LogInfo($"{Name}: {nameof(UseMetadata)} = {UseMetadata}, {nameof(UseMetadataTitle)} = {UseMetadataTitle}"); return metadata; } @@ -50,14 +61,15 @@ public Manifest Process(Manifest manifest, string outputFolder, CancellationToke var htmlFiles = (from item in manifest.Files ?? Enumerable.Empty() from output in item.Output where item.Type != "Toc" && output.Key.Equals(".html", StringComparison.OrdinalIgnoreCase) - select output.Value.RelativePath).ToList(); + select (output.Value.RelativePath, item.Metadata)).ToList(); + if (htmlFiles.Count == 0) { return manifest; } Logger.LogInfo($"Extracting index data from {htmlFiles.Count} html files"); - foreach (var relativePath in htmlFiles) + foreach ((string relativePath, Dictionary metadata) in htmlFiles) { cancellationToken.ThrowIfCancellationRequested(); @@ -77,7 +89,7 @@ from output in item.Output Logger.LogWarning($"Warning: Can't load content from {filePath}: {ex.Message}"); continue; } - var indexItem = ExtractItem(html, relativePath); + var indexItem = ExtractItem(html, relativePath, metadata); if (indexItem != null) { indexData[relativePath] = indexItem; @@ -100,7 +112,7 @@ from output in item.Output return manifest; } - internal SearchIndexItem ExtractItem(HtmlDocument html, string href) + internal SearchIndexItem ExtractItem(HtmlDocument html, string href, Dictionary metadata = null) { var contentBuilder = new StringBuilder(); @@ -118,10 +130,37 @@ internal SearchIndexItem ExtractItem(HtmlDocument html, string href) ExtractTextFromNode(node, contentBuilder); } - var content = NormalizeContent(contentBuilder.ToString()); - var title = ExtractTitleFromHtml(html); + string title; + string summary = null; + string keywords = null; + + var isMRef = metadata != null && metadata.TryGetValue("IsMRef", out var isMRefMetadata) && (bool)isMRefMetadata; + if (UseMetadata && isMRef) + { + title = UseMetadataTitle + ? (string)metadata["Title"] ?? ExtractTitleFromHtml(html) + : ExtractTitleFromHtml(html); - return new SearchIndexItem { Href = href, Title = title, Keywords = content }; + var htmlSummary = (string)metadata["Summary"]; + if (!string.IsNullOrEmpty(htmlSummary)) + { + var htmlDocument = new HtmlDocument(); + htmlDocument.LoadHtml(htmlSummary); + var htmlRootNode = htmlDocument.DocumentNode.FirstChild; + var summaryBuilder = new StringBuilder(); + ExtractTextFromNode(htmlRootNode, summaryBuilder); + summary = NormalizeContent(summaryBuilder.ToString()); + } + + keywords = string.Join(' ', title.Split(' ').Select(word => string.Join(' ', GetStemAggregations(word.Split('.')[^1])))); + } + else + { + title = ExtractTitleFromHtml(html); + summary = NormalizeContent(contentBuilder.ToString()); + } + + return new SearchIndexItem { Href = href, Title = title, Summary = summary, Keywords = keywords }; } private static string ExtractTitleFromHtml(HtmlDocument html) @@ -141,6 +180,41 @@ private static string NormalizeContent(string str) return s_regexWhiteSpace().Replace(str, " ").Trim(); } + private static string[] GetStems(string str) + { + if (string.IsNullOrEmpty(str)) + { + return [string.Empty]; + } + str = WebUtility.HtmlDecode(str); + return s_regexCase().Matches(str).Select(m => m.Value).ToArray(); + } + + private static List GetStemAggregations(string str) + { + var stems = GetStems(str); + + var results = new List(); + Aggregate(stems, [], results, 0); + return results; + + static void Aggregate(string[] input, List current, List results, int index) + { + if (index == input.Length) + { + return; + } + + for (int i = index; i < input.Length; i++) + { + current.Add(input[i]); + results.Add(string.Join(string.Empty, current)); + Aggregate(input, current, results, i + 1); + current.RemoveAt(current.Count - 1); + } + } + } + private static void ExtractTextFromNode(HtmlNode node, StringBuilder contentBuilder) { if (node == null) diff --git a/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs b/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs index a052eaed954..ad06f41dc91 100644 --- a/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs +++ b/src/Docfx.Build/PostProcessors/HtmlPostProcessor.cs @@ -15,7 +15,7 @@ sealed class HtmlPostProcessor : IPostProcessor { private static readonly UTF8Encoding Utf8EncodingWithoutBom = new(false); - public List Handlers { get; } = new(); + public List Handlers { get; } = []; private bool _handlerInitialized; diff --git a/src/Docfx.Build/PostProcessors/SearchIndexItem.cs b/src/Docfx.Build/PostProcessors/SearchIndexItem.cs index f3f8ff7574d..327abf4d3b7 100644 --- a/src/Docfx.Build/PostProcessors/SearchIndexItem.cs +++ b/src/Docfx.Build/PostProcessors/SearchIndexItem.cs @@ -20,6 +20,10 @@ class SearchIndexItem [JsonPropertyName("keywords")] public string Keywords { get; set; } + [JsonProperty("summary")] + [JsonPropertyName("summary")] + public string Summary { get; set; } + public override bool Equals(object obj) { return Equals(obj as SearchIndexItem); @@ -35,11 +39,17 @@ public bool Equals(SearchIndexItem other) { return true; } - return string.Equals(Title, other.Title) && string.Equals(Href, other.Href) && string.Equals(Keywords, other.Keywords); + return string.Equals(Title, other.Title) && + string.Equals(Href, other.Href) && + string.Equals(Summary, other.Summary) && + string.Equals(Keywords, other.Keywords); } public override int GetHashCode() { - return Title.GetHashCode() ^ Href.GetHashCode() ^ Keywords.GetHashCode(); + return Title.GetHashCode() ^ + Href.GetHashCode() ^ + Summary.GetHashCode() ^ + Keywords.GetHashCode(); } } diff --git a/src/Docfx.Build/PostProcessors/ValidateBookmark.cs b/src/Docfx.Build/PostProcessors/ValidateBookmark.cs index 04199ecbe4a..d3e4d46aabb 100644 --- a/src/Docfx.Build/PostProcessors/ValidateBookmark.cs +++ b/src/Docfx.Build/PostProcessors/ValidateBookmark.cs @@ -12,7 +12,7 @@ namespace Docfx.Build.Engine; sealed class ValidateBookmark : HtmlDocumentHandler { private static readonly string XPathTemplate = "//*/@{0}"; - private static readonly HashSet WhiteList = new() { "top" }; + private static readonly HashSet WhiteList = ["top"]; /// /// bookmarks mapping from output file -> bookmarks /// diff --git a/src/Docfx.Build/ResourceFileReaders/LocalFileResourceReader.cs b/src/Docfx.Build/ResourceFileReaders/LocalFileResourceReader.cs index 9b38e384863..21a7f8b44c4 100644 --- a/src/Docfx.Build/ResourceFileReaders/LocalFileResourceReader.cs +++ b/src/Docfx.Build/ResourceFileReaders/LocalFileResourceReader.cs @@ -48,7 +48,7 @@ private IEnumerable GetFiles(string directory, string searchPattern, int { if (searchLevel < 1) { - return Enumerable.Empty(); + return []; } var files = Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly); var dirs = Directory.GetDirectories(directory); diff --git a/src/Docfx.Build/ResourceFileReaders/ResourceFileReader.cs b/src/Docfx.Build/ResourceFileReaders/ResourceFileReader.cs index 3bbbf0f7209..d2d72bfdb95 100644 --- a/src/Docfx.Build/ResourceFileReaders/ResourceFileReader.cs +++ b/src/Docfx.Build/ResourceFileReaders/ResourceFileReader.cs @@ -36,8 +36,7 @@ bool filter(string s) { if (selector != null) { - var regex = new Regex(selector, RegexOptions.IgnoreCase); - return regex.IsMatch(s); + return Regex.IsMatch(s, selector, RegexOptions.IgnoreCase); } else { diff --git a/src/Docfx.Build/SingleDocumentBuilder.cs b/src/Docfx.Build/SingleDocumentBuilder.cs index f1cf5ee4aa5..09c7149b840 100644 --- a/src/Docfx.Build/SingleDocumentBuilder.cs +++ b/src/Docfx.Build/SingleDocumentBuilder.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; -using System.Threading; using Docfx.Common; using Docfx.Plugins; @@ -31,8 +30,8 @@ public static ImmutableList Build( processor, parameters.Files.EnumerateFiles()); - new CompilePhaseHandler(null).Handle(new List { hostService }, parameters.MaxParallelism); - new LinkPhaseHandler(null, null).Handle(new List { hostService }, parameters.MaxParallelism); + new CompilePhaseHandler(null).Handle([hostService], parameters.MaxParallelism); + new LinkPhaseHandler(null, null).Handle([hostService], parameters.MaxParallelism); return hostService.Models; } @@ -75,13 +74,13 @@ public Manifest Build(DocumentBuildParameters parameters, IMarkdownService markd Xrefmap = ExportXRefMap(parameters, context), SourceBasePath = StringExtension.ToNormalizedPath(EnvironmentContext.BaseDirectory), }; - manifest.Groups = new List - { + manifest.Groups = + [ new(parameters.GroupInfo) { XRefmap = (string)manifest.Xrefmap } - }; + ]; return manifest; } @@ -103,7 +102,7 @@ from p in (from processor in processors where priority != ProcessingPriority.NotSupported group processor by priority into ps orderby ps.Key descending - select ps.ToList()).FirstOrDefault() ?? new List { null } + select ps.ToList()).FirstOrDefault() ?? [null] group file by p).ToList(); var toHandleItems = files.Where(s => s.Key != null); diff --git a/src/Docfx.Build/TableOfContents/BuildTocDocument.cs b/src/Docfx.Build/TableOfContents/BuildTocDocument.cs index d2c7b63318f..b395e758cd0 100644 --- a/src/Docfx.Build/TableOfContents/BuildTocDocument.cs +++ b/src/Docfx.Build/TableOfContents/BuildTocDocument.cs @@ -84,7 +84,7 @@ void UpdateDependencies(HashSet linkTos, Dictionary> dict, string path, LinkSourceInfo source) - => dict[path] = dict.TryGetValue(path, out var sources) ? sources.Add(source) : ImmutableList.Create(source); + => dict[path] = dict.TryGetValue(path, out var sources) ? sources.Add(source) : [source]; private static LinkSourceInfo GetLinkSourceInfo(string path, string anchor, string source, string includedFrom) { diff --git a/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs b/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs index cbd396e8fbc..db4a3728e6c 100644 --- a/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs +++ b/src/Docfx.Build/TableOfContents/MarkdownTocReader.cs @@ -68,7 +68,7 @@ internal sealed class InitialState : ParseState public InitialState(string filePath) { Parents = new Stack(); - Root = new(); + Root = []; FilePath = filePath; } public override int Level => 0; @@ -144,7 +144,7 @@ protected ParseState ApplyCore(ParseState state, int level, string text, string if (state.Parents.Count > 0) { var parent = state.Parents.Peek(); - parent.Items ??= new(); + parent.Items ??= []; parent.Items.Add(item); } else diff --git a/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs b/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs index 79172edce58..d9424acc1be 100644 --- a/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs +++ b/src/Docfx.Build/TableOfContents/TocDocumentProcessor.cs @@ -72,7 +72,7 @@ public override void UpdateHref(FileModel model, IDocumentBuildContext context) model.Content = toc; } - private void UpdateTocItemHref(TocItemViewModel toc, FileModel model, IDocumentBuildContext context, string includedFrom = null) + private static void UpdateTocItemHref(TocItemViewModel toc, FileModel model, IDocumentBuildContext context, string includedFrom = null) { if (toc.IsHrefUpdated) return; @@ -91,7 +91,7 @@ private void UpdateTocItemHref(TocItemViewModel toc, FileModel model, IDocumentB toc.OriginalTopicHref = null; includedFrom = toc.IncludedFrom ?? includedFrom; - if (toc.Items is {Count: > 0}) + if (toc.Items is { Count: > 0 }) { foreach (var item in toc.Items) { @@ -170,7 +170,7 @@ private static string ResolveHref(string pathToFile, string originalPathToFile, return fli.Href + segments; } - private void RegisterTocToContext(TocItemViewModel toc, FileModel model, IDocumentBuildContext context) + private static void RegisterTocToContext(TocItemViewModel toc, FileModel model, IDocumentBuildContext context) { var key = model.Key; @@ -180,7 +180,7 @@ private void RegisterTocToContext(TocItemViewModel toc, FileModel model, IDocume context.RegisterTocInfo(new() { TocFileKey = key, Order = toc.Order ?? 0 }); } - private void RegisterTocMapToContext(TocItemViewModel item, FileModel model, IDocumentBuildContext context) + private static void RegisterTocMapToContext(TocItemViewModel item, FileModel model, IDocumentBuildContext context) { var key = model.Key; // If tocHref is set, href is originally RelativeFolder type, and href is set to the homepage of TocHref, diff --git a/src/Docfx.Build/TableOfContents/TocResolver.cs b/src/Docfx.Build/TableOfContents/TocResolver.cs index 6ea34f31a3b..9c2f43e4944 100644 --- a/src/Docfx.Build/TableOfContents/TocResolver.cs +++ b/src/Docfx.Build/TableOfContents/TocResolver.cs @@ -11,7 +11,7 @@ namespace Docfx.Build.TableOfContents; class TocResolver { private readonly Dictionary _collection; - private readonly Dictionary _notInProjectTocCache = new(); + private readonly Dictionary _notInProjectTocCache = []; public TocResolver(Dictionary collection) { @@ -122,7 +122,7 @@ private TocItemInfo ResolveItemCore(TocItemInfo wrapper, Stack stac { case HrefType.AbsolutePath: case HrefType.RelativeFile: - if (item.Items is {Count: > 0}) + if (item.Items is { Count: > 0 }) { item.Items = new List(from i in item.Items select ResolveItem(new TocItemInfo(file, i), stack) into r diff --git a/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs b/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs index ead7255750e..464b9ea8f67 100644 --- a/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs +++ b/src/Docfx.Build/TableOfContents/TocRestructureUtility.cs @@ -15,7 +15,7 @@ public static void Restructure(TocItemViewModel toc, IList { return; } - RestructureCore(toc, new(), restructures); + RestructureCore(toc, [], restructures); } private static void RestructureCore(TocItemViewModel item, List items, IList restructures) @@ -28,7 +28,7 @@ private static void RestructureCore(TocItemViewModel item, List 0}) + if (item.Items is { Count: > 0 }) { var parentItems = new List(item.Items); foreach (var i in item.Items) @@ -91,7 +91,7 @@ private static void RestructureItem(TocItemViewModel item, List GetTemplateDirectories(IEnumerable names) public void ProcessTheme(string outputDirectory, bool overwrite) { - if (_themes is {Count: > 0}) + if (_themes is { Count: > 0 }) { TryExportResourceFiles(_themes, outputDirectory, overwrite); Logger.LogInfo($"Theme(s) {_themes.ToDelimitedString()} applied."); @@ -89,7 +89,7 @@ private bool TryExportResourceFiles(List resourceNames, string outputDir { ArgumentException.ThrowIfNullOrEmpty(outputDirectory); - if (!resourceNames.Any()) + if (resourceNames.Count == 0) return false; bool isEmpty = true; diff --git a/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs b/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs index 57483f41930..59050dce421 100644 --- a/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs +++ b/src/Docfx.Build/TemplateProcessors/TemplateModelTransformer.cs @@ -5,7 +5,6 @@ using Docfx.Common; using Docfx.Plugins; using HtmlAgilityPack; -using Newtonsoft.Json; namespace Docfx.Build.Engine; @@ -265,7 +264,7 @@ private static string ExportModel(object model, string modelFileRelativePath, Ex private void TransformDocument(string result, string extension, IDocumentBuildContext context, string destFilePath, ManifestItem manifestItem, out List unresolvedXRefs) { - unresolvedXRefs = new List(); + unresolvedXRefs = []; using (var stream = EnvironmentContext.FileAbstractLayer.Create(destFilePath)) { using var sw = new StreamWriter(stream); @@ -293,7 +292,7 @@ private void TransformHtml(IDocumentBuildContext context, string html, string so HtmlDocument document = new(); document.LoadHtml(html); - unresolvedXRefs = new List(); + unresolvedXRefs = []; TransformXrefInHtml(context, sourceFilePath, destFilePath, document.DocumentNode, unresolvedXRefs); TransformLinkInHtml(context, sourceFilePath, destFilePath, document.DocumentNode); diff --git a/src/Docfx.Build/TemplateProcessors/ViewRenderers/MustacheTemplateRenderer.cs b/src/Docfx.Build/TemplateProcessors/ViewRenderers/MustacheTemplateRenderer.cs index 758fe10a602..6c4f2c6418d 100644 --- a/src/Docfx.Build/TemplateProcessors/ViewRenderers/MustacheTemplateRenderer.cs +++ b/src/Docfx.Build/TemplateProcessors/ViewRenderers/MustacheTemplateRenderer.cs @@ -11,13 +11,18 @@ internal partial class MustacheTemplateRenderer : ITemplateRenderer { public const string Extension = ".tmpl"; - [GeneratedRegex(@"{{\s*!\s*include\s*\(:?(:?['""]?)\s*(?(.+?))\1\s*\)\s*}}", RegexOptions.IgnoreCase | RegexOptions.Compiled, "en-AU")] - private static partial Regex IncludeRegex(); - [GeneratedRegex(@"{{\s*!\s*master\s*\(:?(:?['""]?)\s*(?(.+?))\1\s*\)\s*}}\s*\n?", RegexOptions.IgnoreCase | RegexOptions.Compiled, "en-AU")] - private static partial Regex MasterPageRegex(); - - [GeneratedRegex(@"{{\s*!\s*body\s*}}\s*\n?", RegexOptions.IgnoreCase | RegexOptions.Compiled, "en-AU")] + // Following regex are not supported by GeneratedRegexAttribute. (Because it contains case-insensitive backreferences) + // When using GeneratedRegexAttribute. following message are shown as information leve. + // SYSLIB1044: The regex generator couldn't generate a complete source implementation for the specified regular expression due to an internal limitation. See the explanation in the generated source for more details. + // And Regex instance is created with following remarks comments. + // A custom Regex-derived type could not be generated because the expression contains case-insensitive backreferences which are not supported by the source generator. +#pragma warning disable SYSLIB1045 + private static readonly Regex IncludeRegex = new(@"{{\s*!\s*include\s*\(:?(:?['""]?)\s*(?(.+?))\1\s*\)\s*}}", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static readonly Regex MasterPageRegex = new(@"{{\s*!\s*master\s*\(:?(:?['""]?)\s*(?(.+?))\1\s*\)\s*}}\s*\n?", RegexOptions.Compiled | RegexOptions.IgnoreCase); +#pragma warning restore SYSLIB1045 + + [GeneratedRegex(@"{{\s*!\s*body\s*}}\s*\n?", RegexOptions.IgnoreCase)] private static partial Regex MasterPageBodyRegex(); private readonly ResourceFileReader _reader; @@ -42,7 +47,7 @@ public MustacheTemplateRenderer(ResourceFileReader reader, ResourceInfo info, st }) .Build(); - var processedTemplate = ParseTemplateHelper.ExpandMasterPage(reader, info, MasterPageRegex(), MasterPageBodyRegex()); + var processedTemplate = ParseTemplateHelper.ExpandMasterPage(reader, info, MasterPageRegex, MasterPageBodyRegex()); _template = processedTemplate; @@ -68,7 +73,7 @@ public string Render(object model) /// private IEnumerable ExtractDependencyResourceNames(string template) { - foreach (Match match in IncludeRegex().Matches(template)) + foreach (Match match in IncludeRegex.Matches(template)) { var filePath = match.Groups["file"].Value; foreach (var name in ParseTemplateHelper.GetResourceName(filePath, Path, _reader)) diff --git a/src/Docfx.Build/TemplateProcessors/ViewRenderers/ParseTemplateHelper.cs b/src/Docfx.Build/TemplateProcessors/ViewRenderers/ParseTemplateHelper.cs index 48330028fdd..32c1f7c8c98 100644 --- a/src/Docfx.Build/TemplateProcessors/ViewRenderers/ParseTemplateHelper.cs +++ b/src/Docfx.Build/TemplateProcessors/ViewRenderers/ParseTemplateHelper.cs @@ -78,10 +78,9 @@ public static IEnumerable GetResourceName(string file, string templateNa { file = regexPatternMatch.Groups[1].Value; var resourceKey = GetRelativeResourceKey(templateName, file); - var regex = new Regex(resourceKey, RegexOptions.IgnoreCase); foreach (var name in reader.Names) { - if (regex.IsMatch(name)) + if (Regex.IsMatch(name, resourceKey, RegexOptions.IgnoreCase)) { yield return name; } diff --git a/src/Docfx.Build/XRefMaps/XRefArchive.cs b/src/Docfx.Build/XRefMaps/XRefArchive.cs index 893dbae35aa..5ced03b9db9 100644 --- a/src/Docfx.Build/XRefMaps/XRefArchive.cs +++ b/src/Docfx.Build/XRefMaps/XRefArchive.cs @@ -13,7 +13,6 @@ public sealed class XRefArchive : IXRefContainer, IDisposable #region Consts / Fields public const string MajorFileName = "xrefmap.yml"; - private readonly object _syncRoot = new(); private readonly XRefArchiveMode _mode; private readonly ZipArchive _archive; private readonly List _entries; @@ -71,7 +70,7 @@ public static XRefArchive Open(string file, XRefArchiveMode mode) } fs = File.Create(file); archive = new ZipArchive(fs, ZipArchiveMode.Update); - entries = new List(); + entries = []; break; default: throw new ArgumentOutOfRangeException(nameof(mode)); @@ -299,7 +298,7 @@ public void Dispose() bool IXRefContainer.IsEmbeddedRedirections => true; - IEnumerable IXRefContainer.GetRedirections() => Enumerable.Empty(); + IEnumerable IXRefContainer.GetRedirections() => []; public IXRefContainerReader GetReader() { diff --git a/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.cs b/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.cs index 61d2f99d36e..354e90d6fcc 100644 --- a/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.cs +++ b/src/Docfx.Build/XRefMaps/XRefArchiveBuilder.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Threading; using Docfx.Common; namespace Docfx.Build.Engine; @@ -53,7 +52,7 @@ private async Task DownloadCoreAsync(Uri uri, XRefArchive xa, Cancellati // Sort is not needed if `map.Sorted == true`. // But there are some xrefmap files that is not propery sorted by using InvariantCulture. // (e.g. Unity xrefmap that maintained by community) - if (map.References is {Count: > 0}) + if (map.References is { Count: > 0 }) { map.References.Sort(XRefSpecUidComparer.Instance); map.Sorted = true; diff --git a/src/Docfx.Build/XRefMaps/XRefArchiveReader.cs b/src/Docfx.Build/XRefMaps/XRefArchiveReader.cs index bc9411e4779..d13a654b493 100644 --- a/src/Docfx.Build/XRefMaps/XRefArchiveReader.cs +++ b/src/Docfx.Build/XRefMaps/XRefArchiveReader.cs @@ -5,7 +5,7 @@ namespace Docfx.Build.Engine; -public class XRefArchiveReader : XRefRedirectionReader, IDisposable +public sealed class XRefArchiveReader : XRefRedirectionReader, IDisposable { #region Fields private readonly LruList> _lru; diff --git a/src/Docfx.Build/XRefMaps/XRefCollection.cs b/src/Docfx.Build/XRefMaps/XRefCollection.cs index 357a313bb99..6a5e10fc9d2 100644 --- a/src/Docfx.Build/XRefMaps/XRefCollection.cs +++ b/src/Docfx.Build/XRefMaps/XRefCollection.cs @@ -29,8 +29,8 @@ public Task GetReaderAsync(string baseFolder, IReadOnlyLis private sealed class ReaderCreator { private readonly ImmutableList _uris; - private readonly HashSet _set = new(); - private readonly Dictionary, Uri> _processing = new(); + private readonly HashSet _set = []; + private readonly Dictionary, Uri> _processing = []; private readonly XRefMapDownloader _downloader; public ReaderCreator(ImmutableList uris, int maxParallelism, string baseFolder, IReadOnlyList fallbackFolders) @@ -44,7 +44,7 @@ public async Task CreateAsync(CancellationToken cancellati AddToDownloadList(_uris, cancellationToken); var dict = new Dictionary(); - while (_processing.Any()) + while (_processing.Count != 0) { Task task = await Task.WhenAny(_processing.Keys) .WaitAsync(cancellationToken); diff --git a/src/Docfx.Build/XRefMaps/XRefMap.cs b/src/Docfx.Build/XRefMaps/XRefMap.cs index f376109837a..1699465440f 100644 --- a/src/Docfx.Build/XRefMaps/XRefMap.cs +++ b/src/Docfx.Build/XRefMaps/XRefMap.cs @@ -61,7 +61,7 @@ public class XRefMap : IXRefContainer [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Others { get; set; } = new(); + public Dictionary Others { get; set; } = []; public void Sort() { diff --git a/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs b/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs index d1bb1ef97c8..a4ebdeb330f 100644 --- a/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs +++ b/src/Docfx.Build/XRefMaps/XRefMapDownloader.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Diagnostics; using System.IO.Compression; using System.Net; using Docfx.Common; @@ -82,7 +80,7 @@ private ValueTask ReadLocalFileWithFallback(Uri uri, Cancellatio /// /// Support scheme: http, https, file. /// - private async ValueTask DownloadBySchemeAsync(Uri uri, CancellationToken token = default) + private static async ValueTask DownloadBySchemeAsync(Uri uri, CancellationToken token = default) { IXRefContainer result; if (uri.IsFile) diff --git a/src/Docfx.Common/CompositeDictionary.cs b/src/Docfx.Common/CompositeDictionary.cs index 5415854b216..01b967a6561 100644 --- a/src/Docfx.Common/CompositeDictionary.cs +++ b/src/Docfx.Common/CompositeDictionary.cs @@ -192,7 +192,7 @@ private sealed class Entry public sealed class Builder { - private readonly List _entries = new(); + private readonly List _entries = []; internal Builder() { } diff --git a/src/Docfx.Common/Docfx.Common.csproj b/src/Docfx.Common/Docfx.Common.csproj index 0a8bbc436c0..7f8fe13e399 100644 --- a/src/Docfx.Common/Docfx.Common.csproj +++ b/src/Docfx.Common/Docfx.Common.csproj @@ -1,7 +1,6 @@ - diff --git a/src/Docfx.Common/FileAbstractLayer/EmptyFileReader.cs b/src/Docfx.Common/FileAbstractLayer/EmptyFileReader.cs index 07540ab2245..fe54c58038c 100644 --- a/src/Docfx.Common/FileAbstractLayer/EmptyFileReader.cs +++ b/src/Docfx.Common/FileAbstractLayer/EmptyFileReader.cs @@ -13,7 +13,7 @@ private EmptyFileReader() public PathMapping? FindFile(RelativePath file) => null; - public IEnumerable EnumerateFiles() => Enumerable.Empty(); + public IEnumerable EnumerateFiles() => []; public string GetExpectedPhysicalPath(RelativePath file) => null; } diff --git a/src/Docfx.Common/FileAbstractLayer/ManifestFileWriter.cs b/src/Docfx.Common/FileAbstractLayer/ManifestFileWriter.cs index a7aa04559c0..a2de62dffd6 100644 --- a/src/Docfx.Common/FileAbstractLayer/ManifestFileWriter.cs +++ b/src/Docfx.Common/FileAbstractLayer/ManifestFileWriter.cs @@ -43,9 +43,9 @@ public override Stream Create(RelativePath file) } if (_noRandomFile) { - Directory.CreateDirectory( - Path.Combine(_manifestFolder, file.RemoveWorkingFolder().GetDirectoryPath())); - var result = File.Create(Path.Combine(_manifestFolder, file.RemoveWorkingFolder())); + var path = Path.Combine(_manifestFolder, file.RemoveWorkingFolder()); + Directory.CreateDirectory(Path.GetDirectoryName(path)); + var result = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); entry.LinkToPath = null; return result; } @@ -53,7 +53,7 @@ public override Stream Create(RelativePath file) { var path = Path.Combine(OutputFolder, file.RemoveWorkingFolder()); Directory.CreateDirectory(Path.GetDirectoryName(path)); - var result = File.Create(path); + var result = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); entry.LinkToPath = path; return result; } diff --git a/src/Docfx.Common/FileMapping.cs b/src/Docfx.Common/FileMapping.cs index 451e2288289..9b89ecf8a7a 100644 --- a/src/Docfx.Common/FileMapping.cs +++ b/src/Docfx.Common/FileMapping.cs @@ -28,7 +28,7 @@ namespace Docfx; [System.Text.Json.Serialization.JsonConverter(typeof(FileMappingConverter.SystemTextJsonConverter))] public class FileMapping { - private readonly List _items = new(); + private readonly List _items = []; /// /// Flags to distinguish items are expanded or not. diff --git a/src/Docfx.Common/Git/GitUtility.cs b/src/Docfx.Common/Git/GitUtility.cs index 1901dab8e2e..2a1ec1bc790 100644 --- a/src/Docfx.Common/Git/GitUtility.cs +++ b/src/Docfx.Common/Git/GitUtility.cs @@ -168,7 +168,7 @@ static string GitUrlToHttps(string url) foreach (var text in File.ReadAllLines(configPath)) { var line = text.Trim(); - if (line.StartsWith("[")) + if (line.StartsWith('[')) { var remote = RemoteRegex().Replace(line, "$1"); key = remote != line ? remote : ""; diff --git a/src/Docfx.Common/Json/FileMappingConverter.SystemTextJson.cs b/src/Docfx.Common/Json/FileMappingConverter.SystemTextJson.cs index 902f5878ca4..fb7da65e757 100644 --- a/src/Docfx.Common/Json/FileMappingConverter.SystemTextJson.cs +++ b/src/Docfx.Common/Json/FileMappingConverter.SystemTextJson.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/src/Docfx.Common/Json/FileMappingConverter.cs b/src/Docfx.Common/Json/FileMappingConverter.cs index 65a4cd2dbe8..d0e9d03e734 100644 --- a/src/Docfx.Common/Json/FileMappingConverter.cs +++ b/src/Docfx.Common/Json/FileMappingConverter.cs @@ -1,9 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - namespace Docfx; internal partial class FileMappingConverter diff --git a/src/Docfx.Common/Json/JsonUtility.cs b/src/Docfx.Common/Json/JsonUtility.cs index b0c4d7ca1ac..de00f591944 100644 --- a/src/Docfx.Common/Json/JsonUtility.cs +++ b/src/Docfx.Common/Json/JsonUtility.cs @@ -1,13 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Generic; -using System.IO; -using System.Reflection.PortableExecutable; -using System.Text.RegularExpressions; -using Docfx.Plugins; using Newtonsoft.Json; -using YamlDotNet.Serialization; namespace Docfx.Common; diff --git a/src/Docfx.Common/Json/NewtonsoftJson/ConvertToObjectHelper.cs b/src/Docfx.Common/Json/NewtonsoftJson/ConvertToObjectHelper.cs index 7e05c239676..6605967af4a 100644 --- a/src/Docfx.Common/Json/NewtonsoftJson/ConvertToObjectHelper.cs +++ b/src/Docfx.Common/Json/NewtonsoftJson/ConvertToObjectHelper.cs @@ -76,12 +76,12 @@ public static object ConvertStrongTypeToJObject(object raw) public static object ConvertExpandoObjectToObject(object raw) { - return ConvertExpandoObjectToObjectCore(raw, new Dictionary()); + return ConvertExpandoObjectToObjectCore(raw, []); } public static object ConvertToDynamic(object obj) { - return ConvertToDynamicCore(obj, new Dictionary()); + return ConvertToDynamicCore(obj, []); } private static object ConvertExpandoObjectToObjectCore(object obj, Dictionary cache) diff --git a/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs b/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs index e16fa005d79..1b3fd2d2aaa 100644 --- a/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs +++ b/src/Docfx.Common/Json/System.Text.Json/SystemTextJsonUtility.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.IO; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/src/Docfx.Common/Loggers/CompositeLogListener.cs b/src/Docfx.Common/Loggers/CompositeLogListener.cs index 680c0618568..afc21e0374e 100644 --- a/src/Docfx.Common/Loggers/CompositeLogListener.cs +++ b/src/Docfx.Common/Loggers/CompositeLogListener.cs @@ -3,10 +3,10 @@ namespace Docfx.Common; -public class CompositeLogListener : ILoggerListener +public sealed class CompositeLogListener : ILoggerListener { private readonly object _sync = new(); - private readonly List _listeners = new(); + private readonly List _listeners = []; public CompositeLogListener() { diff --git a/src/Docfx.Common/Loggers/WarningCodes.cs b/src/Docfx.Common/Loggers/WarningCodes.cs index ed8a4091cff..17c8bb664c8 100644 --- a/src/Docfx.Common/Loggers/WarningCodes.cs +++ b/src/Docfx.Common/Loggers/WarningCodes.cs @@ -25,6 +25,12 @@ public static class Build public const string InvalidTocInclude = "InvalidTocInclude"; } + public static class Metadata + { + public const string FailedToResolveAnalyzer = "FailedToResolveAnalyzer"; + public const string FailedToLoadAnalyzer = "FailedToLoadAnalyzer"; + } + public static class Markdown { public const string InvalidInclude = "InvalidInclude"; diff --git a/src/Docfx.Common/Path/RelativePath.cs b/src/Docfx.Common/Path/RelativePath.cs index be23480f3a3..7e4be9a976c 100644 --- a/src/Docfx.Common/Path/RelativePath.cs +++ b/src/Docfx.Common/Path/RelativePath.cs @@ -54,7 +54,7 @@ public static RelativePath FromUrl(string path) public static bool IsRelativePath(string path) { // TODO : to merge with the PathUtility one - return path is {Length: > 0} && + return path is { Length: > 0 } && path[0] != '/' && path[0] != '\\' && path.IndexOfAny(PathUtility.InvalidPathChars) == -1; @@ -447,10 +447,8 @@ private static RelativePath Create(bool isFromWorkingFolder, int parentDirectory private IEnumerable GetSubdirectories(int skip) { - if (_parts.Length <= skip) - { - throw new ArgumentOutOfRangeException(nameof(skip)); - } + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual(skip, _parts.Length); + return _parts.Take(_parts.Length - skip - 1); } diff --git a/src/Docfx.Common/ResourcePools/ResourcePoolManager.cs b/src/Docfx.Common/ResourcePools/ResourcePoolManager.cs index 7c4a7ef68cf..d435b6a8cda 100644 --- a/src/Docfx.Common/ResourcePools/ResourcePoolManager.cs +++ b/src/Docfx.Common/ResourcePools/ResourcePoolManager.cs @@ -8,7 +8,7 @@ public class ResourcePoolManager where TResource : class { private readonly object _syncRoot = new(); - private readonly List _resources = new(); + private readonly List _resources = []; private readonly Stack _stack = new(); private readonly Func _creator; private readonly int _maxResourceCount; diff --git a/src/Docfx.Common/YamlDeserializerWithFallback.cs b/src/Docfx.Common/YamlDeserializerWithFallback.cs index ac34aaeab9b..7573e0e6454 100644 --- a/src/Docfx.Common/YamlDeserializerWithFallback.cs +++ b/src/Docfx.Common/YamlDeserializerWithFallback.cs @@ -19,9 +19,8 @@ private YamlDeserializerWithFallback( } public static YamlDeserializerWithFallback Create() => - new( - (Func tr) => YamlUtility.Deserialize(tr()), - (string path) => YamlUtility.Deserialize(path)); + new(tr => YamlUtility.Deserialize(tr()), + path => YamlUtility.Deserialize(path)); public YamlDeserializerWithFallback WithFallback() => new( diff --git a/src/Docfx.Common/YamlUtility.cs b/src/Docfx.Common/YamlUtility.cs index d93726e1768..54599fcf582 100644 --- a/src/Docfx.Common/YamlUtility.cs +++ b/src/Docfx.Common/YamlUtility.cs @@ -12,8 +12,8 @@ namespace Docfx.Common; public static class YamlUtility { - private static readonly ThreadLocal serializer = new(() => new YamlSerializer(SerializationOptions.DisableAliases)); - private static readonly ThreadLocal deserializer = new(() => new YamlDeserializer(ignoreUnmatched: true)); + private static readonly YamlSerializer serializer = new(SerializationOptions.DisableAliases); + private static readonly YamlDeserializer deserializer = new(ignoreUnmatched: true); public static void Serialize(TextWriter writer, object graph) { @@ -30,7 +30,7 @@ public static void Serialize(TextWriter writer, object graph, string comments) writer.WriteLine(comment.TrimEnd('\r')); } } - serializer.Value.Serialize(writer, graph); + serializer.Serialize(writer, graph); } public static void Serialize(string path, object graph, string comments) @@ -41,7 +41,7 @@ public static void Serialize(string path, object graph, string comments) public static T Deserialize(TextReader reader) { - return deserializer.Value.Deserialize(reader); + return deserializer.Deserialize(reader); } public static T Deserialize(string path) @@ -55,8 +55,8 @@ public static T ConvertTo(object obj) var sb = new StringBuilder(); using (var writer = new StringWriter(sb)) { - serializer.Value.Serialize(writer, obj); + serializer.Serialize(writer, obj); } - return deserializer.Value.Deserialize(new StringReader(sb.ToString())); + return deserializer.Deserialize(new StringReader(sb.ToString())); } } diff --git a/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageReader.cs b/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageReader.cs index d1e0f1ebdac..a5443e00417 100644 --- a/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageReader.cs +++ b/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageReader.cs @@ -74,7 +74,7 @@ private static Dictionary> GetUidEntryMap(ZipArchive zip) { if (!uidEntryMap.TryGetValue(entry.Uid, out List list)) { - list = new List(); + list = []; uidEntryMap[entry.Uid] = list; } list.Add(entry.FullName); diff --git a/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageWriter.cs b/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageWriter.cs index e74f785437b..d065ea3ba2d 100644 --- a/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageWriter.cs +++ b/src/Docfx.DataContracts.Common/ExternalReferences/ExternalReferencePackageWriter.cs @@ -7,7 +7,7 @@ namespace Docfx.DataContracts.Common; -public class ExternalReferencePackageWriter : IDisposable +public sealed class ExternalReferencePackageWriter : IDisposable { private readonly ZipArchive _zip; diff --git a/src/Docfx.DataContracts.Common/ReferenceViewModel.cs b/src/Docfx.DataContracts.Common/ReferenceViewModel.cs index 7810640f850..96ca044f8de 100644 --- a/src/Docfx.DataContracts.Common/ReferenceViewModel.cs +++ b/src/Docfx.DataContracts.Common/ReferenceViewModel.cs @@ -50,7 +50,7 @@ public class ReferenceViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Name)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList NameInDevLangs { get; private set; } = new(); + public SortedList NameInDevLangs { get; private set; } = []; [YamlMember(Alias = Constants.PropertyName.NameWithType)] [JsonProperty(Constants.PropertyName.NameWithType)] @@ -60,7 +60,7 @@ public class ReferenceViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.NameWithType)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList NameWithTypeInDevLangs { get; private set; } = new(); + public SortedList NameWithTypeInDevLangs { get; private set; } = []; [YamlMember(Alias = Constants.PropertyName.FullName)] [JsonProperty(Constants.PropertyName.FullName)] @@ -70,17 +70,17 @@ public class ReferenceViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.FullName)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList FullNameInDevLangs { get; private set; } = new(); + public SortedList FullNameInDevLangs { get; private set; } = []; [ExtensibleMember(Constants.ExtensionMemberPrefix.Spec)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> Specs { get; private set; } = new(); + public SortedList> Specs { get; private set; } = []; [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public Dictionary Additional { get; private set; } = new(); + public Dictionary Additional { get; private set; } = []; [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] diff --git a/src/Docfx.DataContracts.Common/TocItemViewModel.cs b/src/Docfx.DataContracts.Common/TocItemViewModel.cs index 81937c34265..3611d348b48 100644 --- a/src/Docfx.DataContracts.Common/TocItemViewModel.cs +++ b/src/Docfx.DataContracts.Common/TocItemViewModel.cs @@ -116,7 +116,7 @@ public class TocItemViewModel [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] diff --git a/src/Docfx.DataContracts.RestApi/RestApiItemViewModelBase.cs b/src/Docfx.DataContracts.RestApi/RestApiItemViewModelBase.cs index 71ebce5c825..2b1900799e2 100644 --- a/src/Docfx.DataContracts.RestApi/RestApiItemViewModelBase.cs +++ b/src/Docfx.DataContracts.RestApi/RestApiItemViewModelBase.cs @@ -58,5 +58,5 @@ public class RestApiItemViewModelBase : IOverwriteDocumentViewModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.RestApi/RestApiParameterViewModel.cs b/src/Docfx.DataContracts.RestApi/RestApiParameterViewModel.cs index 2211bbc46fc..2407dad082a 100644 --- a/src/Docfx.DataContracts.RestApi/RestApiParameterViewModel.cs +++ b/src/Docfx.DataContracts.RestApi/RestApiParameterViewModel.cs @@ -25,5 +25,5 @@ public class RestApiParameterViewModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.RestApi/RestApiResponseViewModel.cs b/src/Docfx.DataContracts.RestApi/RestApiResponseViewModel.cs index a2fe4118d8e..b8823d01ef9 100644 --- a/src/Docfx.DataContracts.RestApi/RestApiResponseViewModel.cs +++ b/src/Docfx.DataContracts.RestApi/RestApiResponseViewModel.cs @@ -35,5 +35,5 @@ public class RestApiResponseViewModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.RestApi/RestApiTagViewModel.cs b/src/Docfx.DataContracts.RestApi/RestApiTagViewModel.cs index 5d095f314a6..b76ebe77298 100644 --- a/src/Docfx.DataContracts.RestApi/RestApiTagViewModel.cs +++ b/src/Docfx.DataContracts.RestApi/RestApiTagViewModel.cs @@ -48,5 +48,5 @@ public class RestApiTagViewModel : IOverwriteDocumentViewModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/ApiParameter.cs b/src/Docfx.DataContracts.UniversalReference/ApiParameter.cs index 2f367ac46ca..ec59c309591 100644 --- a/src/Docfx.DataContracts.UniversalReference/ApiParameter.cs +++ b/src/Docfx.DataContracts.UniversalReference/ApiParameter.cs @@ -48,5 +48,5 @@ public class ApiParameter [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/ArgumentInfo.cs b/src/Docfx.DataContracts.UniversalReference/ArgumentInfo.cs index 09f70d2c4b0..29389305a71 100644 --- a/src/Docfx.DataContracts.UniversalReference/ArgumentInfo.cs +++ b/src/Docfx.DataContracts.UniversalReference/ArgumentInfo.cs @@ -26,5 +26,5 @@ public class ArgumentInfo [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/AttributeInfo.cs b/src/Docfx.DataContracts.UniversalReference/AttributeInfo.cs index 073941c6215..faf7f48f60d 100644 --- a/src/Docfx.DataContracts.UniversalReference/AttributeInfo.cs +++ b/src/Docfx.DataContracts.UniversalReference/AttributeInfo.cs @@ -36,5 +36,5 @@ public class AttributeInfo [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/ExceptionInfo.cs b/src/Docfx.DataContracts.UniversalReference/ExceptionInfo.cs index c7fad174904..ca82920f156 100644 --- a/src/Docfx.DataContracts.UniversalReference/ExceptionInfo.cs +++ b/src/Docfx.DataContracts.UniversalReference/ExceptionInfo.cs @@ -29,5 +29,5 @@ public class ExceptionInfo [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/InheritanceTree.cs b/src/Docfx.DataContracts.UniversalReference/InheritanceTree.cs index 6d4cfc1fa15..467782f95af 100644 --- a/src/Docfx.DataContracts.UniversalReference/InheritanceTree.cs +++ b/src/Docfx.DataContracts.UniversalReference/InheritanceTree.cs @@ -32,5 +32,5 @@ public class InheritanceTree [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs b/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs index 7e81cbf246f..eb27364d38c 100644 --- a/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs +++ b/src/Docfx.DataContracts.UniversalReference/ItemViewModel.cs @@ -46,7 +46,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Parent)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList ParentInDevLangs { get; set; } = new(); + public SortedList ParentInDevLangs { get; set; } = []; [YamlMember(Alias = "package")] [JsonProperty("package")] @@ -57,7 +57,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember("package" + Constants.PrefixSeparator)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList PackageInDevLangs { get; set; } = new(); + public SortedList PackageInDevLangs { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.Children)] [MergeOption(MergeOption.Ignore)] // todo : merge more children @@ -69,7 +69,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Children)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> ChildrenInDevLangs { get; set; } = new(); + public SortedList> ChildrenInDevLangs { get; set; } = []; /// /// item's link URL @@ -93,7 +93,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Name)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList Names { get; set; } = new(); + public SortedList Names { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.NameWithType)] [JsonProperty(Constants.PropertyName.NameWithType)] @@ -103,7 +103,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.NameWithType)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList NamesWithType { get; set; } = new(); + public SortedList NamesWithType { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.FullName)] [JsonProperty(Constants.PropertyName.FullName)] @@ -113,7 +113,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.FullName)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList FullNames { get; set; } = new(); + public SortedList FullNames { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.Type)] [JsonProperty(Constants.PropertyName.Type)] @@ -131,7 +131,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Source)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList SourceInDevLangs { get; set; } = new(); + public SortedList SourceInDevLangs { get; set; } = []; /// /// item's documentation's source detail @@ -151,7 +151,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Assemblies)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> AssemblyNameListInDevLangs { get; set; } = new(); + public SortedList> AssemblyNameListInDevLangs { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.Namespace)] [JsonProperty(Constants.PropertyName.Namespace)] @@ -162,7 +162,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Namespace)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList NamespaceNameInDevLangs { get; set; } = new(); + public SortedList NamespaceNameInDevLangs { get; set; } = []; /// /// item's summary @@ -213,7 +213,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Overridden)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList OverriddenInDevLangs { get; set; } = new(); + public SortedList OverriddenInDevLangs { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.Overload)] [JsonProperty(Constants.PropertyName.Overload)] @@ -224,7 +224,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Overload)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList OverloadInDevLangs { get; set; } = new(); + public SortedList OverloadInDevLangs { get; set; } = []; [YamlMember(Alias = "exceptions")] [JsonProperty("exceptions")] @@ -234,7 +234,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Exceptions)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> ExceptionsInDevLangs { get; set; } = new(); + public SortedList> ExceptionsInDevLangs { get; set; } = []; [YamlMember(Alias = "seealso")] [JsonProperty("seealso")] @@ -278,12 +278,12 @@ public class ItemViewModel : IOverwriteDocumentViewModel [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [UniqueIdentityReference] - public List InheritanceUidReference => GetInheritanceUidReference(Inheritance)?.ToList() ?? new List(); + public List InheritanceUidReference => GetInheritanceUidReference(Inheritance)?.ToList() ?? []; [ExtensibleMember(Constants.ExtensionMemberPrefix.Inheritance)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> InheritanceInDevLangs { get; set; } = new(); + public SortedList> InheritanceInDevLangs { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.DerivedClasses)] [MergeOption(MergeOption.Ignore)] @@ -295,7 +295,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.DerivedClasses)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> DerivedClassesInDevLangs { get; set; } = new(); + public SortedList> DerivedClassesInDevLangs { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.Implements)] [MergeOption(MergeOption.Ignore)] // todo : merge more children @@ -307,7 +307,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Implements)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> ImplementsInDevLangs { get; set; } = new(); + public SortedList> ImplementsInDevLangs { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.InheritedMembers)] [MergeOption(MergeOption.Ignore)] // todo : merge more children @@ -319,7 +319,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.InheritedMembers)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> InheritedMembersInDevLangs { get; set; } = new(); + public SortedList> InheritedMembersInDevLangs { get; set; } = []; [YamlMember(Alias = Constants.PropertyName.ExtensionMethods)] [MergeOption(MergeOption.Ignore)] // todo : merge more children @@ -331,7 +331,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.ExtensionMethods)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> ExtensionMethodsInDevLangs { get; set; } = new(); + public SortedList> ExtensionMethodsInDevLangs { get; set; } = []; /// /// item's conceptual @@ -352,13 +352,13 @@ public class ItemViewModel : IOverwriteDocumentViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Platform)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList> PlatformInDevLangs { get; set; } = new(); + public SortedList> PlatformInDevLangs { get; set; } = []; [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] diff --git a/src/Docfx.DataContracts.UniversalReference/LinkInfo.cs b/src/Docfx.DataContracts.UniversalReference/LinkInfo.cs index 7a18c78acfb..a5ad351e19a 100644 --- a/src/Docfx.DataContracts.UniversalReference/LinkInfo.cs +++ b/src/Docfx.DataContracts.UniversalReference/LinkInfo.cs @@ -39,7 +39,7 @@ public class LinkInfo [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } public enum LinkType diff --git a/src/Docfx.DataContracts.UniversalReference/NamedArgumentInfo.cs b/src/Docfx.DataContracts.UniversalReference/NamedArgumentInfo.cs index 112111323d2..ae2f0b8eed2 100644 --- a/src/Docfx.DataContracts.UniversalReference/NamedArgumentInfo.cs +++ b/src/Docfx.DataContracts.UniversalReference/NamedArgumentInfo.cs @@ -31,5 +31,5 @@ public class NamedArgumentInfo [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/PageViewModel.cs b/src/Docfx.DataContracts.UniversalReference/PageViewModel.cs index dbe7b09c8d1..efb67ce29c6 100644 --- a/src/Docfx.DataContracts.UniversalReference/PageViewModel.cs +++ b/src/Docfx.DataContracts.UniversalReference/PageViewModel.cs @@ -15,14 +15,14 @@ public class PageViewModel [YamlMember(Alias = "items")] [JsonProperty("items")] [JsonPropertyName("items")] - public List Items { get; set; } = new(); + public List Items { get; set; } = []; [YamlMember(Alias = "references")] [JsonProperty("references")] [JsonPropertyName("references")] [UniqueIdentityReferenceIgnore] [MarkdownContentIgnore] - public List References { get; set; } = new(); + public List References { get; set; } = []; [YamlMember(Alias = "shouldSkipMarkup")] [JsonProperty("shouldSkipMarkup")] @@ -32,5 +32,5 @@ public class PageViewModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs b/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs index 34c11f2770b..6ddde79102f 100644 --- a/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs +++ b/src/Docfx.DataContracts.UniversalReference/SyntaxDetailViewModel.cs @@ -47,13 +47,13 @@ public class SyntaxDetailViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Return)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList ReturnInDevLangs { get; set; } = new(); + public SortedList ReturnInDevLangs { get; set; } = []; [ExtensibleMember] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] diff --git a/src/Docfx.Dotnet/CompilationHelper.cs b/src/Docfx.Dotnet/CompilationHelper.cs index a8af3d50dd3..3477aca4f4c 100644 --- a/src/Docfx.Dotnet/CompilationHelper.cs +++ b/src/Docfx.Dotnet/CompilationHelper.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. - +using System.Reflection.PortableExecutable; using Docfx.Common; using Docfx.Exceptions; using ICSharpCode.Decompiler.Metadata; @@ -103,7 +103,7 @@ public static Compilation CreateCompilationFromVBCode(string code, IDictionary GetDefaultMetadataReferences(strin } } - private static IEnumerable GetReferenceAssemblies(string assemblyPath) + private static IEnumerable GetReferenceAssemblies(string assemblyPath, PEReader? peReader, MetadataReference[] references) { - using var assembly = new PEFile(assemblyPath); + using var assembly = peReader == null + ? new PEFile(assemblyPath) + : new PEFile(assemblyPath, peReader); var assemblyResolver = new UniversalAssemblyResolver(assemblyPath, false, assembly.DetectTargetFrameworkId()); var result = new Dictionary(); + Dictionary? referenceFiles = default; GetReferenceAssembliesCore(assembly); @@ -179,20 +182,36 @@ void GetReferenceAssembliesCore(PEFile assembly) var file = assemblyResolver.FindAssemblyFile(reference); if (file is null) { - // Skip warning for some weired assembly references: https://github.com/dotnet/docfx/issues/9459 - if (reference.Version?.ToString() != "0.0.0.0") + if (referenceFiles == null) { - Logger.LogWarning($"Unable to resolve assembly reference {reference}", code: "InvalidAssemblyReference"); + referenceFiles = new(); + foreach (var referenceFile in references.OfType()) + { + var name = Path.GetFileNameWithoutExtension(referenceFile.FilePath); + if (!string.IsNullOrEmpty(name) + && !referenceFiles.TryAdd(name, referenceFile.FilePath!)) + { + Logger.LogWarning($"Duplicate reference files for '{name}'.", code: "InvalidAssemblyReference"); + } + } } + if (!referenceFiles.TryGetValue(reference.Name, out file)) + { + // Skip warning for some weired assembly references: https://github.com/dotnet/docfx/issues/9459 + if (reference.Version?.ToString() != "0.0.0.0") + { + Logger.LogWarning($"Unable to resolve assembly reference {reference}", code: "InvalidAssemblyReference"); + } - continue; + continue; + } } Logger.LogVerbose($"Loaded {reference.Name} from {file}"); - using var referenceAssembly = new PEFile(file); - if (result.TryAdd(referenceAssembly.Name, file)) + if (result.TryAdd(reference.Name, file)) { + using var referenceAssembly = new PEFile(file); GetReferenceAssembliesCore(referenceAssembly); } } @@ -201,7 +220,7 @@ void GetReferenceAssembliesCore(PEFile assembly) return result.Values; } - private static MetadataReference CreateMetadataReference(string assemblyPath) + internal static MetadataReference CreateMetadataReference(string assemblyPath) { var documentation = XmlDocumentationProvider.CreateFromFile(Path.ChangeExtension(assemblyPath, ".xml")); return MetadataReference.CreateFromFile(assemblyPath, documentation: documentation); diff --git a/src/Docfx.Dotnet/Docfx.Dotnet.csproj b/src/Docfx.Dotnet/Docfx.Dotnet.csproj index d28ca0fb4ae..e2fa7faa3a0 100644 --- a/src/Docfx.Dotnet/Docfx.Dotnet.csproj +++ b/src/Docfx.Dotnet/Docfx.Dotnet.csproj @@ -25,12 +25,12 @@ - + @@ -39,6 +39,9 @@ + + + diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs b/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs index 454c0303c40..acfa86c765f 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.ApiPage.cs @@ -10,7 +10,6 @@ using Docfx.Plugins; using HtmlAgilityPack; using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.Shared.Extensions; using OneOf; #nullable enable @@ -19,6 +18,10 @@ namespace Docfx.Dotnet; partial class DotnetApiCatalog { + // Regex to match any character other than a word character(alphabet/numeric/underscore) + [GeneratedRegex(@"\W")] + private static partial Regex NonWordCharRegex(); + private static void CreatePages(Action output, List<(IAssemblySymbol symbol, Compilation compilation)> assemblies, ExtractMetadataConfig config, DotnetApiOptions options) { Directory.CreateDirectory(config.OutputFolder); @@ -123,7 +126,7 @@ void Heading(int level, string title, string? id = null) void Api(int level, string title, ISymbol symbol, Compilation compilation) { var uid = VisitorHelper.GetId(symbol); - var id = Regex.Replace(uid, @"\W", "_"); + var id = NonWordCharRegex().Replace(uid, "_"); var commentId = VisitorHelper.GetCommentId(symbol); var source = config.DisableGitFeatures ? null : VisitorHelper.GetSourceDetail(symbol, compilation); var git = source?.Remote is null ? null diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs b/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs index 480849fcfcb..4177b3d9dbe 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.Compile.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics; +using System.Reflection.PortableExecutable; using Docfx.Common; using Microsoft.Build.Construction; using Microsoft.Build.Framework; @@ -20,9 +21,9 @@ partial class DotnetApiCatalog { var files = config.Files?.Select(s => new FileInformation(s)) .GroupBy(f => f.Type) - .ToDictionary(s => s.Key, s => s.Distinct().ToList()) ?? new(); + .ToDictionary(s => s.Key, s => s.Distinct().ToList()) ?? []; - var msbuildProperties = config.MSBuildProperties ?? new Dictionary(); + var msbuildProperties = config.MSBuildProperties ?? []; msbuildProperties.TryAdd("Configuration", "Release"); // NOTE: @@ -86,11 +87,7 @@ await LoadCompilationFromProject(project.AbsolutePath) is { } compilation) } var references = config.References ?? []; - var metadataReferences = references.Select(assemblyPath => - { - var documentation = XmlDocumentationProvider.CreateFromFile(Path.ChangeExtension(assemblyPath, ".xml")); - return MetadataReference.CreateFromFile(assemblyPath, documentation: documentation); - }).ToArray(); + var metadataReferences = references.Select(CompilationHelper.CreateMetadataReference).ToArray(); // LoadCompilationFrom C# source files if (files.TryGetValue(FileType.CSSourceCode, out var csFiles)) @@ -113,8 +110,17 @@ await LoadCompilationFromProject(project.AbsolutePath) is { } compilation) { foreach (var assemblyFile in assemblyFiles) { - Logger.LogInfo($"Loading assembly {assemblyFile.NormalizedPath}"); - var (compilation, assembly) = CompilationHelper.CreateCompilationFromAssembly(assemblyFile.NormalizedPath, config.IncludePrivateMembers, metadataReferences); + var normalizedAssemblyPath = assemblyFile.NormalizedPath; + + using var peReader = new PEReader(new FileStream(normalizedAssemblyPath, FileMode.Open, FileAccess.Read)); + if (!peReader.HasMetadata) + { + Logger.LogInfo($"Skip non-managed assembly {normalizedAssemblyPath}"); + continue; + } + + Logger.LogInfo($"Loading assembly {normalizedAssemblyPath}"); + var (compilation, assembly) = CompilationHelper.CreateCompilationFromAssembly(normalizedAssemblyPath, peReader, config.IncludePrivateMembers, metadataReferences); hasCompilationError |= compilation.CheckDiagnostics(config.AllowCompilationErrors); assemblies.Add((assembly, compilation)); } @@ -122,7 +128,7 @@ await LoadCompilationFromProject(project.AbsolutePath) is { } compilation) if (hasCompilationError) { - return new(); + return []; } if (assemblies.Count <= 0) @@ -151,7 +157,22 @@ await LoadCompilationFromProject(project.AbsolutePath) is { } compilation) { Logger.LogWarning($"There is .NET Analyzer that can't be resolved. " + $"If this analyzer is .NET Source Generator project. " - + $"Try build with `dotnet build -c Release` command before running docfx. Path: {unresolvedAnalyzer.FullPath}"); + + $"Try build with `dotnet build -c Release` command before running docfx. Path: {unresolvedAnalyzer.FullPath}", + code: WarningCodes.Metadata.FailedToResolveAnalyzer); + } + + foreach (var analyzer in project.AnalyzerReferences.OfType()) + { + analyzer.AnalyzerLoadFailed += (sender, e) => + { + var analyzerName = analyzer.Display; + var errorCode = e.ErrorCode; + var referencedCompilerVersion = e.ReferencedCompilerVersion; + + Logger.LogWarning($"Failed to load .NET Analyzer. AnalyzerName: {analyzerName}, ErrorCode: {errorCode}, ReferencedCompilerVersion: {referencedCompilerVersion}", + code: WarningCodes.Metadata.FailedToLoadAnalyzer); + }; + } } diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs b/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs index 3612add070e..0afcfe59b7e 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.ManagedReference.cs @@ -66,7 +66,7 @@ void ResolveAndExportYamlMetadata( YamlUtility.Serialize(tocFilePath, tocViewModel, YamlMime.TableOfContent); outputFileNames.Add(tocFilePath, 1); - ApiReferenceViewModel indexer = new(); + ApiReferenceViewModel indexer = []; // generate each item's yaml var members = model.Members; @@ -142,7 +142,7 @@ bool MergeNode(MetadataItem node) { if (node.Type is MemberType.Assembly) { - foreach (var item in node.Items ?? new()) + foreach (var item in node.Items ?? []) { MergeNode(item); } @@ -152,7 +152,7 @@ bool MergeNode(MetadataItem node) if (!result.TryGetValue(node.Name, out var existingNode)) { result.Add(node.Name, node); - foreach (var item in node.Items ?? new()) + foreach (var item in node.Items ?? []) { MergeNode(item); } @@ -161,18 +161,18 @@ bool MergeNode(MetadataItem node) if (node.Type is MemberType.Namespace or MemberType.Class) { - foreach (var item in node.Items ?? new()) + foreach (var item in node.Items ?? []) { if (MergeNode(item)) { - existingNode.Items ??= new(); + existingNode.Items ??= []; existingNode.Items.Add(item); } } return false; } - Logger.Log(LogLevel.Warning, $"Ignore duplicated member {node.Type}:{node.Name} from {node.Source?.Path} as it already exist in {existingNode.Source?.Path}."); + Logger.Log(LogLevel.Warning, $"Ignore duplicated member {node.Type}:{node.Name} from {node.Source?.Path} as it already exists in {existingNode.Source?.Path}."); return false; } } diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs b/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs index 788da38ef94..a4707e98494 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.Toc.cs @@ -37,7 +37,7 @@ class TocNode internal TocNodeType type; internal string? id; internal bool containsLeafNodes; - internal List<(ISymbol symbol, Compilation compilation)> symbols = new(); + internal List<(ISymbol symbol, Compilation compilation)> symbols = []; } private static List CreateToc(List<(IAssemblySymbol symbol, Compilation compilation)> assemblies, ExtractMetadataConfig config, DotnetApiOptions options) @@ -61,8 +61,8 @@ IEnumerable CreateToc(ISymbol symbol, Compilation compilation) switch (symbol) { - case INamespaceSymbol {IsGlobalNamespace: true} ns: - foreach (var child in ns.GetNamespaceMembers()) + case INamespaceSymbol { IsGlobalNamespace: true } ns: + foreach (var child in ns.GetMembers()) foreach (var item in CreateToc(child, compilation)) yield return item; break; @@ -104,7 +104,7 @@ IEnumerable CreateNamespaceToc(INamespaceSymbol ns) var existingNodeHasNoLeafNode = idExists && !node.containsLeafNodes; - node.items ??= new(); + node.items ??= []; node.symbols.Add((symbol, compilation)); foreach (var child in ns.GetNamespaceMembers()) @@ -164,7 +164,7 @@ IEnumerable CreateNamedTypeToc(INamedTypeSymbol type) if (config.MemberLayout is MemberLayout.SeparatePages && type.TypeKind is TypeKind.Class or TypeKind.Interface or TypeKind.Struct) { - node.items ??= new(); + node.items ??= []; foreach (var member in type.GetMembers()) node.items.AddRange(CreateToc(member, compilation)); } @@ -248,7 +248,7 @@ void InsertCategory(TocNodeType type, string name) case CategoryLayout.Nested: { // Skip when parent node is category node. - if (parentTocNode is {type: TocNodeType.None}) + if (parentTocNode is { type: TocNodeType.None }) return; // If items contains specified type node. Create new TocNode for category. and move related node to child node. diff --git a/src/Docfx.Dotnet/DotnetApiCatalog.cs b/src/Docfx.Dotnet/DotnetApiCatalog.cs index 1a1ffe66aae..5d2fb237e8b 100644 --- a/src/Docfx.Dotnet/DotnetApiCatalog.cs +++ b/src/Docfx.Dotnet/DotnetApiCatalog.cs @@ -15,6 +15,8 @@ namespace Docfx.Dotnet; /// public static partial class DotnetApiCatalog { + private static IDeserializer deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); + /// /// Generates metadata reference YAML files using docfx.json config. /// @@ -96,13 +98,12 @@ void WriteMarkdown(string outputFolder, string id, Build.ApiPage.ApiPage apiPage break; case MetadataOutputFormat.ApiPage: - var serializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); CreatePages(WriteYaml, assemblies, config, options); void WriteYaml(string outputFolder, string id, Build.ApiPage.ApiPage apiPage) { var json = JsonSerializer.Serialize(apiPage, Docfx.Build.ApiPage.ApiPage.JsonSerializerOptions); - var obj = serializer.Deserialize(json); + var obj = deserializer.Deserialize(json); YamlUtility.Serialize(Path.Combine(outputFolder, $"{id}.yml"), obj, "YamlMime:ApiPage"); } break; diff --git a/src/Docfx.Dotnet/ExtensionMethods/ISymbolExtensions.cs b/src/Docfx.Dotnet/ExtensionMethods/ISymbolExtensions.cs index 362beb83f76..5a91077fa80 100644 --- a/src/Docfx.Dotnet/ExtensionMethods/ISymbolExtensions.cs +++ b/src/Docfx.Dotnet/ExtensionMethods/ISymbolExtensions.cs @@ -1,11 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Microsoft.CodeAnalysis; using System.Collections.Immutable; using System.Globalization; using System.Reflection; using System.Reflection.Emit; +using Microsoft.CodeAnalysis; #nullable enable diff --git a/src/Docfx.Dotnet/FileInformation.cs b/src/Docfx.Dotnet/FileInformation.cs index 67eab3e79e0..66a61c3dfd2 100644 --- a/src/Docfx.Dotnet/FileInformation.cs +++ b/src/Docfx.Dotnet/FileInformation.cs @@ -48,6 +48,14 @@ private static FileType GetFileType(string filePath) case ".sln": case ".slnf": return FileType.Solution; + + case ".slnx": +#if NET9_0_OR_GREATER + return FileType.Solution; +#else + return FileType.NotSupported; +#endif + case ".csproj": case ".vbproj": return FileType.Project; diff --git a/src/Docfx.Dotnet/Filters/AttributeFilterInfo.cs b/src/Docfx.Dotnet/Filters/AttributeFilterInfo.cs index 63b3ddb6737..20aef537058 100644 --- a/src/Docfx.Dotnet/Filters/AttributeFilterInfo.cs +++ b/src/Docfx.Dotnet/Filters/AttributeFilterInfo.cs @@ -14,7 +14,7 @@ internal class AttributeFilterInfo public List ConstructorArguments { get; set; } [YamlMember(Alias = "ctorNamedArguments")] - public Dictionary ConstructorNamedArguments { get; set; } = new(); + public Dictionary ConstructorNamedArguments { get; set; } = []; public bool ContainedIn(SymbolFilterData symbol) { diff --git a/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs b/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs index e07f033e7ef..0e12bc07c39 100644 --- a/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs +++ b/src/Docfx.Dotnet/Filters/ConfigFilterRule.cs @@ -10,10 +10,10 @@ namespace Docfx.Dotnet; internal class ConfigFilterRule { [YamlMember(Alias = "apiRules")] - public List ApiRules { get; set; } = new(); + public List ApiRules { get; set; } = []; [YamlMember(Alias = "attributeRules")] - public List AttributeRules { get; set; } = new(); + public List AttributeRules { get; set; } = []; public bool CanVisitApi(SymbolFilterData symbol) { diff --git a/src/Docfx.Dotnet/Filters/ConfigFilterRuleItem.cs b/src/Docfx.Dotnet/Filters/ConfigFilterRuleItem.cs index d76861161cd..52140b0b26c 100644 --- a/src/Docfx.Dotnet/Filters/ConfigFilterRuleItem.cs +++ b/src/Docfx.Dotnet/Filters/ConfigFilterRuleItem.cs @@ -20,7 +20,7 @@ public string UidRegex } set { - _uidRegex = new Regex(value); + _uidRegex = new Regex(value, RegexOptions.Compiled); } } diff --git a/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.cs b/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.cs index acb2cc10a92..27b4df73f1b 100644 --- a/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.cs +++ b/src/Docfx.Dotnet/Filters/ConfigFilterRuleItemUnion.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Text.Json.Serialization; using YamlDotNet.Serialization; namespace Docfx.Dotnet; diff --git a/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs b/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs index 406d47e1aaa..5ac4b6b9b68 100644 --- a/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs +++ b/src/Docfx.Dotnet/ManagedReference/Models/ItemViewModel.cs @@ -72,7 +72,7 @@ public class ItemViewModel : IOverwriteDocumentViewModel, IItemWithMetadata [ExtensibleMember(Constants.ExtensionMemberPrefix.Name)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList Names { get; set; } = new(); + public SortedList Names { get; set; } = []; [YamlIgnore] [Newtonsoft.Json.JsonIgnore] @@ -128,7 +128,7 @@ public string NameForVB [ExtensibleMember(Constants.ExtensionMemberPrefix.NameWithType)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList NamesWithType { get; set; } = new(); + public SortedList NamesWithType { get; set; } = []; [YamlIgnore] [Newtonsoft.Json.JsonIgnore] @@ -184,7 +184,7 @@ public string NameWithTypeForVB [ExtensibleMember(Constants.ExtensionMemberPrefix.FullName)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList FullNames { get; set; } = new(); + public SortedList FullNames { get; set; } = []; [YamlIgnore] [Newtonsoft.Json.JsonIgnore] @@ -373,7 +373,7 @@ public string FullNameForVB [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [System.Text.Json.Serialization.JsonPropertyName("__metadata__")] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; [EditorBrowsable(EditorBrowsableState.Never)] [YamlIgnore] diff --git a/src/Docfx.Dotnet/ManagedReference/Models/PageViewModel.cs b/src/Docfx.Dotnet/ManagedReference/Models/PageViewModel.cs index dfe564a80da..a872eacb0de 100644 --- a/src/Docfx.Dotnet/ManagedReference/Models/PageViewModel.cs +++ b/src/Docfx.Dotnet/ManagedReference/Models/PageViewModel.cs @@ -14,14 +14,14 @@ public class PageViewModel [YamlMember(Alias = "items")] [JsonProperty("items")] [JsonPropertyName("items")] - public List Items { get; set; } = new(); + public List Items { get; set; } = []; [YamlMember(Alias = "references")] [JsonProperty("references")] [JsonPropertyName("references")] [UniqueIdentityReferenceIgnore] [MarkdownContentIgnore] - public List References { get; set; } = new(); + public List References { get; set; } = []; [YamlMember(Alias = "shouldSkipMarkup")] [JsonProperty("shouldSkipMarkup")] @@ -36,5 +36,5 @@ public class PageViewModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs b/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs index 8aa49b39a22..57d78edeb93 100644 --- a/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs +++ b/src/Docfx.Dotnet/ManagedReference/Models/SyntaxDetailViewModel.cs @@ -22,7 +22,7 @@ public class SyntaxDetailViewModel [ExtensibleMember(Constants.ExtensionMemberPrefix.Content)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] - public SortedList Contents { get; set; } = new(); + public SortedList Contents { get; set; } = []; [YamlIgnore] [Newtonsoft.Json.JsonIgnore] diff --git a/src/Docfx.Dotnet/ManagedReference/Resolvers/NormalizeSyntax.cs b/src/Docfx.Dotnet/ManagedReference/Resolvers/NormalizeSyntax.cs index 61794226839..3c2a0f5948c 100644 --- a/src/Docfx.Dotnet/ManagedReference/Resolvers/NormalizeSyntax.cs +++ b/src/Docfx.Dotnet/ManagedReference/Resolvers/NormalizeSyntax.cs @@ -17,7 +17,7 @@ public void Run(MetadataModel yaml, ResolverContext context) (member, parent) => { // get all the possible places where link is possible - if (member.Syntax is {Content: not null}) + if (member.Syntax is { Content: not null }) { SyntaxLanguage[] keys = new SyntaxLanguage[member.Syntax.Content.Count]; member.Syntax.Content.Keys.CopyTo(keys, 0); diff --git a/src/Docfx.Dotnet/ManagedReference/Resolvers/ResolveReference.cs b/src/Docfx.Dotnet/ManagedReference/Resolvers/ResolveReference.cs index 1b59b26ee8c..f946b36b8df 100644 --- a/src/Docfx.Dotnet/ManagedReference/Resolvers/ResolveReference.cs +++ b/src/Docfx.Dotnet/ManagedReference/Resolvers/ResolveReference.cs @@ -20,14 +20,14 @@ public void Run(MetadataModel yaml, ResolverContext context) if (current.Type.IsPageLevel()) { page = current; - current.References = new Dictionary(); + current.References = []; } else { page = parent; current.References = null; } - if (documentReferences is {Count: > 0}) + if (documentReferences is { Count: > 0 }) { foreach (var key in documentReferences.Keys) { diff --git a/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs b/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs index c812f1a6e0d..cb23287b342 100644 --- a/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs +++ b/src/Docfx.Dotnet/ManagedReference/Resolvers/SetDerivedClass.cs @@ -7,11 +7,11 @@ namespace Docfx.Dotnet; internal class SetDerivedClass : IResolverPipeline { - private readonly Dictionary> _derivedClassMapping = new(); + private readonly Dictionary> _derivedClassMapping = []; public void Run(MetadataModel yaml, ResolverContext context) { - if (yaml.Members is {Count: > 0}) + if (yaml.Members is { Count: > 0 }) { UpdateDerivedClassMapping(yaml.Members, context.References); AppendDerivedClass(yaml.Members); @@ -23,7 +23,7 @@ private void UpdateDerivedClassMapping(List items, Dictionary()) { var inheritance = item.Inheritance; - if (inheritance is {Count: > 0}) + if (inheritance is { Count: > 0 }) { var superClass = inheritance[inheritance.Count - 1]; @@ -41,7 +41,7 @@ private void UpdateDerivedClassMapping(List items, Dictionary { item.Name }); + _derivedClassMapping.Add(superClass, [item.Name]); } } } diff --git a/src/Docfx.Dotnet/ManagedReference/Resolvers/YamlMetadataResolver.cs b/src/Docfx.Dotnet/ManagedReference/Resolvers/YamlMetadataResolver.cs index f8001c4132c..57eda24d1df 100644 --- a/src/Docfx.Dotnet/ManagedReference/Resolvers/YamlMetadataResolver.cs +++ b/src/Docfx.Dotnet/ManagedReference/Resolvers/YamlMetadataResolver.cs @@ -8,8 +8,8 @@ namespace Docfx.Dotnet; internal static class YamlMetadataResolver { // Order matters - private static readonly List pipelines = new() - { + private static readonly List pipelines = + [ new LayoutCheckAndCleanup(), new SetParent(), new ResolveReference(), @@ -17,7 +17,7 @@ internal static class YamlMetadataResolver new BuildMembers(), new SetDerivedClass(), new BuildToc() - }; + ]; /// /// TODO: input Namespace list instead; @@ -33,7 +33,7 @@ public static MetadataModel ResolveMetadata( MetadataModel viewModel = new() { TocYamlViewModel = GenerateToc(allMembers, allReferences, namespaceLayout), - Members = new List(), + Members = [], }; ResolverContext context = new() { @@ -74,9 +74,9 @@ private static MetadataItem GenerateNestedTocStructure(IEnumerable namespacedItems = new(); + Dictionary namespacedItems = []; var dotsPerNamespace = namespaces.ToDictionary(x => x.Key, x => x.Value.Name.Where(y => y == '.').Count()); foreach (var member in namespaces @@ -95,10 +95,10 @@ private static MetadataItem GenerateNestedTocStructure(IEnumerable private static readonly IReadOnlyList EmptyListOfString = Array.Empty(); private readonly Compilation _compilation; private readonly YamlModelGenerator _generator; - private readonly Dictionary _references = new(); + private readonly Dictionary _references = []; private readonly IMethodSymbol[] _extensionMethods; private readonly ExtractMetadataConfig _config; private readonly SymbolFilter _filter; @@ -31,7 +30,7 @@ public SymbolVisitorAdapter(Compilation compilation, YamlModelGenerator generato _generator = generator; _filter = filter; _config = config; - _extensionMethods = extensionMethods?.Where(_filter.IncludeApi).ToArray() ?? Array.Empty(); + _extensionMethods = extensionMethods?.Where(_filter.IncludeApi).ToArray() ?? []; } public override MetadataItem DefaultVisit(ISymbol symbol) @@ -45,13 +44,13 @@ public override MetadataItem DefaultVisit(ISymbol symbol) { Name = VisitorHelper.GetId(symbol), CommentId = VisitorHelper.GetCommentId(symbol), - DisplayNames = new SortedList(), - DisplayNamesWithType = new SortedList(), - DisplayQualifiedNames = new SortedList(), + DisplayNames = [], + DisplayNamesWithType = [], + DisplayQualifiedNames = [], Source = _config.DisableGitFeatures ? null : VisitorHelper.GetSourceDetail(symbol, _compilation), }; var assemblyName = symbol.ContainingAssembly?.Name; - item.AssemblyNameList = string.IsNullOrEmpty(assemblyName) || assemblyName is "?" ? null : new List { assemblyName }; + item.AssemblyNameList = string.IsNullOrEmpty(assemblyName) || assemblyName is "?" ? null : [assemblyName]; if (symbol is not INamespaceSymbol) { var namespaceName = VisitorHelper.GetId(symbol.ContainingNamespace); @@ -155,10 +154,10 @@ public override MetadataItem VisitNamedType(INamedTypeSymbol symbol) } item.Type = VisitorHelper.GetMemberTypeFromTypeKind(symbol.TypeKind); - item.Syntax ??= new SyntaxDetail { Content = new SortedList() }; + item.Syntax ??= new SyntaxDetail { Content = [] }; if (item.Syntax.Content == null) { - item.Syntax.Content = new SortedList(); + item.Syntax.Content = []; } _generator.GenerateSyntax(symbol, item.Syntax, _filter); @@ -166,7 +165,7 @@ public override MetadataItem VisitNamedType(INamedTypeSymbol symbol) { if (item.Syntax.TypeParameters == null) { - item.Syntax.TypeParameters = new List(); + item.Syntax.TypeParameters = []; } foreach (var p in symbol.TypeParameters) @@ -182,7 +181,7 @@ public override MetadataItem VisitNamedType(INamedTypeSymbol symbol) AddMethodSyntax(symbol.DelegateInvokeMethod, item, typeGenericParameters, EmptyListOfString); } - item.Items = new List(); + item.Items = []; foreach ( var member in symbol.GetMembers() .Where(static s => @@ -212,13 +211,13 @@ public override MetadataItem VisitMethod(IMethodSymbol symbol) { return null; } - result.Syntax ??= new SyntaxDetail { Content = new SortedList() }; + result.Syntax ??= new SyntaxDetail { Content = [] }; if (symbol.TypeParameters.Length > 0) { if (result.Syntax.TypeParameters == null) { - result.Syntax.TypeParameters = new List(); + result.Syntax.TypeParameters = []; } foreach (var p in symbol.TypeParameters) @@ -236,11 +235,11 @@ public override MetadataItem VisitMethod(IMethodSymbol symbol) if (result.Syntax.Content == null) { - result.Syntax.Content = new SortedList(); + result.Syntax.Content = []; } _generator.GenerateSyntax(symbol, result.Syntax, _filter); - if (symbol is {IsOverride: true, OverriddenMethod: not null}) + if (symbol is { IsOverride: true, OverriddenMethod: not null }) { result.Overridden = AddSpecReference(symbol.OverriddenMethod, typeGenericParameters, methodGenericParameters); } @@ -264,10 +263,10 @@ public override MetadataItem VisitField(IFieldSymbol symbol) { return null; } - result.Syntax ??= new SyntaxDetail { Content = new SortedList() }; + result.Syntax ??= new SyntaxDetail { Content = [] }; if (result.Syntax.Content == null) { - result.Syntax.Content = new SortedList(); + result.Syntax.Content = []; } _generator.GenerateSyntax(symbol, result.Syntax, _filter); @@ -289,16 +288,16 @@ public override MetadataItem VisitEvent(IEventSymbol symbol) { return null; } - result.Syntax ??= new SyntaxDetail { Content = new SortedList() }; + result.Syntax ??= new SyntaxDetail { Content = [] }; if (result.Syntax.Content == null) { - result.Syntax.Content = new SortedList(); + result.Syntax.Content = []; } _generator.GenerateSyntax(symbol, result.Syntax, _filter); var typeGenericParameters = symbol.ContainingType.IsGenericType ? symbol.ContainingType.Accept(TypeGenericParameterNameVisitor.Instance) : EmptyListOfString; - if (symbol is {IsOverride: true, OverriddenEvent: not null}) + if (symbol is { IsOverride: true, OverriddenEvent: not null }) { result.Overridden = AddSpecReference(symbol.OverriddenEvent, typeGenericParameters); } @@ -323,14 +322,14 @@ public override MetadataItem VisitProperty(IPropertySymbol symbol) { return null; } - result.Syntax ??= new SyntaxDetail { Content = new SortedList() }; + result.Syntax ??= new SyntaxDetail { Content = [] }; if (result.Syntax.Parameters == null) { - result.Syntax.Parameters = new List(); + result.Syntax.Parameters = []; } if (result.Syntax.Content == null) { - result.Syntax.Content = new SortedList(); + result.Syntax.Content = []; } _generator.GenerateSyntax(symbol, result.Syntax, _filter); @@ -352,7 +351,7 @@ public override MetadataItem VisitProperty(IPropertySymbol symbol) Debug.Assert(result.Syntax.Return.Type != null); } - if (symbol is {IsOverride: true, OverriddenProperty: not null}) + if (symbol is { IsOverride: true, OverriddenProperty: not null }) { result.Overridden = AddSpecReference(symbol.OverriddenProperty, typeGenericParameters); } @@ -387,9 +386,9 @@ public string AddReference(string id, string commentId) var reference = new ReferenceItem { CommentId = commentId }; if (DocumentationCommentId.GetFirstSymbolForDeclarationId(commentId, _compilation) is { } symbol) { - reference.NameParts = new(); - reference.NameWithTypeParts = new(); - reference.QualifiedNameParts = new(); + reference.NameParts = []; + reference.NameWithTypeParts = []; + reference.QualifiedNameParts = []; reference.IsDefinition = symbol.IsDefinition; _generator.GenerateReference(symbol, reference, asOverload: false, _filter); @@ -549,7 +548,7 @@ private void GenerateInheritance(INamedTypeSymbol symbol, MetadataItem item) { var type = symbol; var inheritance = new List(); - dict = new Dictionary(); + dict = []; var typeParameterNames = symbol.IsGenericType ? symbol.Accept(TypeGenericParameterNameVisitor.Instance) : EmptyListOfString; while (type != null) { @@ -587,7 +586,7 @@ where _filter.IncludeApi(t) } else if (symbol.TypeKind == TypeKind.Interface) { - dict = new Dictionary(); + dict = []; var typeParameterNames = symbol.IsGenericType ? symbol.Accept(TypeGenericParameterNameVisitor.Instance) : EmptyListOfString; AddInheritedMembers(symbol, symbol, dict, typeParameterNames); for (int i = 0; i < symbol.AllInterfaces.Length; i++) @@ -692,7 +691,7 @@ private void AddMethodSyntax(IMethodSymbol symbol, MetadataItem result, IReadOnl { if (result.Syntax.Parameters == null) { - result.Syntax.Parameters = new List(); + result.Syntax.Parameters = []; } foreach (var p in symbol.Parameters) @@ -719,7 +718,7 @@ private XmlCommentParserContext GetXmlCommentParserContext(MetadataItem item) void AddReferenceDelegate(string id, string commentId) { var r = AddReference(id, commentId); - item.References ??= new Dictionary(); + item.References ??= []; // only record the id now, the value would be fed at later phase after merge item.References[id] = null; @@ -732,6 +731,12 @@ string ResolveCode(string source) ? Path.GetDirectoryName(Path.GetFullPath(Path.Combine(EnvironmentContext.BaseDirectory, sourcePath))) : null); + if (basePath == null) + { + Logger.LogWarning($"Source file '{source}' not found.", code: "CodeNotFound"); + return null; + } + var path = Path.GetFullPath(Path.Combine(basePath, source)); if (!File.Exists(path)) { diff --git a/src/Docfx.Dotnet/ManagedReference/Visitors/TypeGenericParameterNameVisitor.cs b/src/Docfx.Dotnet/ManagedReference/Visitors/TypeGenericParameterNameVisitor.cs index fabeabcf217..e3e4f436222 100644 --- a/src/Docfx.Dotnet/ManagedReference/Visitors/TypeGenericParameterNameVisitor.cs +++ b/src/Docfx.Dotnet/ManagedReference/Visitors/TypeGenericParameterNameVisitor.cs @@ -27,7 +27,7 @@ public override List VisitNamedType(INamedTypeSymbol symbol) } if (symbol.TypeParameters.Length > 0) { - result ??= new List(); + result ??= []; for (int i = 0; i < symbol.TypeParameters.Length; i++) { result.Add(symbol.TypeParameters[i].Name); diff --git a/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs b/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs index 51e0a8afba1..04cc202c6d7 100644 --- a/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs +++ b/src/Docfx.Dotnet/ManagedReference/Visitors/VisitorHelper.cs @@ -31,7 +31,7 @@ public static string GetId(ISymbol symbol) return null; } - if (symbol is INamespaceSymbol {IsGlobalNamespace: true}) + if (symbol is INamespaceSymbol { IsGlobalNamespace: true }) { return GlobalNamespaceId; } diff --git a/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs b/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs index 79d205e1f36..889f9a36f96 100644 --- a/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs +++ b/src/Docfx.Dotnet/ManagedReference/Visitors/YamlModelGenerator.cs @@ -33,22 +33,22 @@ public void DefaultVisit(ISymbol symbol, MetadataItem item) public void GenerateReference(ISymbol symbol, ReferenceItem reference, bool asOverload, SymbolFilter filter) { if (!reference.NameParts.ContainsKey(SyntaxLanguage.CSharp)) - reference.NameParts.Add(SyntaxLanguage.CSharp, new()); + reference.NameParts.Add(SyntaxLanguage.CSharp, []); if (!reference.NameWithTypeParts.ContainsKey(SyntaxLanguage.CSharp)) - reference.NameWithTypeParts.Add(SyntaxLanguage.CSharp, new()); + reference.NameWithTypeParts.Add(SyntaxLanguage.CSharp, []); if (!reference.QualifiedNameParts.ContainsKey(SyntaxLanguage.CSharp)) - reference.QualifiedNameParts.Add(SyntaxLanguage.CSharp, new()); + reference.QualifiedNameParts.Add(SyntaxLanguage.CSharp, []); reference.NameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter); reference.NameWithTypeParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter); reference.QualifiedNameParts[SyntaxLanguage.CSharp] = SymbolFormatter.GetQualifiedNameParts(symbol, SyntaxLanguage.CSharp, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter); if (!reference.NameParts.ContainsKey(SyntaxLanguage.VB)) - reference.NameParts.Add(SyntaxLanguage.VB, new()); + reference.NameParts.Add(SyntaxLanguage.VB, []); if (!reference.NameWithTypeParts.ContainsKey(SyntaxLanguage.VB)) - reference.NameWithTypeParts.Add(SyntaxLanguage.VB, new()); + reference.NameWithTypeParts.Add(SyntaxLanguage.VB, []); if (!reference.QualifiedNameParts.ContainsKey(SyntaxLanguage.VB)) - reference.QualifiedNameParts.Add(SyntaxLanguage.VB, new()); + reference.QualifiedNameParts.Add(SyntaxLanguage.VB, []); reference.NameParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter); reference.NameWithTypeParts[SyntaxLanguage.VB] = SymbolFormatter.GetNameWithTypeParts(symbol, SyntaxLanguage.VB, nullableReferenceType: false, asOverload).ToLinkItems(_compilation, _memberLayout, _allAssemblies, asOverload, filter); @@ -66,9 +66,9 @@ public string AddReference(ISymbol symbol, Dictionary ref var id = VisitorHelper.GetId(symbol); var reference = new ReferenceItem { - NameParts = new(), - NameWithTypeParts = new(), - QualifiedNameParts = new(), + NameParts = [], + NameWithTypeParts = [], + QualifiedNameParts = [], IsDefinition = symbol.IsDefinition, CommentId = VisitorHelper.GetCommentId(symbol) }; @@ -87,9 +87,9 @@ public string AddOverloadReference(ISymbol symbol, Dictionary /// Specify additinal assembly reference files. - /// This settings is used when generating metadata from DLLs or source files. + /// This setting is used when generating metadata from DLLs or source files. /// Solution or project file-based metadata generation does not use this property. /// [JsonProperty("references")] diff --git a/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs b/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs index 02baa717eb7..dbd0f718b7c 100644 --- a/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs +++ b/src/Docfx.Dotnet/Parsers/XHtmlWriter.cs @@ -20,7 +20,7 @@ public XHtmlWriter(TextWriter writer) { _writer = Create(writer, new() { OmitXmlDeclaration = true }); // void element (ref: http://www.w3.org/TR/html-markup/syntax.html) - _voidElements = new HashSet { "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" }; + _voidElements = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; } public override void WriteEndElement() diff --git a/src/Docfx.Dotnet/Parsers/XmlComment.cs b/src/Docfx.Dotnet/Parsers/XmlComment.cs index da4467e3fcc..5e736979005 100644 --- a/src/Docfx.Dotnet/Parsers/XmlComment.cs +++ b/src/Docfx.Dotnet/Parsers/XmlComment.cs @@ -38,6 +38,9 @@ internal partial class XmlComment [GeneratedRegex(@"^\s*$")] private static partial Regex XmlEndRegionRegex(); + [GeneratedRegex(@"^(\s*)>", RegexOptions.Multiline)] + private static partial Regex BlockQuoteRegex(); + private readonly XmlCommentParserContext _context; public string Summary { get; private set; } @@ -121,10 +124,6 @@ public static XmlComment Parse(string xml, XmlCommentParserContext context = nul } try { - // Format xml with indentation. - // It's needed to fix issue (https://github.com/dotnet/docfx/issues/9736) - xml = XElement.Parse(xml).ToString(SaveOptions.None); - return new XmlComment(xml, context ?? new()); } catch (XmlException) @@ -170,7 +169,8 @@ private void ResolveCode(XDocument doc, XmlCommentParserContext context) code.SetAttributeValue("class", $"lang-{lang}"); - if (node.PreviousNode is null) + if (node.PreviousNode is null + || node.PreviousNode is XText xText && xText.Value == $"\n{indent}") { // Xml writer formats
 with unintended identation
                 // when there is no preceeding text node.
@@ -365,7 +365,7 @@ private void ResolveCrefLink(XNode node, string nodeSelector, Action is encoded to > in XML. When interpreted as markdown, > is as blockquote
             // Decode standalone > to > to enable the block quote markdown syntax
-            return Regex.Replace(xml, @"^(\s*)>", "$1>", RegexOptions.Multiline);
+            return BlockQuoteRegex().Replace(xml, "$1>");
         }
 
         static void MarkdownXmlDecode(MarkdownObject node)
@@ -640,7 +640,7 @@ static void MarkdownXmlDecode(MarkdownObject node)
                         MarkdownXmlDecode(child);
                     break;
 
-                case LeafBlock {Inline: not null} leafBlock:
+                case LeafBlock { Inline: not null } leafBlock:
                     foreach (var child in leafBlock.Inline)
                         MarkdownXmlDecode(child);
                     break;
diff --git a/src/Docfx.Dotnet/Resources/defaultfilterconfig.yml b/src/Docfx.Dotnet/Resources/defaultfilterconfig.yml
index ea3e9c45b5f..5fd8ee6399b 100644
--- a/src/Docfx.Dotnet/Resources/defaultfilterconfig.yml
+++ b/src/Docfx.Dotnet/Resources/defaultfilterconfig.yml
@@ -26,9 +26,12 @@ attributeRules:
 - exclude:
     uidRegex: ^System\.EnterpriseServices$
     type: Namespace
+- include:
+    uidRegex: ^System\.Diagnostics\.CodeAnalysis\.(ExperimentalAttribute)$
+    type: Type
 - exclude:
     uidRegex: ^System\.Diagnostics\.CodeAnalysis$
-    type: Namespace
+    type: Type
 - include:
     uidRegex: ^System\.Diagnostics\.(ConditionalAttribute|EventLogPermissionAttribute|PerformanceCounterPermissionAttribute)$
     type: Type
diff --git a/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs b/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs
index a65b97499bf..4c315a87cbb 100644
--- a/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs
+++ b/src/Docfx.Dotnet/SourceLink/SourceLinkMap.cs
@@ -3,8 +3,8 @@
 
 using System.Collections.ObjectModel;
 using System.Diagnostics;
-using System.Text.Json;
 using System.Diagnostics.CodeAnalysis;
+using System.Text.Json;
 
 #nullable enable
 
diff --git a/src/Docfx.Dotnet/SymbolFilter.cs b/src/Docfx.Dotnet/SymbolFilter.cs
index 47685377b9d..6813e5c4016 100644
--- a/src/Docfx.Dotnet/SymbolFilter.cs
+++ b/src/Docfx.Dotnet/SymbolFilter.cs
@@ -95,7 +95,7 @@ bool IncludeAttributeDefault(ISymbol symbol)
     private bool IsSymbolAccessible(ISymbol symbol)
     {
         // TODO: should we include implicitly declared members like constructors? They are part of the API contract.
-        if (symbol is {IsImplicitlyDeclared: true, Kind: not SymbolKind.Namespace})
+        if (symbol is { IsImplicitlyDeclared: true, Kind: not SymbolKind.Namespace })
             return false;
 
         if (_config.IncludeExplicitInterfaceImplementations &&
diff --git a/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs b/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs
index 9e8db3d1da9..0b4b384fe4b 100644
--- a/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs
+++ b/src/Docfx.Dotnet/SymbolFormatter.Syntax.cs
@@ -368,7 +368,7 @@ private void AddTypedConstant(TypedConstant typedConstant)
                     AddPunctuation(")");
                     break;
 
-                case TypedConstantKind.Array when typedConstant is {IsNull: false, Type: not null}:
+                case TypedConstantKind.Array when typedConstant is { IsNull: false, Type: not null }:
                     AddKeyword("new", "New");
                     AddSpace();
                     AddTypeName(typedConstant.Type);
@@ -460,7 +460,7 @@ private void AddEnumConstant(TypedConstant typedConstant)
 
         private bool ExpandEnumClassName(ISymbol symbol, SymbolDisplayPart part)
         {
-            if (symbol.Kind != SymbolKind.Field && part is {Kind: SymbolDisplayPartKind.EnumMemberName, Symbol: not null})
+            if (symbol.Kind != SymbolKind.Field && part is { Kind: SymbolDisplayPartKind.EnumMemberName, Symbol: not null })
             {
                 _parts.Add(new(SymbolDisplayPartKind.EnumName, part.Symbol.ContainingSymbol, part.Symbol.ContainingSymbol.Name));
                 _parts.Add(new(SymbolDisplayPartKind.Punctuation, null, "."));
@@ -472,7 +472,7 @@ private bool ExpandEnumClassName(ISymbol symbol, SymbolDisplayPart part)
 
         private bool StaticClassToVBModule(ISymbol symbol, SymbolDisplayPart part)
         {
-            if (Language is SyntaxLanguage.VB && symbol is {IsStatic: true, Kind: SymbolKind.NamedType} &&
+            if (Language is SyntaxLanguage.VB && symbol is { IsStatic: true, Kind: SymbolKind.NamedType } &&
                 part.Kind == SymbolDisplayPartKind.Keyword && part.ToString() == "Class")
             {
                 _parts.Add(new(SymbolDisplayPartKind.Keyword, null, "Module"));
diff --git a/src/Docfx.Dotnet/SymbolFormatter.cs b/src/Docfx.Dotnet/SymbolFormatter.cs
index 0e6bf1b496d..ee76da87457 100644
--- a/src/Docfx.Dotnet/SymbolFormatter.cs
+++ b/src/Docfx.Dotnet/SymbolFormatter.cs
@@ -131,7 +131,7 @@ LinkItem ToLinkItem(SymbolDisplayPart part)
             if (symbol is null || part.Kind is SymbolDisplayPartKind.TypeParameterName)
                 return new() { DisplayName = part.ToString() };
 
-            if (symbol is INamedTypeSymbol {IsGenericType: true} type)
+            if (symbol is INamedTypeSymbol { IsGenericType: true } type)
                 symbol = type.ConstructedFrom;
 
             return new()
diff --git a/src/Docfx.Dotnet/SymbolHelper.cs b/src/Docfx.Dotnet/SymbolHelper.cs
index d49889a6a32..7d2113c6151 100644
--- a/src/Docfx.Dotnet/SymbolHelper.cs
+++ b/src/Docfx.Dotnet/SymbolHelper.cs
@@ -33,7 +33,7 @@ public static bool IsMember(this ISymbol symbol)
 
     public static bool IsClass(this ISymbol symbol)
     {
-        return symbol.Kind is SymbolKind.NamedType && symbol is INamedTypeSymbol {TypeKind: TypeKind.Class};
+        return symbol.Kind is SymbolKind.NamedType && symbol is INamedTypeSymbol { TypeKind: TypeKind.Class };
     }
 
     public static bool IsEnumMember(this ISymbol symbol)
diff --git a/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs b/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs
index d7ba0c49a09..ed54a5c4e88 100644
--- a/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs
+++ b/src/Docfx.Dotnet/SymbolUrlResolver.SourceLink.cs
@@ -18,7 +18,7 @@ namespace Docfx.Dotnet;
 
 partial class SymbolUrlResolver
 {
-    private static readonly ConditionalWeakTable s_sourceLinkProviders = new();
+    private static readonly ConditionalWeakTable s_sourceLinkProviders = [];
 
     public static string? GetPdbSourceLinkUrl(Compilation compilation, ISymbol symbol)
     {
diff --git a/src/Docfx.Dotnet/SymbolUrlResolver.cs b/src/Docfx.Dotnet/SymbolUrlResolver.cs
index 98fca2734af..62991f58c9f 100644
--- a/src/Docfx.Dotnet/SymbolUrlResolver.cs
+++ b/src/Docfx.Dotnet/SymbolUrlResolver.cs
@@ -16,6 +16,10 @@ enum SymbolUrlKind
 
 internal static partial class SymbolUrlResolver
 {
+    // Regex to match any character other than a word character(alphabet/numeric/underscore)
+    [GeneratedRegex(@"\W")]
+    private static partial Regex NonWordCharRegex();
+
     public static string? GetSymbolUrl(ISymbol symbol, Compilation compilation, MemberLayout memberLayout, SymbolUrlKind urlKind, HashSet allAssemblies, SymbolFilter filter)
     {
         // Reduce symbol into generic definitions
@@ -53,8 +57,8 @@ internal static partial class SymbolUrlResolver
             "!" => null,
             "N" or "T" => $"{VisitorHelper.PathFriendlyId(uid)}{ext}",
             "M" or "F" or "P" or "E" => memberLayout is MemberLayout.SeparatePages && !symbol.IsEnumMember()
-                ? $"{VisitorHelper.PathFriendlyId(VisitorHelper.GetOverloadId(symbol))}{ext}#{Regex.Replace(uid, @"\W", "_")}"
-                : $"{VisitorHelper.PathFriendlyId(VisitorHelper.GetId(symbol.ContainingType))}{ext}#{Regex.Replace(uid, @"\W", "_")}",
+                ? $"{VisitorHelper.PathFriendlyId(VisitorHelper.GetOverloadId(symbol))}{ext}#{NonWordCharRegex().Replace(uid, "_")}"
+                : $"{VisitorHelper.PathFriendlyId(VisitorHelper.GetId(symbol.ContainingType))}{ext}#{NonWordCharRegex().Replace(uid, "_")}",
             _ => throw new NotSupportedException($"Unknown comment ID format '{type}'"),
         };
     }
diff --git a/src/Docfx.Dotnet/YamlViewModelExtensions.cs b/src/Docfx.Dotnet/YamlViewModelExtensions.cs
index e1690b0bce4..5c910db7eb9 100644
--- a/src/Docfx.Dotnet/YamlViewModelExtensions.cs
+++ b/src/Docfx.Dotnet/YamlViewModelExtensions.cs
@@ -42,7 +42,7 @@ public static MetadataItem ShrinkToSimpleToc(this MetadataItem item)
         {
             foreach (var i in item.Items)
             {
-                shrinkedItem.Items ??= new List();
+                shrinkedItem.Items ??= [];
 
                 if (i.IsInvalid)
                 {
@@ -77,7 +77,7 @@ public static MetadataItem ShrinkToSimpleTocWithNamespaceNotEmpty(this MetadataI
             {
                 foreach (var i in item.Items)
                 {
-                    shrinkedItem.Items ??= new List();
+                    shrinkedItem.Items ??= [];
 
                     if (i.IsInvalid)
                     {
@@ -180,7 +180,7 @@ private static ReferenceViewModel ToReferenceViewModel(KeyValuePair 0})
+        if (model.Value.NameParts is { Count: > 0 })
         {
             result.Name = GetName(model.Value.NameParts, SyntaxLanguage.Default);
             var nameForCSharp = GetName(model.Value.NameParts, SyntaxLanguage.CSharp);
@@ -270,7 +270,7 @@ public static ItemViewModel ToItemViewModel(this MetadataItem model, ExtractMeta
             Attributes = model.Attributes,
         };
 
-        if (model.Parent is {Name: not null} && !model.Name.StartsWith(model.Parent.Name))
+        if (model.Parent is { Name: not null } && !model.Name.StartsWith(model.Parent.Name))
         {
             result.Id = model.Name.Substring(model.Name.LastIndexOf('.') + 1);
         }
@@ -330,7 +330,7 @@ public static SyntaxDetailViewModel ToSyntaxDetailViewModel(this SyntaxDetail mo
             TypeParameters = model.TypeParameters,
             Return = model.Return,
         };
-        if (model.Content is {Count: > 0})
+        if (model.Content is { Count: > 0 })
         {
             result.Content = model.Content.GetLanguageProperty(SyntaxLanguage.Default);
             var contentForCSharp = model.Content.GetLanguageProperty(SyntaxLanguage.CSharp);
@@ -379,7 +379,7 @@ public static TValue GetLanguageProperty(this SortedList 0})
+        if (model.Items is { Count: > 0 })
         {
             foreach (var item in model.Items)
             {
diff --git a/src/Docfx.Glob/FileGlob.cs b/src/Docfx.Glob/FileGlob.cs
index 2fd54a43982..3ce3e43cfd1 100644
--- a/src/Docfx.Glob/FileGlob.cs
+++ b/src/Docfx.Glob/FileGlob.cs
@@ -9,7 +9,7 @@ public static IEnumerable GetFiles(string cwd, IEnumerable patte
     {
         if (patterns == null)
         {
-            return Enumerable.Empty();
+            return [];
         }
 
         if (string.IsNullOrEmpty(cwd))
@@ -18,7 +18,7 @@ public static IEnumerable GetFiles(string cwd, IEnumerable patte
         }
         var globArray = patterns.Select(s => new GlobMatcher(s, options)).ToArray();
         var excludeGlobArray = excludePatterns == null ?
-            Array.Empty() :
+            [] :
             excludePatterns.Select(s => new GlobMatcher(s, options)).ToArray();
         return GetFilesCore(cwd, globArray, excludeGlobArray);
     }
diff --git a/src/Docfx.Glob/GlobMatcher.cs b/src/Docfx.Glob/GlobMatcher.cs
index 084e59e4e94..c1dc15a237a 100644
--- a/src/Docfx.Glob/GlobMatcher.cs
+++ b/src/Docfx.Glob/GlobMatcher.cs
@@ -12,7 +12,7 @@ public partial class GlobMatcher : IEquatable
 {
     #region Private fields
     private static readonly StringComparer Comparer = FilePathComparer.OSPlatformSensitiveStringComparer;
-    private static readonly string[] EmptyString = Array.Empty();
+    private static readonly string[] EmptyString = [];
     private const char NegateChar = '!';
     private const string GlobStar = "**";
     private const string ReplacerGroupName = "replacer";
@@ -120,7 +120,7 @@ private IEnumerable Compile(string pattern)
         if (Options.HasFlag(GlobMatcherOptions.AllowExpand))
         {
             globs = ExpandGroup(pattern, Options);
-            if (globs.Length == 0) return Enumerable.Empty();
+            if (globs.Length == 0) return [];
         }
         else
         {
@@ -558,8 +558,7 @@ public override GlobNode FinishLevel()
             }
             public override List Flatten()
             {
-                List result = new(1);
-                result.Add(_builder);
+                List result = [_builder];
                 return result;
             }
         }
@@ -569,7 +568,7 @@ public class ChoiceNode : GlobNode
             public ChoiceNode(GlobNode parentNode)
             : base(parentNode)
             {
-                _nodes = new List();
+                _nodes = [];
             }
             public override GlobNode AddChar(char c)
             {
@@ -594,7 +593,7 @@ public override GlobNode FinishLevel()
             }
             public override List Flatten()
             {
-                List result = new();
+                List result = [];
                 foreach (GlobNode node in _nodes)
                 {
                     foreach (StringBuilder builder in node.Flatten())
@@ -611,7 +610,7 @@ public class SequenceNode : GlobNode
             public SequenceNode(GlobNode parentNode)
             : base(parentNode)
             {
-                _nodes = new List();
+                _nodes = [];
             }
             public override GlobNode AddChar(char c)
             {
@@ -635,11 +634,10 @@ public override GlobNode FinishLevel()
             }
             public override List Flatten()
             {
-                List result = new();
-                result.Add(new StringBuilder());
+                List result = [new StringBuilder()];
                 foreach (GlobNode node in _nodes)
                 {
-                    List tmp = new();
+                    List tmp = [];
                     foreach (StringBuilder builder in node.Flatten())
                     {
                         foreach (StringBuilder sb in result)
diff --git a/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs b/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs
index 486ab2cc718..f3cda27bcb3 100644
--- a/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/Aggregator/TabGroupAggregator.cs
@@ -107,7 +107,7 @@ private static TabItemBlock CreateTabItem(
     private static Tuple ParseHeading(HeadingBlock block)
     {
         var child = block.Inline.FirstChild;
-        if (child is {NextSibling: null} and LinkInline link)
+        if (child is { NextSibling: null } and LinkInline link)
         {
             var m = HrefRegex().Match(link.Url);
             if (m.Success)
diff --git a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippet.cs b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippet.cs
index 0c9063a1ed8..d1397fec621 100644
--- a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippet.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippet.cs
@@ -111,7 +111,7 @@ public string ToAttributeString()
 
     public string GetHighlightLinesString()
     {
-        if (HighlightRanges != null && HighlightRanges.Any())
+        if (HighlightRanges != null && HighlightRanges.Count != 0)
         {
             return string.Join(',', HighlightRanges.Select(highlight =>
             {
diff --git a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippetExtractor.cs b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippetExtractor.cs
index 1053efc6f54..d03c7f5d636 100644
--- a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippetExtractor.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/CodeSnippetExtractor.cs
@@ -9,7 +9,7 @@ namespace Docfx.MarkdigEngine.Extensions;
 
 public partial class CodeSnippetExtractor
 {
-    [GeneratedRegex(@"^[\w\.-]+$", RegexOptions.IgnoreCase, "en-AU")]
+    [GeneratedRegex(@"^[\w\.-]+$", RegexOptions.IgnoreCase)]
     private static partial Regex TagnameFormat();
 
     private readonly string StartLineTemplate;
diff --git a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs
index 7cbd512a00d..dee29927b80 100644
--- a/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/CodeSnippet/HtmlCodeSnippetRenderer.cs
@@ -110,17 +110,17 @@ public class HtmlCodeSnippetRenderer : HtmlObjectRenderer
         { "vb", new string[] {"vbnet", "vbscript", "bas", "vbs", "vba" } }
     };
 
-    private static readonly Dictionary s_languageByFileExtension = new();
+    private static readonly Dictionary s_languageByFileExtension = [];
 
     // If we ever come across a language that has not been defined above, we shouldn't break the build.
     // We can at least try it with a default language, "C#" for now, and try and resolve the code snippet.
-    private static readonly HashSet s_defaultExtractors = new();
+    private static readonly HashSet s_defaultExtractors = [];
 
     // Language names and aliases follow http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html#language-names-and-aliases
     // Language file extensions follow https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
     // Currently only supports parts of the language names, aliases and extensions
     // Later we can move the repository's supported/custom language names, aliases, extensions and corresponding comments regexes to docfx build configuration
-    private static readonly Dictionary> s_languageExtractors = new();
+    private static readonly Dictionary> s_languageExtractors = [];
 
     private readonly MarkdownContext _context;
 
@@ -155,14 +155,14 @@ static void BuildFileExtensionLanguageMap()
         {
             foreach (var (language, aliases) in s_languageAlias.Select(i => (i.Key, i.Value)))
             {
-                Debug.Assert(!language.StartsWith("."));
+                Debug.Assert(!language.StartsWith('.'));
 
                 s_languageByFileExtension.Add(language, language);
                 s_languageByFileExtension.Add($".{language}", language);
 
                 foreach (var alias in aliases)
                 {
-                    Debug.Assert(!alias.StartsWith("."));
+                    Debug.Assert(!alias.StartsWith('.'));
 
                     s_languageByFileExtension.Add(alias, language);
                     s_languageByFileExtension.Add($".{alias}", language);
@@ -198,7 +198,7 @@ static void AddExtractorItem(string language, CodeSnippetExtractor extractor)
             }
             else
             {
-                s_languageExtractors[language] = new HashSet { extractor };
+                s_languageExtractors[language] = [extractor];
             }
         }
     }
@@ -299,22 +299,22 @@ public string GetContent(string content, CodeSnippet obj)
             var tagWithPrefix = TagPrefix + obj.TagName;
             foreach (var extractor in extractors)
             {
-                HashSet tagLines = new();
+                HashSet tagLines = [];
                 var tagToCodeRangeMapping = extractor.GetAllTags(allLines, ref tagLines);
                 if (tagToCodeRangeMapping.TryGetValue(obj.TagName, out var cr)
                     || tagToCodeRangeMapping.TryGetValue(tagWithPrefix, out cr))
                 {
-                    return GetCodeLines(allLines, obj, new List { cr }, tagLines);
+                    return GetCodeLines(allLines, obj, [cr], tagLines);
                 }
             }
         }
         else if (obj.BookMarkRange != null)
         {
-            return GetCodeLines(allLines, obj, new List { obj.BookMarkRange });
+            return GetCodeLines(allLines, obj, [obj.BookMarkRange]);
         }
         else if (obj.StartEndRange != null)
         {
-            return GetCodeLines(allLines, obj, new List { obj.StartEndRange });
+            return GetCodeLines(allLines, obj, [obj.StartEndRange]);
         }
         else if (obj.CodeRanges != null)
         {
@@ -322,7 +322,7 @@ public string GetContent(string content, CodeSnippet obj)
         }
         else
         {
-            return GetCodeLines(allLines, obj, new List { new() { Start = 0, End = allLines.Length } });
+            return GetCodeLines(allLines, obj, [new() { Start = 0, End = allLines.Length }]);
         }
 
         return string.Empty;
@@ -340,7 +340,7 @@ private static IEnumerable ReadAllLines(string content)
 
     private static string GetCodeLines(string[] allLines, CodeSnippet obj, List codeRanges, HashSet ignoreLines = null)
     {
-        List codeLines = new();
+        List codeLines = [];
         StringBuilder showCode = new();
         int commonIndent = int.MaxValue;
 
@@ -418,20 +418,6 @@ private static string CountAndReplaceIndentSpaces(string line, out int count)
         return sb.ToString();
     }
 
-    private static bool IsLineInRange(int lineNumber, List allCodeRanges)
-    {
-        if (allCodeRanges.Count == 0) return true;
-
-        for (int rangeNumber = 0; rangeNumber < allCodeRanges.Count; rangeNumber++)
-        {
-            var range = allCodeRanges[rangeNumber];
-            if (lineNumber >= range.Start && lineNumber <= range.End)
-                return true;
-        }
-
-        return false;
-    }
-
     private string GetWarning()
     {
         var warningTitle = _context.GetToken(WarningTitleId) ?? DefaultWarningTitle;
@@ -458,7 +444,7 @@ public static bool TryGetLineRanges(string query, out List codeRanges
                 return false;
             }
 
-            codeRanges ??= new List();
+            codeRanges ??= [];
 
             codeRanges.Add(codeRange);
         }
diff --git a/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs b/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs
index 2a47f838972..7a13261884c 100644
--- a/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/ExtensionsHelper.cs
@@ -253,7 +253,7 @@ private static bool MatchPath(ref StringSlice slice, ref string path)
 
         if (includedFilePath.Length >= 1 && includedFilePath.First() == '<' && slice.CurrentChar == '>')
         {
-            includedFilePath = includedFilePath.Substring(1, includedFilePath.Length - 1).Trim();
+            includedFilePath = includedFilePath.Substring(1).Trim();
         }
 
         if (slice.CurrentChar == ')')
diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs
index 87cf1a0d20a..8872302adc8 100644
--- a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs
@@ -4,7 +4,6 @@
 using System.Diagnostics;
 using System.Text.Json;
 using System.Text.Json.Nodes;
-using System.Text.Json.Serialization;
 
 #nullable enable
 
diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.NewtonsoftJson.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.NewtonsoftJson.cs
index 2b5b4b514d9..07e9ee6a4f5 100644
--- a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.NewtonsoftJson.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.NewtonsoftJson.cs
@@ -1,8 +1,8 @@
 // Licensed to the .NET Foundation under one or more agreements.
 // The .NET Foundation licenses this file to you under the MIT license.
 
-using Newtonsoft.Json.Linq;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 
 namespace Docfx.MarkdigEngine.Extensions;
 
@@ -41,7 +41,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
                         var name = prop.Name;
 
                         var options = prop.Value;
-                        if (options.Count() == 0)
+                        if (!options.Any())
                         {
                             return new MarkdigExtensionSetting(name);
                         }
diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.SystemTextJson.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.SystemTextJson.cs
index bd903601a1b..7444c6900ff 100644
--- a/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.SystemTextJson.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSettingConverter.SystemTextJson.cs
@@ -3,8 +3,6 @@
 
 using System.Text.Json;
 using System.Text.Json.Serialization;
-using System.Text.Json.Nodes;
-using System.Xml.Linq;
 
 namespace Docfx.MarkdigEngine.Extensions;
 
@@ -55,7 +53,7 @@ public override void Write(Utf8JsonWriter writer, MarkdigExtensionSetting value,
             if (value == null)
                 return;
 
-            var model = (MarkdigExtensionSetting)value;
+            var model = value;
 
             if (model.Options == null || !model.Options.HasValue)
             {
diff --git a/src/Docfx.MarkdigEngine.Extensions/MarkdownExtensions.cs b/src/Docfx.MarkdigEngine.Extensions/MarkdownExtensions.cs
index 1fe3f5e6c62..1d775204092 100644
--- a/src/Docfx.MarkdigEngine.Extensions/MarkdownExtensions.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/MarkdownExtensions.cs
@@ -59,7 +59,7 @@ public static MarkdownPipelineBuilder UseOptionalExtensions(
         this MarkdownPipelineBuilder pipeline,
         MarkdigExtensionSetting[] optionalExtensions)
     {
-        if (!optionalExtensions.Any())
+        if (optionalExtensions.Length == 0)
         {
             return pipeline;
         }
diff --git a/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs b/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs
index 3e8a92f5756..71bbc507a5c 100644
--- a/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/MonikerRange/MonikerRangeParser.cs
@@ -10,7 +10,7 @@ namespace Docfx.MarkdigEngine.Extensions;
 
 public class MonikerRangeParser : BlockParser
 {
-    private const string StartString = "moniker";
+    // private const string StartString = "moniker";
     private const string EndString = "moniker-end";
     private const char Colon = ':';
 
@@ -142,7 +142,7 @@ public override BlockState TryContinue(BlockProcessor processor, Block block)
     public override bool Close(BlockProcessor processor, Block block)
     {
         var monikerRange = (MonikerRangeBlock)block;
-        if (monikerRange is {Closed: false})
+        if (monikerRange is { Closed: false })
         {
             _context.LogWarning("invalid-moniker-range", $"No \"::: {EndString}\" found for \"{monikerRange.MonikerRange}\", MonikerRange does not end explicitly.", block);
         }
diff --git a/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs b/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs
index 5957c059df4..0f6154d6dca 100644
--- a/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/PlantUml/PlantUmlCodeBlockRenderer.cs
@@ -44,7 +44,7 @@ public PlantUmlCodeBlockRenderer(MarkdownContext context, PlantUmlOptions settin
 
     protected override void Write(HtmlRenderer renderer, CodeBlock obj)
     {
-        if (obj is FencedCodeBlock {Info: string info} fencedCodeBlock
+        if (obj is FencedCodeBlock { Info: string info } fencedCodeBlock
             && info.Equals("plantuml", StringComparison.OrdinalIgnoreCase))
         {
             IPlantUmlRenderer plantUmlRenderer = rendererFactory.CreateRenderer(_settings);
diff --git a/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteRender.cs b/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteRender.cs
index b5c19ad5073..cde5de55df3 100644
--- a/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteRender.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/QuoteSectionNote/QuoteSectionNoteRender.cs
@@ -2,7 +2,6 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 
 using System.Collections.ObjectModel;
-using System.Diagnostics;
 using System.Text.RegularExpressions;
 using System.Web;
 using Markdig.Renderers;
@@ -105,7 +104,7 @@ public static string FixUpLink(string link)
     {
         if (link.StartsWith("http:"))
         {
-            link = "https:" + link.Substring("http:".Length);
+            link = $"https:{link.AsSpan("http:".Length)}";
         }
         if (Uri.TryCreate(link, UriKind.Absolute, out Uri videoLink))
         {
diff --git a/src/Docfx.MarkdigEngine.Extensions/ResolveLink/ResolveLinkExtension.cs b/src/Docfx.MarkdigEngine.Extensions/ResolveLink/ResolveLinkExtension.cs
index 321d577d9ad..6eab26c3c14 100644
--- a/src/Docfx.MarkdigEngine.Extensions/ResolveLink/ResolveLinkExtension.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/ResolveLink/ResolveLinkExtension.cs
@@ -49,7 +49,7 @@ private void UpdateLinks(MarkdownObject markdownObject)
                 }
                 break;
 
-            case LeafBlock {Inline: not null} leafBlock:
+            case LeafBlock { Inline: not null } leafBlock:
                 foreach (var subInline in leafBlock.Inline)
                 {
                     UpdateLinks(subInline);
diff --git a/src/Docfx.MarkdigEngine.Extensions/Rewriter/MarkdownDocumentVisitor.cs b/src/Docfx.MarkdigEngine.Extensions/Rewriter/MarkdownDocumentVisitor.cs
index fa3e396666e..5d40f352a7d 100644
--- a/src/Docfx.MarkdigEngine.Extensions/Rewriter/MarkdownDocumentVisitor.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/Rewriter/MarkdownDocumentVisitor.cs
@@ -43,7 +43,7 @@ private void RewriteContainerBlock(ContainerBlock blocks)
         for (var i = 0; i < blocks.Count; i++)
         {
             var block = blocks[i];
-            if (block is LeafBlock {Inline: not null} leafBlock)
+            if (block is LeafBlock { Inline: not null } leafBlock)
             {
                 RewriteContainerInline(leafBlock.Inline);
             }
diff --git a/src/Docfx.MarkdigEngine.Extensions/TabGroup/ActiveAndVisibleRewriter.cs b/src/Docfx.MarkdigEngine.Extensions/TabGroup/ActiveAndVisibleRewriter.cs
index adce056fc14..04c4d8712f8 100644
--- a/src/Docfx.MarkdigEngine.Extensions/TabGroup/ActiveAndVisibleRewriter.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/TabGroup/ActiveAndVisibleRewriter.cs
@@ -10,7 +10,7 @@ namespace Docfx.MarkdigEngine.Extensions;
 public class ActiveAndVisibleRewriter : IMarkdownObjectRewriter
 {
     private readonly MarkdownContext _context;
-    private readonly List tabSelectionInfo = new();
+    private readonly List tabSelectionInfo = [];
 
     public ActiveAndVisibleRewriter(MarkdownContext context)
     {
diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs
index b8057c314ce..bf7d4efac61 100644
--- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/ImageExtension.cs
@@ -158,7 +158,7 @@ public bool Render(HtmlRenderer renderer, MarkdownObject obj, Action log
         {
             renderer.Write("");
 
-            if (tripleColonObj is ContainerBlock {LastChild: not null} block)
+            if (tripleColonObj is ContainerBlock { LastChild: not null } block)
             {
                 var inline = (block.LastChild as ParagraphBlock).Inline;
                 renderer.WriteChildren(inline);
diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs
index 69ed2936180..bc7b35ff8a1 100644
--- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/TripleColonBlockParser.cs
@@ -105,7 +105,7 @@ public override BlockState TryOpen(BlockProcessor processor)
     public override BlockState TryContinue(BlockProcessor processor, Block block)
     {
         var slice = processor.Line;
-        var colonBlock = (TripleColonBlock) block;
+        var colonBlock = (TripleColonBlock)block;
         var endingTripleColons = colonBlock.EndingTripleColons;
 
         Type type = ((TripleColonBlock)block).Extension.GetType();
diff --git a/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs b/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs
index cf6be57a68d..76900fae9bf 100644
--- a/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs
+++ b/src/Docfx.MarkdigEngine.Extensions/TripleColon/VideoExtension.cs
@@ -155,7 +155,7 @@ public bool Render(HtmlRenderer renderer, MarkdownObject markdownObject, Action<
             renderer.WriteLine("
"); renderer.Write($""); renderer.WriteLine("
"); - if (tripleColonObj is ContainerBlock {LastChild: not null} block) + if (tripleColonObj is ContainerBlock { LastChild: not null } block) { var inline = (block.LastChild as ParagraphBlock).Inline; renderer.WriteChildren(inline); diff --git a/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj b/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj index 659c1aa904c..d2944d33f2d 100644 --- a/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj +++ b/src/Docfx.MarkdigEngine/Docfx.MarkdigEngine.csproj @@ -2,7 +2,6 @@ - diff --git a/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs b/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs index 3a7ebcf566a..c62d0567248 100644 --- a/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs +++ b/src/Docfx.MarkdigEngine/MarkdigMarkdownService.cs @@ -18,14 +18,17 @@ public class MarkdigMarkdownService : IMarkdownService private readonly MarkdownServiceParameters _parameters; private readonly MarkdownContext _context; - private readonly Func _configureMarkdig; + + private readonly MarkdownPipeline markdownPipeline1; // isInline:true, multipleYamlHeader:true + private readonly MarkdownPipeline markdownPipeline2; // isInline:true, multipleYamlHeader:false + private readonly MarkdownPipeline markdownPipeline3; // isInline:false, multipleYamlHeader:true + private readonly MarkdownPipeline markdownPipeline4; // isInline:false, multipleYamlHeader:false public MarkdigMarkdownService( MarkdownServiceParameters parameters, Func configureMarkdig = null) { _parameters = parameters; - _configureMarkdig = configureMarkdig; _context = new MarkdownContext( key => CollectionExtensions.GetValueOrDefault(_parameters.Tokens, key), (code, message, origin, line) => Logger.LogInfo(message, null, InclusionContext.File.ToString(), line?.ToString(), code), @@ -35,6 +38,11 @@ public MarkdigMarkdownService( ReadFile, GetLink, GetImageLink); + + markdownPipeline1 = CreateMarkdownPipeline(configureMarkdig, true, true); + markdownPipeline2 = CreateMarkdownPipeline(configureMarkdig, true, false); + markdownPipeline3 = CreateMarkdownPipeline(configureMarkdig, false, true); + markdownPipeline4 = CreateMarkdownPipeline(configureMarkdig, false, false); } public MarkupResult Markup(string content, string filePath) @@ -47,7 +55,7 @@ public MarkupResult Markup(string content, string filePath, bool multipleYamlHea ArgumentNullException.ThrowIfNull(content); ArgumentException.ThrowIfNullOrEmpty(filePath); - var pipeline = CreateMarkdownPipeline(isInline: false, multipleYamlHeader); + var pipeline = GetOrCreateMarkdownPipeline(isInline: false, multipleYamlHeader); using (InclusionContext.PushFile((RelativePath)filePath)) { @@ -73,7 +81,7 @@ public MarkdownDocument Parse(string content, string filePath, bool isInline) throw new ArgumentException("file path can't be null or empty."); } - var pipeline = CreateMarkdownPipeline(isInline); + var pipeline = GetOrCreateMarkdownPipeline(isInline); using (InclusionContext.PushFile((RelativePath)filePath)) { @@ -98,7 +106,7 @@ public MarkupResult Render(MarkdownDocument document, bool isInline) throw new ArgumentNullException(nameof(document), "file path can't be found in AST."); } - var pipeline = CreateMarkdownPipeline(isInline); + var pipeline = GetOrCreateMarkdownPipeline(isInline); using (InclusionContext.PushFile((RelativePath)filePath)) { @@ -116,7 +124,18 @@ public MarkupResult Render(MarkdownDocument document, bool isInline) } } - private MarkdownPipeline CreateMarkdownPipeline(bool isInline, bool multipleYamlHeader = false) + private MarkdownPipeline GetOrCreateMarkdownPipeline(bool isInline, bool multipleYamlHeader = false) + { + return isInline + ? multipleYamlHeader + ? markdownPipeline1 // isInline:true, multipleYamlHeader:true + : markdownPipeline2 // isInline:true, multipleYamlHeader:false + : multipleYamlHeader + ? markdownPipeline3 // isInline:false, multipleYamlHeader:true + : markdownPipeline4; // isInline:false, multipleYamlHeader:false + } + + private MarkdownPipeline CreateMarkdownPipeline(Func configureMarkdig, bool isInline, bool multipleYamlHeader) { var enableSourceInfo = _parameters?.Extensions?.EnableSourceInfo ?? true; @@ -135,14 +154,14 @@ private MarkdownPipeline CreateMarkdownPipeline(bool isInline, bool multipleYaml builder.UseInlineOnly(); } - if (_parameters?.Extensions?.MarkdigExtensions is {Length: > 0} extensions) + if (_parameters?.Extensions?.MarkdigExtensions is { Length: > 0 } extensions) { builder.UseOptionalExtensions(extensions); } - if (_configureMarkdig != null) + if (configureMarkdig != null) { - builder = _configureMarkdig(builder); + builder = configureMarkdig(builder); } return builder.Build(); diff --git a/src/Docfx.Plugins/DefaultFileAbstractLayer.cs b/src/Docfx.Plugins/DefaultFileAbstractLayer.cs index 204f3562b17..37212d65a1c 100644 --- a/src/Docfx.Plugins/DefaultFileAbstractLayer.cs +++ b/src/Docfx.Plugins/DefaultFileAbstractLayer.cs @@ -5,7 +5,7 @@ namespace Docfx.Plugins; -public class DefaultFileAbstractLayer : IFileAbstractLayer +public sealed class DefaultFileAbstractLayer : IFileAbstractLayer { public IEnumerable GetAllInputFiles() { diff --git a/src/Docfx.Plugins/Docfx.Plugins.csproj b/src/Docfx.Plugins/Docfx.Plugins.csproj index ca14a7a0327..d17da4b9492 100644 --- a/src/Docfx.Plugins/Docfx.Plugins.csproj +++ b/src/Docfx.Plugins/Docfx.Plugins.csproj @@ -1,6 +1,5 @@ - diff --git a/src/Docfx.Plugins/DocumentExceptionExtensions.cs b/src/Docfx.Plugins/DocumentExceptionExtensions.cs index 6b2866a3b40..c06164972d3 100644 --- a/src/Docfx.Plugins/DocumentExceptionExtensions.cs +++ b/src/Docfx.Plugins/DocumentExceptionExtensions.cs @@ -72,11 +72,7 @@ public static void RunAll(this IEnumerable elements, Action< { ArgumentNullException.ThrowIfNull(elements); ArgumentNullException.ThrowIfNull(action); - - if (parallelism <= 0) - { - throw new ArgumentOutOfRangeException(nameof(parallelism)); - } + ArgumentOutOfRangeException.ThrowIfNegativeOrZero(parallelism); try { diff --git a/src/Docfx.Plugins/FileModel.cs b/src/Docfx.Plugins/FileModel.cs index 6c5b6e7adc6..c49cd10fe16 100644 --- a/src/Docfx.Plugins/FileModel.cs +++ b/src/Docfx.Plugins/FileModel.cs @@ -67,9 +67,9 @@ public string File public string Key { get; } - public ImmutableHashSet LinkToFiles { get; set; } = ImmutableHashSet.Empty; + public ImmutableHashSet LinkToFiles { get; set; } = []; - public ImmutableHashSet LinkToUids { get; set; } = ImmutableHashSet.Empty; + public ImmutableHashSet LinkToUids { get; set; } = []; public ImmutableDictionary> UidLinkSources { get; set; } = ImmutableDictionary>.Empty; diff --git a/src/Docfx.Plugins/GroupInfo.cs b/src/Docfx.Plugins/GroupInfo.cs index f1a2eaea0d5..46de030df40 100644 --- a/src/Docfx.Plugins/GroupInfo.cs +++ b/src/Docfx.Plugins/GroupInfo.cs @@ -9,5 +9,5 @@ public class GroupInfo public string Destination { get; set; } - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Plugins/Manifest.cs b/src/Docfx.Plugins/Manifest.cs index 729c8b853c6..3af14a535d6 100644 --- a/src/Docfx.Plugins/Manifest.cs +++ b/src/Docfx.Plugins/Manifest.cs @@ -27,7 +27,7 @@ public Manifest() { } [JsonProperty("files")] [JsonPropertyName("files")] - public List Files { get; init; } = new(); + public List Files { get; init; } = []; [JsonProperty("groups")] [JsonPropertyName("groups")] diff --git a/src/Docfx.Plugins/ManifestGroupInfo.cs b/src/Docfx.Plugins/ManifestGroupInfo.cs index 0bf3b2b5edf..c123eadf3c2 100644 --- a/src/Docfx.Plugins/ManifestGroupInfo.cs +++ b/src/Docfx.Plugins/ManifestGroupInfo.cs @@ -22,7 +22,7 @@ public class ManifestGroupInfo [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; // Default constructor for System.Text.Json deserialization public ManifestGroupInfo() { } diff --git a/src/Docfx.Plugins/ManifestItem.cs b/src/Docfx.Plugins/ManifestItem.cs index 003278e7a7a..8f684435026 100644 --- a/src/Docfx.Plugins/ManifestItem.cs +++ b/src/Docfx.Plugins/ManifestItem.cs @@ -18,7 +18,7 @@ public class ManifestItem [JsonProperty("output")] [JsonPropertyName("output")] - public Dictionary Output { get; init; } = new(); + public Dictionary Output { get; init; } = []; [JsonProperty("version")] [JsonPropertyName("version")] @@ -30,5 +30,5 @@ public class ManifestItem [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Plugins/OutputFileInfo.cs b/src/Docfx.Plugins/OutputFileInfo.cs index 3779d0357e5..ad4c0e8bbda 100644 --- a/src/Docfx.Plugins/OutputFileInfo.cs +++ b/src/Docfx.Plugins/OutputFileInfo.cs @@ -18,5 +18,5 @@ public class OutputFileInfo [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Plugins/TreeItem.cs b/src/Docfx.Plugins/TreeItem.cs index fa53c634788..302c6c691a2 100644 --- a/src/Docfx.Plugins/TreeItem.cs +++ b/src/Docfx.Plugins/TreeItem.cs @@ -14,5 +14,5 @@ public class TreeItem [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/src/Docfx.Plugins/XRefSpec.cs b/src/Docfx.Plugins/XRefSpec.cs index 7fad3792ed8..7f20872794f 100644 --- a/src/Docfx.Plugins/XRefSpec.cs +++ b/src/Docfx.Plugins/XRefSpec.cs @@ -17,7 +17,7 @@ public sealed class XRefSpec : IDictionary public XRefSpec() { - _dict = new Dictionary(); + _dict = []; } public XRefSpec(IDictionary dictionary) diff --git a/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj b/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj index 4fdad984229..fa53905d37c 100644 --- a/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj +++ b/src/Docfx.YamlSerialization/Docfx.YamlSerialization.csproj @@ -1,4 +1,8 @@ + + enable + + diff --git a/src/Docfx.YamlSerialization/ExtensibleMemberAttribute.cs b/src/Docfx.YamlSerialization/ExtensibleMemberAttribute.cs index 13c1eabe81a..f6d101faa74 100644 --- a/src/Docfx.YamlSerialization/ExtensibleMemberAttribute.cs +++ b/src/Docfx.YamlSerialization/ExtensibleMemberAttribute.cs @@ -9,12 +9,12 @@ public sealed class ExtensibleMemberAttribute : Attribute public string Prefix { get; } public ExtensibleMemberAttribute() - : this(null) + : this(string.Empty) { } public ExtensibleMemberAttribute(string prefix) { - Prefix = prefix ?? string.Empty; + Prefix = prefix; } } diff --git a/src/Docfx.YamlSerialization/Helpers/ReflectionExtensions.cs b/src/Docfx.YamlSerialization/Helpers/ReflectionExtensions.cs index a60a1924d29..b5b3ff5d366 100644 --- a/src/Docfx.YamlSerialization/Helpers/ReflectionExtensions.cs +++ b/src/Docfx.YamlSerialization/Helpers/ReflectionExtensions.cs @@ -11,12 +11,18 @@ internal static class ReflectionExtensions /// Determines whether the specified type has a default constructor. ///
/// The type. + /// Allow private constructor. /// /// true if the type has a default constructor; otherwise, false. /// - public static bool HasDefaultConstructor(this Type type) + public static bool HasDefaultConstructor(this Type type, bool allowPrivateConstructors) { - return type.IsValueType || type.GetConstructor(BindingFlags.Public | BindingFlags.Instance, null, Type.EmptyTypes, null) != null; + var bindingFlags = BindingFlags.Public | BindingFlags.Instance; + if (allowPrivateConstructors) + { + bindingFlags |= BindingFlags.NonPublic; + } + return type.IsValueType || type.GetConstructor(bindingFlags, null, Type.EmptyTypes, null) != null; } public static IEnumerable GetPublicProperties(this Type type) diff --git a/src/Docfx.YamlSerialization/Helpers/ReflectionUtility.cs b/src/Docfx.YamlSerialization/Helpers/ReflectionUtility.cs index 6c36e33d24b..da63545b1d6 100644 --- a/src/Docfx.YamlSerialization/Helpers/ReflectionUtility.cs +++ b/src/Docfx.YamlSerialization/Helpers/ReflectionUtility.cs @@ -5,7 +5,7 @@ namespace Docfx.YamlSerialization.Helpers; internal static class ReflectionUtility { - public static Type GetImplementedGenericInterface(Type type, Type genericInterfaceType) + public static Type? GetImplementedGenericInterface(Type type, Type genericInterfaceType) { foreach (var interfaceType in GetImplementedInterfaces(type)) { diff --git a/src/Docfx.YamlSerialization/Helpers/TypeConverterCache.cs b/src/Docfx.YamlSerialization/Helpers/TypeConverterCache.cs new file mode 100644 index 00000000000..bbdcb2e2b83 --- /dev/null +++ b/src/Docfx.YamlSerialization/Helpers/TypeConverterCache.cs @@ -0,0 +1,83 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections.Concurrent; +using System.Diagnostics.CodeAnalysis; +using YamlDotNet.Serialization; + +namespace Docfx.YamlSerialization.Helpers; + +/// +/// A cache / map for instances. +/// +/// +/// This class is copied from following YamlDotNet implementation. +/// https://github.com/aaubry/YamlDotNet/blob/master/YamlDotNet/Serialization/Utilities/TypeConverterCache.cs +/// +internal sealed class TypeConverterCache +{ + private readonly IYamlTypeConverter[] typeConverters; + private readonly ConcurrentDictionary cache = new(); + + public TypeConverterCache(IEnumerable? typeConverters) + : this(typeConverters?.ToArray() ?? []) + { + } + + public TypeConverterCache(IYamlTypeConverter[] typeConverters) + { + this.typeConverters = typeConverters; + } + + /// + /// Returns the first that accepts the given type. + /// + /// The to lookup. + /// The that accepts this type or if no converter is found. + /// if a type converter was found; otherwise. + public bool TryGetConverterForType(Type type, [NotNullWhen(true)] out IYamlTypeConverter? typeConverter) + { + var result = cache.GetOrAdd(type, static (t, tc) => LookupTypeConverter(t, tc), typeConverters); + + typeConverter = result.TypeConverter; + return result.HasMatch; + } + + /// + /// Returns the of the given type. + /// + /// The type of the converter. + /// The of the given type. + /// If no type converter of the given type is found. + /// + /// Note that this method searches on the type of the itself. If you want to find a type converter + /// that accepts a given , use instead. + /// + public IYamlTypeConverter GetConverterByType(Type converter) + { + // Intentially avoids LINQ as this is on a hot path + foreach (var typeConverter in typeConverters) + { + if (typeConverter.GetType() == converter) + { + return typeConverter; + } + } + + throw new ArgumentException($"{nameof(IYamlTypeConverter)} of type {converter.FullName} not found", nameof(converter)); + } + + private static (bool HasMatch, IYamlTypeConverter? TypeConverter) LookupTypeConverter(Type type, IYamlTypeConverter[] typeConverters) + { + // Intentially avoids LINQ as this is on a hot path + foreach (var typeConverter in typeConverters) + { + if (typeConverter.Accepts(type)) + { + return (true, typeConverter); + } + } + + return (false, null); + } +} diff --git a/src/Docfx.YamlSerialization/NodeDeserializers/EmitArrayNodeDeserializer.cs b/src/Docfx.YamlSerialization/NodeDeserializers/EmitArrayNodeDeserializer.cs index 513d15c718e..7f6fc724e95 100644 --- a/src/Docfx.YamlSerialization/NodeDeserializers/EmitArrayNodeDeserializer.cs +++ b/src/Docfx.YamlSerialization/NodeDeserializers/EmitArrayNodeDeserializer.cs @@ -12,12 +12,22 @@ namespace Docfx.YamlSerialization.NodeDeserializers; public class EmitArrayNodeDeserializer : INodeDeserializer { + private readonly INamingConvention _enumNamingConvention; + private readonly ITypeInspector _typeDescriptor; + private static readonly MethodInfo DeserializeHelperMethod = - typeof(EmitArrayNodeDeserializer).GetMethod(nameof(DeserializeHelper)); - private static readonly ConcurrentDictionary, object>> _funcCache = + typeof(EmitArrayNodeDeserializer).GetMethod(nameof(DeserializeHelper))!; + + private static readonly ConcurrentDictionary, INamingConvention, ITypeInspector, object?>> _funcCache = new(); - bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object value) + public EmitArrayNodeDeserializer(INamingConvention enumNamingConvention, ITypeInspector typeDescriptor) + { + _enumNamingConvention = enumNamingConvention; + _typeDescriptor = typeDescriptor; + } + + bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer) { if (!expectedType.IsArray) { @@ -26,27 +36,44 @@ bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func(IParser reader, Type expectedType, Func nestedObjectDeserializer) + public static TItem[] DeserializeHelper( + IParser reader, + Type expectedType, + Func nestedObjectDeserializer, + INamingConvention enumNamingConvention, + ITypeInspector typeDescriptor) { var items = new List(); - EmitGenericCollectionNodeDeserializer.DeserializeHelper(reader, expectedType, nestedObjectDeserializer, items); + EmitGenericCollectionNodeDeserializer.DeserializeHelper(reader, expectedType, nestedObjectDeserializer, items, enumNamingConvention, typeDescriptor); return items.ToArray(); } - private static Func, object> AddItem(Type expectedType) + private static Func, INamingConvention, ITypeInspector, object?> AddItem(Type expectedType) { - var dm = new DynamicMethod(string.Empty, typeof(object), [typeof(IParser), typeof(Type), typeof(Func)]); + var dm = new DynamicMethod( + string.Empty, + returnType: typeof(object), + parameterTypes: + [ + typeof(IParser), // reader + typeof(Type), // expectedType + typeof(Func), // nestedObjectDeserializer + typeof(INamingConvention), // enumNamingConvention + typeof(ITypeInspector), // typeDescriptor + ]); var il = dm.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Ldarg_2); - il.Emit(OpCodes.Call, DeserializeHelperMethod.MakeGenericMethod(expectedType.GetElementType())); + il.Emit(OpCodes.Ldarg_3); + il.Emit(OpCodes.Ldarg_S, (byte)4); + il.Emit(OpCodes.Call, DeserializeHelperMethod.MakeGenericMethod(expectedType.GetElementType()!)); il.Emit(OpCodes.Ret); - return (Func, object>)dm.CreateDelegate(typeof(Func, object>)); + return (Func, INamingConvention, ITypeInspector, object?>)dm.CreateDelegate(typeof(Func, INamingConvention, ITypeInspector, object?>)); } } diff --git a/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericCollectionNodeDeserializer.cs b/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericCollectionNodeDeserializer.cs index 1863ba70ba9..e1a8f0a68df 100644 --- a/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericCollectionNodeDeserializer.cs +++ b/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericCollectionNodeDeserializer.cs @@ -1,13 +1,13 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Concurrent; using System.Reflection; using System.Reflection.Emit; using Docfx.YamlSerialization.Helpers; using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Serialization; -using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.Utilities; using EditorBrowsable = System.ComponentModel.EditorBrowsableAttribute; using EditorBrowsableState = System.ComponentModel.EditorBrowsableState; @@ -17,21 +17,25 @@ namespace Docfx.YamlSerialization.NodeDeserializers; public class EmitGenericCollectionNodeDeserializer : INodeDeserializer { private static readonly MethodInfo DeserializeHelperMethod = - typeof(EmitGenericCollectionNodeDeserializer).GetMethod(nameof(DeserializeHelper)); + typeof(EmitGenericCollectionNodeDeserializer).GetMethod(nameof(DeserializeHelper))!; private readonly IObjectFactory _objectFactory; - private readonly Dictionary _gpCache = + private readonly INamingConvention _enumNamingConvention; + private readonly ITypeInspector _typeDescriptor; + private readonly ConcurrentDictionary _gpCache = new(); - private readonly Dictionary, object>> _actionCache = + private readonly ConcurrentDictionary, object?, INamingConvention, ITypeInspector>> _actionCache = new(); - public EmitGenericCollectionNodeDeserializer(IObjectFactory objectFactory) + public EmitGenericCollectionNodeDeserializer(IObjectFactory objectFactory, INamingConvention enumNamingConvention, ITypeInspector typeDescriptor) { _objectFactory = objectFactory; + _enumNamingConvention = enumNamingConvention; + _typeDescriptor = typeDescriptor; } - bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object value) + bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer) { - if (!_gpCache.TryGetValue(expectedType, out Type gp)) + if (!_gpCache.TryGetValue(expectedType, out var gp)) { var collectionType = ReflectionUtility.GetImplementedGenericInterface(expectedType, typeof(ICollection<>)); if (collectionType != null) @@ -57,44 +61,62 @@ bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func), typeof(object)]); + var dm = new DynamicMethod( + string.Empty, + returnType: typeof(void), + [ + typeof(IParser), + typeof(Type), + typeof(Func), + typeof(object), + typeof(INamingConvention), + typeof(ITypeInspector) + ]); + var il = dm.GetILGenerator(); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Ldarg_2); - il.Emit(OpCodes.Ldarg_3); + il.Emit(OpCodes.Ldarg_0); // reader + il.Emit(OpCodes.Ldarg_1); // expectedType + il.Emit(OpCodes.Ldarg_2); // nestedObjectDeserializer + il.Emit(OpCodes.Ldarg_3); // result il.Emit(OpCodes.Castclass, typeof(ICollection<>).MakeGenericType(gp)); + il.Emit(OpCodes.Ldarg_S, (byte)4); // enumNamingConvention + il.Emit(OpCodes.Ldarg_S, (byte)5); // typeDescriptor il.Emit(OpCodes.Call, DeserializeHelperMethod.MakeGenericMethod(gp)); il.Emit(OpCodes.Ret); - action = (Action, object>)dm.CreateDelegate(typeof(Action, object>)); + action = (Action, object?, INamingConvention, ITypeInspector>)dm.CreateDelegate(typeof(Action, object?, INamingConvention, ITypeInspector>)); _actionCache[gp] = action; } - action(reader, expectedType, nestedObjectDeserializer, value); + action(reader, expectedType, nestedObjectDeserializer, value, _enumNamingConvention, _typeDescriptor); return true; } [EditorBrowsable(EditorBrowsableState.Never)] - public static void DeserializeHelper(IParser reader, Type expectedType, Func nestedObjectDeserializer, ICollection result) + public static void DeserializeHelper( + IParser reader, + Type expectedType, + Func nestedObjectDeserializer, + ICollection result, + INamingConvention enumNamingConvention, + ITypeInspector typeDescriptor) { reader.Consume(); while (!reader.Accept(out _)) { - var current = reader.Current; - var value = nestedObjectDeserializer(reader, typeof(TItem)); if (value is not IValuePromise promise) { - result.Add(TypeConverter.ChangeType(value, NullNamingConvention.Instance)); + result.Add(TypeConverter.ChangeType(value, enumNamingConvention, typeDescriptor)); } else if (result is IList list) { var index = list.Count; - result.Add(default); - promise.ValueAvailable += v => list[index] = TypeConverter.ChangeType(v, NullNamingConvention.Instance); + result.Add(default!); + promise.ValueAvailable += v => list[index] = TypeConverter.ChangeType(v, enumNamingConvention, typeDescriptor); } else { + var current = reader.Current!; throw new ForwardAnchorNotSupportedException( current.Start, current.End, diff --git a/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericDictionaryNodeDeserializer.cs b/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericDictionaryNodeDeserializer.cs index 4094f4d174d..04995317aae 100644 --- a/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericDictionaryNodeDeserializer.cs +++ b/src/Docfx.YamlSerialization/NodeDeserializers/EmitGenericDictionaryNodeDeserializer.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Concurrent; using System.ComponentModel; using System.Reflection; using System.Reflection.Emit; @@ -14,21 +15,19 @@ namespace Docfx.YamlSerialization.NodeDeserializers; public class EmitGenericDictionaryNodeDeserializer : INodeDeserializer { private static readonly MethodInfo DeserializeHelperMethod = - typeof(EmitGenericDictionaryNodeDeserializer).GetMethod(nameof(DeserializeHelper)); + typeof(EmitGenericDictionaryNodeDeserializer).GetMethod(nameof(DeserializeHelper))!; private readonly IObjectFactory _objectFactory; - private readonly Dictionary _gpCache = - new(); - private readonly Dictionary, Action, object>> _actionCache = - new(); + private readonly ConcurrentDictionary _gpCache = []; + private readonly ConcurrentDictionary, Action, object?>> _actionCache = []; public EmitGenericDictionaryNodeDeserializer(IObjectFactory objectFactory) { _objectFactory = objectFactory; } - bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object value) + bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer) { - if (!_gpCache.TryGetValue(expectedType, out Type[] gp)) + if (!_gpCache.TryGetValue(expectedType, out var gp)) { var dictionaryType = ReflectionUtility.GetImplementedGenericInterface(expectedType, typeof(IDictionary<,>)); if (dictionaryType != null) @@ -67,7 +66,7 @@ bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func).MakeGenericType(gp)); il.Emit(OpCodes.Call, DeserializeHelperMethod.MakeGenericMethod(gp)); il.Emit(OpCodes.Ret); - action = (Action, object>)dm.CreateDelegate(typeof(Action, object>)); + action = (Action, object?>)dm.CreateDelegate(typeof(Action, object?>)); _actionCache[cacheKey] = action; } action(reader, expectedType, nestedObjectDeserializer, value); @@ -78,7 +77,7 @@ bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func(IParser reader, Type expectedType, Func nestedObjectDeserializer, IDictionary result) + public static void DeserializeHelper(IParser reader, Type expectedType, Func nestedObjectDeserializer, IDictionary result) { while (!reader.Accept(out _)) { @@ -92,12 +91,12 @@ public static void DeserializeHelper(IParser reader, Type expected if (valuePromise == null) { // Happy path: both key and value are known - result[(TKey)key] = (TValue)value; + result[(TKey)key!] = (TValue)value!; } else { // Key is known, value is pending - valuePromise.ValueAvailable += v => result[(TKey)key] = (TValue)v; + valuePromise.ValueAvailable += v => result[(TKey)key!] = (TValue)v!; } } else @@ -105,7 +104,7 @@ public static void DeserializeHelper(IParser reader, Type expected if (valuePromise == null) { // Key is pending, value is known - keyPromise.ValueAvailable += v => result[(TKey)v] = (TValue)value; + keyPromise.ValueAvailable += v => result[(TKey)v!] = (TValue)value!; } else { @@ -116,7 +115,7 @@ public static void DeserializeHelper(IParser reader, Type expected { if (hasFirstPart) { - result[(TKey)v] = (TValue)value; + result[(TKey)v!] = (TValue)value!; } else { @@ -129,7 +128,7 @@ public static void DeserializeHelper(IParser reader, Type expected { if (hasFirstPart) { - result[(TKey)key] = (TValue)v; + result[(TKey)key] = (TValue)v!; } else { diff --git a/src/Docfx.YamlSerialization/NodeDeserializers/ExtensibleObjectNodeDeserializer.cs b/src/Docfx.YamlSerialization/NodeDeserializers/ExtensibleObjectNodeDeserializer.cs index 0e0c4802005..c883079bcb4 100644 --- a/src/Docfx.YamlSerialization/NodeDeserializers/ExtensibleObjectNodeDeserializer.cs +++ b/src/Docfx.YamlSerialization/NodeDeserializers/ExtensibleObjectNodeDeserializer.cs @@ -4,7 +4,6 @@ using YamlDotNet.Core; using YamlDotNet.Core.Events; using YamlDotNet.Serialization; -using YamlDotNet.Serialization.NamingConventions; using YamlDotNet.Serialization.Utilities; namespace Docfx.YamlSerialization.NodeDeserializers; @@ -14,15 +13,19 @@ public sealed class ExtensibleObjectNodeDeserializer : INodeDeserializer private readonly IObjectFactory _objectFactory; private readonly ITypeInspector _typeDescriptor; private readonly bool _ignoreUnmatched; + private readonly bool _caseInsensitivePropertyMatching; + private readonly INamingConvention _enumNamingConvention; - public ExtensibleObjectNodeDeserializer(IObjectFactory objectFactory, ITypeInspector typeDescriptor, bool ignoreUnmatched) + public ExtensibleObjectNodeDeserializer(IObjectFactory objectFactory, ITypeInspector typeDescriptor, INamingConvention enumNamingConvention, bool ignoreUnmatched, bool caseInsensitivePropertyMatching) { _objectFactory = objectFactory; _typeDescriptor = typeDescriptor; + _enumNamingConvention = enumNamingConvention; _ignoreUnmatched = ignoreUnmatched; + _caseInsensitivePropertyMatching = caseInsensitivePropertyMatching; } - bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object value) + bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func nestedObjectDeserializer, out object? value, ObjectDeserializer rootDeserializer) { if (!reader.TryConsume(out _)) { @@ -34,7 +37,7 @@ bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func(out _)) { var propertyName = reader.Consume(); - var property = _typeDescriptor.GetProperty(expectedType, value, propertyName.Value, _ignoreUnmatched); + var property = _typeDescriptor.GetProperty(expectedType, value, propertyName.Value, _ignoreUnmatched, _caseInsensitivePropertyMatching); if (property == null) { reader.SkipThisAndNestedEvents(); @@ -44,7 +47,7 @@ bool INodeDeserializer.Deserialize(IParser reader, Type expectedType, Func { - var convertedValue = TypeConverter.ChangeType(v, property.Type, NullNamingConvention.Instance); + var convertedValue = TypeConverter.ChangeType(v, property.Type, _enumNamingConvention, _typeDescriptor); property.Write(valueRef, convertedValue); }; } diff --git a/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs b/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs index 8e7293e5781..30115993df1 100644 --- a/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs +++ b/src/Docfx.YamlSerialization/NodeTypeResolvers/ScalarYamlNodeTypeResolver.cs @@ -9,11 +9,11 @@ namespace Docfx.YamlSerialization.NodeTypeResolvers; internal sealed class ScalarYamlNodeTypeResolver : INodeTypeResolver { - bool INodeTypeResolver.Resolve(NodeEvent nodeEvent, ref Type currentType) + bool INodeTypeResolver.Resolve(NodeEvent? nodeEvent, ref Type currentType) { if (currentType == typeof(string) || currentType == typeof(object)) { - if (nodeEvent is Scalar {IsPlainImplicit: true} scalar) + if (nodeEvent is Scalar { IsPlainImplicit: true } scalar) { if (Regexes.BooleanLike().IsMatch(scalar.Value)) { diff --git a/src/Docfx.YamlSerialization/ObjectDescriptors/BetterObjectDescriptor.cs b/src/Docfx.YamlSerialization/ObjectDescriptors/BetterObjectDescriptor.cs index 0cde707a7b8..93e5f2a1d02 100644 --- a/src/Docfx.YamlSerialization/ObjectDescriptors/BetterObjectDescriptor.cs +++ b/src/Docfx.YamlSerialization/ObjectDescriptors/BetterObjectDescriptor.cs @@ -9,21 +9,21 @@ namespace Docfx.YamlSerialization.ObjectDescriptors; public class BetterObjectDescriptor : IObjectDescriptor { - public BetterObjectDescriptor(object value, Type type, Type staticType) + public BetterObjectDescriptor(object? value, Type type, Type staticType) : this(value, type, staticType, ScalarStyle.Any) { } - public BetterObjectDescriptor(object value, Type type, Type staticType, ScalarStyle scalarStyle) + public BetterObjectDescriptor(object? value, Type type, Type staticType, ScalarStyle scalarStyle) { Value = value; Type = type; StaticType = staticType; ScalarStyle = scalarStyle == ScalarStyle.Any && NeedQuote(value) ? ScalarStyle.DoubleQuoted : scalarStyle; - static bool NeedQuote(object val) + static bool NeedQuote(object? val) { - if (val is not string s) + if (val is not string s || s == null) return false; return Regexes.BooleanLike().IsMatch(s) @@ -42,5 +42,5 @@ static bool NeedQuote(object val) public Type Type { get; } - public object Value { get; } + public object? Value { get; } } diff --git a/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs b/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs index 300a7cf9cbb..486d16ce8eb 100644 --- a/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs +++ b/src/Docfx.YamlSerialization/ObjectFactories/DefaultEmitObjectFactory.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Concurrent; using System.Reflection; using System.Reflection.Emit; @@ -10,15 +11,15 @@ namespace Docfx.YamlSerialization.ObjectFactories; public class DefaultEmitObjectFactory : ObjectFactoryBase { - private readonly Dictionary> _cache = new(); + private readonly ConcurrentDictionary> _cache = []; private static Type[] EmptyTypes => Type.EmptyTypes; public override object Create(Type type) { - if (!_cache.TryGetValue(type, out Func func)) + if (!_cache.TryGetValue(type, out var func)) { var realType = type; - if (type is {IsInterface: true, IsGenericType: true}) + if (type is { IsInterface: true, IsGenericType: true }) { var def = type.GetGenericTypeDefinition(); var args = type.GetGenericArguments(); @@ -46,7 +47,12 @@ public override object Create(Type type) { func = CreateValueTypeFactory(type); } - _cache[type] = func; + else + { + throw new InvalidOperationException($"Failed to gets type instance create func for type: {type.FullName}."); + } + + _cache[type] = func!; } return func(); } @@ -56,7 +62,7 @@ private static Func CreateReferenceTypeFactory(ConstructorInfo ctor) var dm = new DynamicMethod(string.Empty, typeof(object), EmptyTypes); var il = dm.GetILGenerator(); il.Emit(OpCodes.Newobj, ctor); - if (ctor.DeclaringType.IsValueType) + if (ctor.DeclaringType!.IsValueType) { il.Emit(OpCodes.Box, ctor.DeclaringType); } diff --git a/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/FullObjectGraphTraversalStrategy.cs b/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/FullObjectGraphTraversalStrategy.cs index 8037ffaac46..cae4ca6e4fb 100644 --- a/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/FullObjectGraphTraversalStrategy.cs +++ b/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/FullObjectGraphTraversalStrategy.cs @@ -2,12 +2,14 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; +using System.Collections.Concurrent; using System.ComponentModel; -using System.Globalization; +using System.Diagnostics; using System.Reflection; using System.Reflection.Emit; -using Docfx.YamlSerialization.Helpers; +using System.Text; using Docfx.YamlSerialization.ObjectDescriptors; +using YamlDotNet.Core; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; using IObjectGraphVisitor = System.Object; @@ -22,157 +24,224 @@ namespace Docfx.YamlSerialization.ObjectGraphTraversalStrategies; public class FullObjectGraphTraversalStrategy : IObjectGraphTraversalStrategy { private static MethodInfo TraverseGenericDictionaryHelperMethod { get; } = - typeof(FullObjectGraphTraversalStrategy).GetMethod(nameof(TraverseGenericDictionaryHelper)); - protected YamlSerializer Serializer { get; } + typeof(FullObjectGraphTraversalStrategy).GetMethod(nameof(TraverseGenericDictionaryHelper))!; + private readonly int _maxRecursion; private readonly ITypeInspector _typeDescriptor; private readonly ITypeResolver _typeResolver; private readonly INamingConvention _namingConvention; - private readonly Dictionary, Action> _behaviorCache = - new(); - private readonly Dictionary, Action> _traverseGenericDictionaryCache = - new(); + private readonly IObjectFactory _objectFactory; - public FullObjectGraphTraversalStrategy(YamlSerializer serializer, ITypeInspector typeDescriptor, ITypeResolver typeResolver, int maxRecursion, INamingConvention namingConvention) - { - if (maxRecursion <= 0) - { - throw new ArgumentOutOfRangeException(nameof(maxRecursion), maxRecursion, "maxRecursion must be greater than 1"); - } + // private readonly Dictionary, Action, ObjectSerializer>> _behaviorCache = new(); + private readonly ConcurrentDictionary, Action, ObjectSerializer>> _traverseGenericDictionaryCache = new(); + + protected YamlSerializer Serializer { get; } - ArgumentNullException.ThrowIfNull(typeDescriptor); - ArgumentNullException.ThrowIfNull(typeResolver); + public FullObjectGraphTraversalStrategy(YamlSerializer serializer, ITypeInspector typeDescriptor, ITypeResolver typeResolver, int maxRecursion, INamingConvention namingConvention, IObjectFactory objectFactory) + { + ArgumentOutOfRangeException.ThrowIfNegativeOrZero(maxRecursion); Serializer = serializer; + _typeDescriptor = typeDescriptor; _typeResolver = typeResolver; + _maxRecursion = maxRecursion; _namingConvention = namingConvention; + _objectFactory = objectFactory; } - void IObjectGraphTraversalStrategy.Traverse(IObjectDescriptor graph, IObjectGraphVisitor visitor, TContext context) + void IObjectGraphTraversalStrategy.Traverse(IObjectDescriptor graph, IObjectGraphVisitor visitor, TContext context, ObjectSerializer serializer) { - Traverse(graph, visitor, 0, context); + Traverse(null, "", graph, visitor, context, new Stack(_maxRecursion), serializer); } - protected virtual void Traverse(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth, TContext context) + protected virtual void Traverse(IPropertyDescriptor? propertyDescriptor, object name, IObjectDescriptor value, IObjectGraphVisitor visitor, TContext context, Stack path, ObjectSerializer serializer) { - if (++currentDepth > _maxRecursion) + if (path.Count >= _maxRecursion) { - throw new InvalidOperationException("Too much recursion when traversing the object graph"); + var message = new StringBuilder(); + message.AppendLine("Too much recursion when traversing the object graph."); + message.AppendLine("The path to reach this recursion was:"); + + var lines = new Stack>(path.Count); + var maxNameLength = 0; + foreach (var segment in path) + { + var segmentName = segment.Name?.ToString() ?? string.Empty; + maxNameLength = Math.Max(maxNameLength, segmentName.Length); + lines.Push(new KeyValuePair(segmentName, segment.Value.Type.FullName!)); + } + + foreach (var line in lines) + { + message + .Append(" -> ") + .Append(line.Key.PadRight(maxNameLength)) + .Append(" [") + .Append(line.Value) + .AppendLine("]"); + } + + throw new MaximumRecursionLevelReachedException(message.ToString()); } - if (!visitor.Enter(value, context)) + if (!visitor.Enter(propertyDescriptor, value, context, serializer)) { return; } - var typeCode = Type.GetTypeCode(value.Type); - switch (typeCode) + path.Push(new ObjectPathSegment(name, value)); + + try { - case TypeCode.Boolean: - case TypeCode.Byte: - case TypeCode.Int16: - case TypeCode.Int32: - case TypeCode.Int64: - case TypeCode.SByte: - case TypeCode.UInt16: - case TypeCode.UInt32: - case TypeCode.UInt64: - case TypeCode.Single: - case TypeCode.Double: - case TypeCode.Decimal: - case TypeCode.String: - case TypeCode.Char: - case TypeCode.DateTime: - visitor.VisitScalar(value, context); - break; - case TypeCode.DBNull: - visitor.VisitScalar(new BetterObjectDescriptor(null, typeof(object), typeof(object)), context); - break; - case TypeCode.Empty: - throw new NotSupportedException(string.Format(CultureInfo.InvariantCulture, "TypeCode.{0} is not supported.", typeCode)); - default: - if (value.Value == null || value.Type == typeof(TimeSpan)) - { - visitor.VisitScalar(value, context); + var typeCode = Type.GetTypeCode(value.Type); + switch (typeCode) + { + case TypeCode.Boolean: + case TypeCode.Byte: + case TypeCode.Int16: + case TypeCode.Int32: + case TypeCode.Int64: + case TypeCode.SByte: + case TypeCode.UInt16: + case TypeCode.UInt32: + case TypeCode.UInt64: + case TypeCode.Single: + case TypeCode.Double: + case TypeCode.Decimal: + case TypeCode.String: + case TypeCode.Char: + case TypeCode.DateTime: + visitor.VisitScalar(value, context, serializer); + break; + + case TypeCode.DBNull: + visitor.VisitScalar(new BetterObjectDescriptor(null, typeof(object), typeof(object)), context, serializer); + break; + + case TypeCode.Empty: + throw new NotSupportedException($"TypeCode.{typeCode} is not supported."); + + case TypeCode.Object: + default: + if (value.Value == null || value.Type == typeof(TimeSpan)) + { + visitor.VisitScalar(value, context, serializer); + break; + } + + var underlyingType = Nullable.GetUnderlyingType(value.Type); + if (underlyingType != null) + { + // This is a nullable type, recursively handle it with its underlying type. + // Note that if it contains null, the condition above already took care of it + Traverse( + propertyDescriptor, + "Value", + new BetterObjectDescriptor(value.Value, underlyingType, value.Type, value.ScalarStyle), + visitor, + context, + path, + serializer + ); + } + else + { + TraverseObject(propertyDescriptor, value, visitor, context, path, serializer); + } break; - } - - var underlyingType = Nullable.GetUnderlyingType(value.Type); - if (underlyingType != null) - { - // This is a nullable type, recursively handle it with its underlying type. - // Note that if it contains null, the condition above already took care of it - Traverse(new BetterObjectDescriptor(value.Value, underlyingType, value.Type, value.ScalarStyle), visitor, currentDepth, context); - } - else - { - TraverseObject(value, visitor, currentDepth, context); - } - break; + } + } + finally + { + path.Pop(); } } - protected virtual void TraverseObject(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth, TContext context) + protected virtual void TraverseObject( + IPropertyDescriptor? propertyDescriptor, + IObjectDescriptor value, + IObjectGraphVisitor visitor, + TContext context, + Stack path, + ObjectSerializer serializer) { + Debug.Assert(context != null); + var key = Tuple.Create(value.Type, typeof(TContext)); - if (!_behaviorCache.TryGetValue(key, out var action)) + + if (typeof(IDictionary).IsAssignableFrom(value.Type)) { - if (typeof(IDictionary).IsAssignableFrom(value.Type)) - { - action = TraverseDictionary; - } - else - { - var dictionaryType = ReflectionUtility.GetImplementedGenericInterface(value.Type, typeof(IDictionary<,>)); - if (dictionaryType != null) - { - action = (v, vi, d, c) => TraverseGenericDictionary(v, dictionaryType, vi, d, c); - } - else if (typeof(IEnumerable).IsAssignableFrom(value.Type)) - { - action = TraverseList; - } - else - { - action = TraverseProperties; - } - } - _behaviorCache[key] = action; + TraverseDictionary(propertyDescriptor, value, visitor, typeof(object), typeof(object), context, path, serializer); + return; + } + + if (_objectFactory.GetDictionary(value, out var adaptedDictionary, out var genericArguments)) + { + Debug.Assert(genericArguments != null); + + var objectDescriptor = new ObjectDescriptor(adaptedDictionary, value.Type, value.StaticType, value.ScalarStyle); + var dictionaryKeyType = genericArguments[0]; + var dictionaryValueType = genericArguments[1]; + + TraverseDictionary(propertyDescriptor, objectDescriptor, visitor, dictionaryKeyType, dictionaryValueType, context, path, serializer); + return; } - action(value, visitor, currentDepth, context); + + if (typeof(IEnumerable).IsAssignableFrom(value.Type)) + { + TraverseList(propertyDescriptor, value, visitor, context, path, serializer); + return; + } + + TraverseProperties(value, visitor, context, path, serializer); } - protected virtual void TraverseDictionary(IObjectDescriptor dictionary, object visitor, int currentDepth, object context) + protected virtual void TraverseDictionary( + IPropertyDescriptor? propertyDescriptor, + IObjectDescriptor dictionary, + IObjectGraphVisitor visitor, + Type keyType, + Type valueType, + TContext context, + Stack path, + ObjectSerializer serializer) { - var v = (IObjectGraphVisitor)visitor; - var c = (TContext)context; - v.VisitMappingStart(dictionary, typeof(object), typeof(object), c); + visitor.VisitMappingStart(dictionary, keyType, valueType, context, serializer); - foreach (DictionaryEntry entry in (IDictionary)dictionary.Value) + var isDynamic = dictionary.Type.FullName!.Equals("System.Dynamic.ExpandoObject"); + foreach (DictionaryEntry? entry in (IDictionary)dictionary.NonNullValue()) { - var key = GetObjectDescriptor(entry.Key, typeof(object)); - var value = GetObjectDescriptor(entry.Value, typeof(object)); + var entryValue = entry!.Value; + var keyValue = isDynamic ? _namingConvention.Apply(entryValue.Key.ToString()!) : entryValue.Key; + var key = GetObjectDescriptor(keyValue, keyType); + var value = GetObjectDescriptor(entryValue.Value, valueType); - if (v.EnterMapping(key, value, c)) + if (visitor.EnterMapping(key, value, context, serializer)) { - Traverse(key, v, currentDepth, c); - Traverse(value, v, currentDepth, c); + Traverse(propertyDescriptor, keyValue, key, visitor, context, path, serializer); + Traverse(propertyDescriptor, keyValue, value, visitor, context, path, serializer); } } - v.VisitMappingEnd(dictionary, c); + visitor.VisitMappingEnd(dictionary, context, serializer); } - private void TraverseGenericDictionary(IObjectDescriptor dictionary, Type dictionaryType, IObjectGraphVisitor visitor, int currentDepth, IObjectGraphVisitorContext context) + private void TraverseGenericDictionary( + IObjectDescriptor dictionary, + Type dictionaryType, + IObjectGraphVisitor visitor, + TContext context, + Stack path, + ObjectSerializer serializer) { - var v = (IObjectGraphVisitor)visitor; - var c = (TContext)context; + Debug.Assert(dictionary.Value != null); + var entryTypes = dictionaryType.GetGenericArguments(); // dictionaryType is IDictionary - v.VisitMappingStart(dictionary, entryTypes[0], entryTypes[1], c); + visitor.VisitMappingStart(dictionary, entryTypes[0], entryTypes[1], context, serializer); var key = Tuple.Create(entryTypes[0], entryTypes[1], typeof(TContext)); if (!_traverseGenericDictionaryCache.TryGetValue(key, out var action)) @@ -180,14 +249,26 @@ private void TraverseGenericDictionary(IObjectDescriptor dictionary, T action = GetTraverseGenericDictionaryHelper(entryTypes[0], entryTypes[1], typeof(TContext)); _traverseGenericDictionaryCache[key] = action; } - action(this, dictionary.Value, v, currentDepth, _namingConvention ?? NullNamingConvention.Instance, c); + action(this, dictionary.Value, visitor, _namingConvention ?? NullNamingConvention.Instance, context!, path, serializer); - v.VisitMappingEnd(dictionary, c); + visitor.VisitMappingEnd(dictionary, context, serializer); } - private static Action GetTraverseGenericDictionaryHelper(Type tkey, Type tvalue, Type tcontext) + private static Action, ObjectSerializer> GetTraverseGenericDictionaryHelper(Type tkey, Type tvalue, Type tcontext) { - var dm = new DynamicMethod(string.Empty, typeof(void), [typeof(FullObjectGraphTraversalStrategy), typeof(object), typeof(IObjectGraphVisitor), typeof(int), typeof(INamingConvention), typeof(IObjectGraphVisitorContext)]); + var dm = new DynamicMethod( + string.Empty, + returnType: typeof(void), + parameterTypes: + [ + typeof(FullObjectGraphTraversalStrategy), + typeof(object), + typeof(IObjectGraphVisitor), + typeof(INamingConvention), + typeof(IObjectGraphVisitorContext), + typeof(Stack), + typeof(ObjectSerializer), + ]); var il = dm.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); @@ -198,76 +279,116 @@ private static Action)dm.CreateDelegate(typeof(Action)); + return (Action, ObjectSerializer>)dm.CreateDelegate(typeof(Action, ObjectSerializer>)); } [EditorBrowsable(EditorBrowsableState.Never)] - public static void TraverseGenericDictionaryHelper( + private static void TraverseGenericDictionaryHelper( FullObjectGraphTraversalStrategy self, + IPropertyDescriptor propertyDescriptor, IDictionary dictionary, - IObjectGraphVisitor visitor, - int currentDepth, + IObjectGraphVisitor visitor, INamingConvention namingConvention, - IObjectGraphVisitorContext context) + TContext context, + Stack paths, + ObjectSerializer serializer) { - var v = (IObjectGraphVisitor)visitor; - var c = (TContext)context; - var isDynamic = dictionary.GetType().FullName.Equals("System.Dynamic.ExpandoObject"); + + var isDynamic = dictionary.GetType().FullName!.Equals("System.Dynamic.ExpandoObject"); + foreach (var entry in dictionary) { - var keyString = isDynamic ? namingConvention.Apply(entry.Key.ToString()) : entry.Key.ToString(); + Debug.Assert(entry.Key != null); + Debug.Assert(entry.Value != null); + + var keyString = isDynamic + ? namingConvention.Apply(entry.Key!.ToString()!)! + : entry.Key.ToString()!; var key = self.GetObjectDescriptor(keyString, typeof(TKey)); var value = self.GetObjectDescriptor(entry.Value, typeof(TValue)); - if (v.EnterMapping(key, value, c)) + if (visitor.EnterMapping(key, value, context, serializer)) { - self.Traverse(key, v, currentDepth, c); - self.Traverse(value, v, currentDepth, c); + self.Traverse(propertyDescriptor, propertyDescriptor.Name, key, visitor, context, paths, serializer); + self.Traverse(propertyDescriptor, propertyDescriptor.Name, key, visitor, context, paths, serializer); } } } - private void TraverseList(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth, IObjectGraphVisitorContext context) + private void TraverseList( + IPropertyDescriptor? propertyDescriptor, + IObjectDescriptor value, + IObjectGraphVisitor visitor, + TContext context, + Stack path, + ObjectSerializer serializer) { - var v = (IObjectGraphVisitor)visitor; - var c = (TContext)context; - var enumerableType = ReflectionUtility.GetImplementedGenericInterface(value.Type, typeof(IEnumerable<>)); - var itemType = enumerableType != null ? - enumerableType.GetGenericArguments()[0] - : typeof(object); + var itemType = _objectFactory.GetValueType(value.Type); - v.VisitSequenceStart(value, itemType, c); + visitor.VisitSequenceStart(value, itemType, context, serializer); - foreach (var item in (IEnumerable)value.Value) + var index = 0; + + foreach (var item in (IEnumerable)value.NonNullValue()) { - Traverse(GetObjectDescriptor(item, itemType), v, currentDepth, c); + Traverse(propertyDescriptor, index, GetObjectDescriptor(item, itemType), visitor, context, path, serializer); + ++index; } - v.VisitSequenceEnd(value, c); + visitor.VisitSequenceEnd(value, context, serializer); } - protected virtual void TraverseProperties(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth, IObjectGraphVisitorContext context) + protected virtual void TraverseProperties( + IObjectDescriptor value, + IObjectGraphVisitor visitor, + TContext context, + Stack path, + ObjectSerializer serializer) { - var v = (IObjectGraphVisitor)visitor; - var c = (TContext)context; - v.VisitMappingStart(value, typeof(string), typeof(object), c); + Debug.Assert(visitor != null); + Debug.Assert(context != null); + Debug.Assert(value.Value != null); - foreach (var propertyDescriptor in _typeDescriptor.GetProperties(value.Type, value.Value)) + if (context.GetType() != typeof(Nothing)) { - var propertyValue = propertyDescriptor.Read(value.Value); + _objectFactory.ExecuteOnSerializing(value.Value); + } - if (v.EnterMapping(propertyDescriptor, propertyValue, c)) + visitor.VisitMappingStart(value, typeof(string), typeof(object), context, serializer); + + var source = value.NonNullValue(); + foreach (var propertyDescriptor in _typeDescriptor.GetProperties(value.Type, source)) + { + var propertyValue = propertyDescriptor.Read(source); + if (visitor.EnterMapping(propertyDescriptor, propertyValue, context, serializer)) { - Traverse(new BetterObjectDescriptor(propertyDescriptor.Name, typeof(string), typeof(string)), v, currentDepth, c); - Traverse(propertyValue, v, currentDepth, c); + Traverse(null, propertyDescriptor.Name, new BetterObjectDescriptor(propertyDescriptor.Name, typeof(string), typeof(string), ScalarStyle.Plain), visitor, context, path, serializer); + Traverse(propertyDescriptor, propertyDescriptor.Name, propertyValue, visitor, context, path, serializer); } } - v.VisitMappingEnd(value, c); + visitor.VisitMappingEnd(value, context, serializer); + + if (context.GetType() != typeof(Nothing)) + { + _objectFactory.ExecuteOnSerialized(value.Value); + } } - private IObjectDescriptor GetObjectDescriptor(object value, Type staticType) + private IObjectDescriptor GetObjectDescriptor(object? value, Type staticType) { return new BetterObjectDescriptor(value, _typeResolver.Resolve(staticType, value), staticType); } + + protected internal readonly struct ObjectPathSegment + { + public readonly object Name; + public readonly IObjectDescriptor Value; + + public ObjectPathSegment(object name, IObjectDescriptor value) + { + this.Name = name; + this.Value = value; + } + } } diff --git a/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/RoundtripObjectGraphTraversalStrategy.cs b/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/RoundtripObjectGraphTraversalStrategy.cs index 3e53a587526..53b0a95facc 100644 --- a/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/RoundtripObjectGraphTraversalStrategy.cs +++ b/src/Docfx.YamlSerialization/ObjectGraphTraversalStrategies/RoundtripObjectGraphTraversalStrategy.cs @@ -1,11 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Globalization; using Docfx.YamlSerialization.Helpers; using YamlDotNet.Serialization; -using IObjectGraphVisitor = System.Object; -using IObjectGraphVisitorContext = System.Object; namespace Docfx.YamlSerialization.ObjectGraphTraversalStrategies; @@ -16,18 +13,33 @@ namespace Docfx.YamlSerialization.ObjectGraphTraversalStrategies; /// public class RoundtripObjectGraphTraversalStrategy : FullObjectGraphTraversalStrategy { - public RoundtripObjectGraphTraversalStrategy(YamlSerializer serializer, ITypeInspector typeDescriptor, ITypeResolver typeResolver, int maxRecursion) - : base(serializer, typeDescriptor, typeResolver, maxRecursion, null) + private readonly TypeConverterCache _converters; + private readonly Settings _settings; + + public RoundtripObjectGraphTraversalStrategy(IEnumerable converters, YamlSerializer serializer, ITypeInspector typeDescriptor, ITypeResolver typeResolver, int maxRecursion, INamingConvention namingConvention, Settings settings, IObjectFactory objectFactory) + : base(serializer, typeDescriptor, typeResolver, maxRecursion, namingConvention, objectFactory) { + _converters = new TypeConverterCache(converters); + _settings = settings; } - protected override void TraverseProperties(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth, IObjectGraphVisitorContext context) + ////protected override void TraverseProperties(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth, IObjectGraphVisitorContext context) + ////{ + //// if (!value.Type.HasDefaultConstructor() && !Serializer.Converters.Any(c => c.Accepts(value.Type))) + //// { + //// throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Type '{0}' cannot be deserialized because it does not have a default constructor or a type converter.", value.Type)); + //// } + + //// base.TraverseProperties(value, visitor, currentDepth, context); + ////} + + protected override void TraverseProperties(IObjectDescriptor value, IObjectGraphVisitor visitor, TContext context, Stack path, ObjectSerializer serializer) { - if (!value.Type.HasDefaultConstructor() && !Serializer.Converters.Any(c => c.Accepts(value.Type))) + if (!value.Type.HasDefaultConstructor(_settings.AllowPrivateConstructors) && !_converters.TryGetConverterForType(value.Type, out _)) { - throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Type '{0}' cannot be deserialized because it does not have a default constructor or a type converter.", value.Type)); + throw new InvalidOperationException($"Type '{value.Type}' cannot be deserialized because it does not have a default constructor or a type converter."); } - base.TraverseProperties(value, visitor, currentDepth, context); + base.TraverseProperties(value, visitor, context, path, serializer); } } diff --git a/src/Docfx.YamlSerialization/ObjectGraphVisitors/ExclusiveObjectGraphVisitor.cs b/src/Docfx.YamlSerialization/ObjectGraphVisitors/ExclusiveObjectGraphVisitor.cs index d4c1afaec7e..a26e4e67304 100644 --- a/src/Docfx.YamlSerialization/ObjectGraphVisitors/ExclusiveObjectGraphVisitor.cs +++ b/src/Docfx.YamlSerialization/ObjectGraphVisitors/ExclusiveObjectGraphVisitor.cs @@ -18,18 +18,18 @@ public ExclusiveObjectGraphVisitor(IObjectGraphVisitor nextVisitor) { } - private static object GetDefault(Type type) + private static object? GetDefault(Type type) { return type.IsValueType ? Activator.CreateInstance(type) : null; } - public override bool EnterMapping(IPropertyDescriptor key, IObjectDescriptor value, IEmitter context) + public override bool EnterMapping(IPropertyDescriptor key, IObjectDescriptor value, IEmitter context, ObjectSerializer serializer) { var defaultValueAttribute = key.GetCustomAttribute(); - object defaultValue = defaultValueAttribute != null + object? defaultValue = defaultValueAttribute != null ? defaultValueAttribute.Value : GetDefault(key.Type); - return !Equals(value.Value, defaultValue) && base.EnterMapping(key, value, context); + return !Equals(value.Value, defaultValue) && base.EnterMapping(key, value, context, serializer); } } diff --git a/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs b/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs index e153787418e..1dbbc65e60d 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/EmitTypeInspector.cs @@ -4,6 +4,7 @@ using System.Collections.Concurrent; using System.Reflection; using System.Reflection.Emit; +using System.Runtime.Serialization; using Docfx.YamlSerialization.Helpers; using Docfx.YamlSerialization.ObjectDescriptors; using YamlDotNet.Core; @@ -15,6 +16,8 @@ public class EmitTypeInspector : ExtensibleTypeInspectorSkeleton { private static readonly ConcurrentDictionary _cache = new(); private static readonly ConcurrentDictionary> _propertyDescriptorCache = new(); + private static readonly ConcurrentDictionary<(Type, string), string> _enumNameCache = new(); + private static readonly ConcurrentDictionary<(Type, string), string> _enumValueCache = new(); private readonly ITypeResolver _resolver; public EmitTypeInspector(ITypeResolver resolver) @@ -22,7 +25,7 @@ public EmitTypeInspector(ITypeResolver resolver) _resolver = resolver; } - public override IEnumerable GetProperties(Type type, object container) + public override IEnumerable GetProperties(Type type, object? container) { var item = _cache.GetOrAdd(type, CachingItem.Create); if (item.Error != null) @@ -45,7 +48,7 @@ private IEnumerable GetPropertyDescriptors(CachingItem item return from p in item.Properties select new EmitPropertyDescriptor(p, _resolver); } - public override IPropertyDescriptor GetProperty(Type type, object container, string name) + public override IPropertyDescriptor? GetProperty(Type type, object? container, string name) { var item = _cache.GetOrAdd(type, CachingItem.Create); if (item.Error != null) @@ -56,20 +59,73 @@ public override IPropertyDescriptor GetProperty(Type type, object container, str { return null; } + return (from ep in item.ExtensibleProperties where name.StartsWith(ep.Prefix, StringComparison.Ordinal) select new ExtensiblePropertyDescriptor(ep, name, _resolver)).FirstOrDefault(); } + // This code is based on ReflectionTypeInspector implementation(See: https://github.com/aaubry/YamlDotNet/blob/master/YamlDotNet/Serialization/TypeInspectors/ReflectionTypeInspector.cs) + public override string GetEnumName(Type enumType, string name) + { + var key = (enumType, name); + if (_enumNameCache.TryGetValue(key, out var result)) + return result; + + // Try to gets enum name from EnumMemberAttribute and resolve enum name. + foreach (var enumMember in enumType.GetMembers()) + { + var attribute = enumMember.GetCustomAttribute(inherit: false); + if (attribute != null && attribute.Value == name) + { + name = enumMember.Name; + break; + } + } + + // Add resolved name to cache + _enumNameCache.TryAdd(key, name); + return name; + } + + public override string GetEnumValue(object enumValue) + { + var enumType = enumValue.GetType(); + var valueText = enumValue.ToString()!; + var key = (enumType, valueText); + + if (_enumValueCache.TryGetValue(key, out var result)) + return result; + + // Try to gets enum value from EnumMemberAttribute and resolve enum value. + if (enumType.GetCustomAttribute() != null) + { + var enumMember = enumType.GetMember(valueText).FirstOrDefault(); + if (enumMember != null) + { + var attribute = enumMember.GetCustomAttribute(inherit: false); + if (attribute?.Value != null) + { + valueText = attribute.Value; + } + } + } + + // Add resolved text to cache. + _enumValueCache.TryAdd(key, valueText); + + return valueText; + } + private sealed class CachingItem { private CachingItem() { } - public Exception Error { get; private set; } + public Exception? Error { get; private set; } - public List Properties { get; } = new(); + public List Properties { get; } = []; - public List ExtensibleProperties { get; } = new(); + public List ExtensibleProperties { get; } = []; public static CachingItem Create(Type type) { @@ -103,7 +159,7 @@ public static CachingItem Create(Type type) } else { - Type valueType = GetGenericValueType(propertyType); + Type? valueType = GetGenericValueType(propertyType); if (valueType == null) { @@ -130,7 +186,7 @@ public static CachingItem Create(Type type) private static Func CreateReader(MethodInfo getMethod) { - var hostType = getMethod.DeclaringType; + var hostType = getMethod.DeclaringType!; var propertyType = getMethod.ReturnType; var dm = new DynamicMethod(string.Empty, typeof(object), [typeof(object)]); var il = dm.GetILGenerator(); @@ -153,9 +209,9 @@ private static Func CreateReader(MethodInfo getMethod) return (Func)dm.CreateDelegate(typeof(Func)); } - private static Action CreateWriter(MethodInfo setMethod) + private static Action CreateWriter(MethodInfo setMethod) { - var hostType = setMethod.DeclaringType; + var hostType = setMethod.DeclaringType!; var propertyType = setMethod.GetParameters()[0].ParameterType; var dm = new DynamicMethod(string.Empty, typeof(void), [typeof(object), typeof(object)]); var il = dm.GetILGenerator(); @@ -173,12 +229,12 @@ private static Action CreateWriter(MethodInfo setMethod) il.Emit(OpCodes.Unbox_Any, propertyType); il.Emit(isValueType ? OpCodes.Call : OpCodes.Callvirt, setMethod); il.Emit(OpCodes.Ret); - return (Action)dm.CreateDelegate(typeof(Action)); + return (Action)dm.CreateDelegate(typeof(Action)); } - private static Type GetGenericValueType(Type propertyType) + private static Type? GetGenericValueType(Type propertyType) { - Type valueType = null; + Type? valueType = null; if (propertyType.IsInterface) { valueType = GetGenericValueTypeCore(propertyType); @@ -189,7 +245,7 @@ where t.IsVisible return valueType; } - private static Type GetGenericValueTypeCore(Type type) + private static Type? GetGenericValueTypeCore(Type type) { if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IDictionary<,>)) @@ -205,7 +261,7 @@ private static Type GetGenericValueTypeCore(Type type) private static Func> CreateDictionaryKeyReader(MethodInfo getMethod, Type valueType) { - var hostType = getMethod.DeclaringType; + var hostType = getMethod.DeclaringType!; var propertyType = getMethod.ReturnType; var dictType = typeof(IDictionary<,>).MakeGenericType(typeof(string), valueType); var dm = new DynamicMethod(string.Empty, typeof(ICollection), [typeof(object)]); @@ -241,7 +297,7 @@ private static Func> CreateDictionaryKeyReader(Metho il.MarkLabel(notNullLabel); il.Emit(OpCodes.Ldloc_0); } - il.Emit(OpCodes.Callvirt, dictType.GetMethod("get_Keys")); + il.Emit(OpCodes.Callvirt, dictType.GetMethod("get_Keys")!); il.Emit(OpCodes.Ret); return (Func>)dm.CreateDelegate(typeof(Func>)); @@ -249,7 +305,7 @@ private static Func> CreateDictionaryKeyReader(Metho private static Func CreateDictionaryReader(MethodInfo getMethod, Type valueType) { - var hostType = getMethod.DeclaringType; + var hostType = getMethod.DeclaringType!; var propertyType = getMethod.ReturnType; var dictType = typeof(IDictionary<,>).MakeGenericType(typeof(string), valueType); var dm = new DynamicMethod(string.Empty, typeof(object), [typeof(object), typeof(string)]); @@ -288,7 +344,7 @@ private static Func CreateDictionaryReader(MethodInfo ge } il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Ldloca_S, (byte)0); - il.Emit(OpCodes.Callvirt, dictType.GetMethod("TryGetValue")); + il.Emit(OpCodes.Callvirt, dictType.GetMethod("TryGetValue")!); il.Emit(OpCodes.Brfalse_S, nullLabel); il.Emit(OpCodes.Ldloc_0); if (valueType.IsValueType) @@ -303,9 +359,9 @@ private static Func CreateDictionaryReader(MethodInfo ge return (Func)dm.CreateDelegate(typeof(Func)); } - private static Action CreateDictionaryWriter(MethodInfo getMethod, Type valueType) + private static Action CreateDictionaryWriter(MethodInfo getMethod, Type valueType) { - var hostType = getMethod.DeclaringType; + var hostType = getMethod.DeclaringType!; var propertyType = getMethod.ReturnType; var dictType = typeof(IDictionary<,>).MakeGenericType(typeof(string), valueType); var dm = new DynamicMethod(string.Empty, typeof(void), [typeof(object), typeof(string), typeof(object)]); @@ -341,11 +397,11 @@ private static Action CreateDictionaryWriter(MethodInfo il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Ldarg_2); il.Emit(OpCodes.Unbox_Any, valueType); - il.Emit(OpCodes.Callvirt, dictType.GetMethod("set_Item")); + il.Emit(OpCodes.Callvirt, dictType.GetMethod("set_Item")!); il.MarkLabel(nullLabel); il.Emit(OpCodes.Ret); - return (Action)dm.CreateDelegate(typeof(Action)); + return (Action)dm.CreateDelegate(typeof(Action)); } } @@ -356,20 +412,20 @@ private sealed class EmitPropertyDescriptorSkeleton public EmitPropertyDescriptorSkeleton() { - _attributeFunc = t => Property.GetCustomAttribute(t); + _attributeFunc = t => Property!.GetCustomAttribute(t)!; } - internal PropertyInfo Property { get; set; } + internal required PropertyInfo Property { get; set; } - internal Func Reader { get; set; } + internal required Func Reader { get; set; } - internal Action Writer { get; set; } + internal required Action? Writer { get; set; } public bool CanWrite { get; set; } - public string Name { get; set; } + public required string Name { get; set; } - public Type Type { get; set; } + public required Type Type { get; set; } public Attribute GetCustomAttribute(Type type) { @@ -398,7 +454,13 @@ public EmitPropertyDescriptor(EmitPropertyDescriptorSkeleton skeleton, ITypeReso public Type Type => _skeleton.Type; - public Type TypeOverride { get; set; } + public Type? TypeOverride { get; set; } + + public bool AllowNulls { get; set; } + + public bool Required { get; set; } + + public Type? ConverterType { get; set; } public T GetCustomAttribute() where T : Attribute => (T)_skeleton.GetCustomAttribute(typeof(T)); @@ -408,23 +470,24 @@ public IObjectDescriptor Read(object target) return new BetterObjectDescriptor(value, TypeOverride ?? _typeResolver.Resolve(Type, value), Type, ScalarStyle); } - public void Write(object target, object value) + public void Write(object target, object? value) { - _skeleton.Writer(target, value); + if (_skeleton.CanWrite && _skeleton.Writer != null) + _skeleton.Writer(target, value); } } private sealed class ExtensiblePropertyDescriptorSkeleton { - internal string Prefix { get; set; } + internal required string Prefix { get; set; } - internal Func Reader { get; set; } + internal required Func Reader { get; set; } - internal Action Writer { get; set; } + internal required Action Writer { get; set; } - internal Func> KeyReader { get; set; } + internal required Func> KeyReader { get; set; } - public Type Type { get; set; } + public required Type Type { get; set; } public ICollection GetAllKeys(object target) => KeyReader(target); } @@ -457,9 +520,15 @@ public ExtensiblePropertyDescriptor( public Type Type => _skeleton.Type; - public Type TypeOverride { get; set; } + public Type? TypeOverride { get; set; } + + public bool AllowNulls { get; set; } + + public bool Required { get; set; } + + public Type? ConverterType { get; set; } - public T GetCustomAttribute() where T : Attribute => null; + public T? GetCustomAttribute() where T : Attribute => null; public IObjectDescriptor Read(object target) { @@ -471,7 +540,7 @@ public IObjectDescriptor Read(object target) return new BetterObjectDescriptor(value, TypeOverride ?? _typeResolver.Resolve(Type, value), Type, ScalarStyle); } - public void Write(object target, object value) + public void Write(object target, object? value) { if (Name == null || Name.Length <= _skeleton.Prefix.Length) { diff --git a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleNamingConventionTypeInspector.cs b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleNamingConventionTypeInspector.cs index 8f6a03f2c81..f7fa3fd3eaa 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleNamingConventionTypeInspector.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleNamingConventionTypeInspector.cs @@ -19,10 +19,16 @@ public ExtensibleNamingConventionTypeInspector(IExtensibleTypeInspector innerTyp this.namingConvention = namingConvention; } - public override IEnumerable GetProperties(Type type, object container) => + public override IEnumerable GetProperties(Type type, object? container) => from p in innerTypeDescriptor.GetProperties(type, container) select (IPropertyDescriptor)new PropertyDescriptor(p) { Name = namingConvention.Apply(p.Name) }; - public override IPropertyDescriptor GetProperty(Type type, object container, string name) => + public override IPropertyDescriptor? GetProperty(Type type, object? container, string name) => innerTypeDescriptor.GetProperty(type, container, name); + + public override string GetEnumName(Type enumType, string name) => + innerTypeDescriptor.GetEnumName(enumType, name); + + public override string GetEnumValue(object enumValue) => + innerTypeDescriptor.GetEnumValue(enumValue); } diff --git a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleReadableAndWritablePropertiesTypeInspector.cs b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleReadableAndWritablePropertiesTypeInspector.cs index 5ed13063d70..01ad2ab9f38 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleReadableAndWritablePropertiesTypeInspector.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleReadableAndWritablePropertiesTypeInspector.cs @@ -14,11 +14,17 @@ public ExtensibleReadableAndWritablePropertiesTypeInspector(IExtensibleTypeInspe _innerTypeDescriptor = innerTypeDescriptor; } - public override IEnumerable GetProperties(Type type, object container) => + public override IEnumerable GetProperties(Type type, object? container) => from p in _innerTypeDescriptor.GetProperties(type, container) where p.CanWrite select p; - public override IPropertyDescriptor GetProperty(Type type, object container, string name) => + public override IPropertyDescriptor? GetProperty(Type type, object? container, string name) => _innerTypeDescriptor.GetProperty(type, container, name); + + public override string GetEnumName(Type enumType, string name) => + _innerTypeDescriptor.GetEnumName(enumType, name); + + public override string GetEnumValue(object enumValue) => + _innerTypeDescriptor.GetEnumValue(enumValue); } diff --git a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs index b31bf7a6977..715bec3a57f 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleTypeInspectorSkeleton.cs @@ -9,14 +9,13 @@ namespace Docfx.YamlSerialization.TypeInspectors; public abstract class ExtensibleTypeInspectorSkeleton : ITypeInspector, IExtensibleTypeInspector { - public abstract IEnumerable GetProperties(Type type, object container); + public abstract IEnumerable GetProperties(Type type, object? container); - public IPropertyDescriptor GetProperty(Type type, object container, string name, bool ignoreUnmatched) + public IPropertyDescriptor GetProperty(Type type, object? container, string name, bool ignoreUnmatched, bool caseInsensitivePropertyMatching) { - var candidates = - from p in GetProperties(type, container) - where p.Name == name - select p; + var candidates = caseInsensitivePropertyMatching + ? GetProperties(type, container).Where(p => p.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) + : GetProperties(type, container).Where(p => p.Name == name); using var enumerator = candidates.GetEnumerator(); if (!enumerator.MoveNext()) @@ -29,7 +28,7 @@ from p in GetProperties(type, container) if (ignoreUnmatched) { - return null; + return null!; } throw new InvalidOperationException( @@ -60,5 +59,9 @@ from p in GetProperties(type, container) return property; } - public virtual IPropertyDescriptor GetProperty(Type type, object container, string name) => null; + public virtual IPropertyDescriptor? GetProperty(Type type, object? container, string name) => null; + + public abstract string GetEnumName(Type enumType, string name); + + public abstract string GetEnumValue(object enumValue); } diff --git a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs index 9897f36df56..0fb61db306f 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/ExtensibleYamlAttributesTypeInspector.cs @@ -17,7 +17,7 @@ public ExtensibleYamlAttributesTypeInspector(IExtensibleTypeInspector innerTypeD this.innerTypeDescriptor = innerTypeDescriptor; } - public override IEnumerable GetProperties(Type type, object container) + public override IEnumerable GetProperties(Type type, object? container) { return innerTypeDescriptor.GetProperties(type, container) .Where(p => p.GetCustomAttribute() == null) @@ -46,6 +46,12 @@ public override IEnumerable GetProperties(Type type, object .OrderBy(p => p.Order); } - public override IPropertyDescriptor GetProperty(Type type, object container, string name) => + public override IPropertyDescriptor? GetProperty(Type type, object? container, string name) => innerTypeDescriptor.GetProperty(type, container, name); + + public override string GetEnumName(Type enumType, string name) => + innerTypeDescriptor.GetEnumName(enumType, name); + + public override string GetEnumValue(object enumValue) => + innerTypeDescriptor.GetEnumValue(enumValue); } diff --git a/src/Docfx.YamlSerialization/TypeInspectors/IExtensibleTypeInspector.cs b/src/Docfx.YamlSerialization/TypeInspectors/IExtensibleTypeInspector.cs index 9ce4a40898b..9802ec5deab 100644 --- a/src/Docfx.YamlSerialization/TypeInspectors/IExtensibleTypeInspector.cs +++ b/src/Docfx.YamlSerialization/TypeInspectors/IExtensibleTypeInspector.cs @@ -7,5 +7,5 @@ namespace Docfx.YamlSerialization.TypeInspectors; public interface IExtensibleTypeInspector : ITypeInspector { - IPropertyDescriptor GetProperty(Type type, object container, string name); + IPropertyDescriptor? GetProperty(Type type, object? container, string name); } diff --git a/src/Docfx.YamlSerialization/YamlDeserializer.cs b/src/Docfx.YamlSerialization/YamlDeserializer.cs index fb8f374d27f..9080bea8fe5 100644 --- a/src/Docfx.YamlSerialization/YamlDeserializer.cs +++ b/src/Docfx.YamlSerialization/YamlDeserializer.cs @@ -45,27 +45,39 @@ public sealed class YamlDeserializer private sealed class TypeDescriptorProxy : ITypeInspector { - public ITypeInspector TypeDescriptor; + public ITypeInspector TypeDescriptor = default!; - public IEnumerable GetProperties(Type type, object container) + public IEnumerable GetProperties(Type type, object? container) { return TypeDescriptor.GetProperties(type, container); } - public IPropertyDescriptor GetProperty(Type type, object container, string name, bool ignoreUnmatched) + public IPropertyDescriptor GetProperty(Type type, object? container, string name, bool ignoreUnmatched, bool caseInsensitivePropertyMatching) { - return TypeDescriptor.GetProperty(type, container, name, ignoreUnmatched); + return TypeDescriptor.GetProperty(type, container, name, ignoreUnmatched, caseInsensitivePropertyMatching); + } + + public string GetEnumName(Type enumType, string name) + { + return TypeDescriptor.GetEnumName(enumType, name); + } + public string GetEnumValue(object enumValue) + { + return TypeDescriptor.GetEnumValue(enumValue); } } public YamlDeserializer( - IObjectFactory objectFactory = null, - INamingConvention namingConvention = null, + IObjectFactory? objectFactory = null, + INamingConvention? namingConvention = null, + INamingConvention? enumNamingConvention = null, bool ignoreUnmatched = false, - bool ignoreNotFoundAnchor = true) + bool ignoreNotFoundAnchor = true, + bool caseInsensitivePropertyMatching = false) { objectFactory ??= new DefaultEmitObjectFactory(); namingConvention ??= NullNamingConvention.Instance; + enumNamingConvention ??= NullNamingConvention.Instance; _typeDescriptor.TypeDescriptor = new ExtensibleYamlAttributesTypeInspector( @@ -85,28 +97,28 @@ public YamlDeserializer( _converters.Add(yamlTypeConverter); } - NodeDeserializers = new List - { + NodeDeserializers = + [ new TypeConverterNodeDeserializer(_converters), new NullNodeDeserializer(), - new ScalarNodeDeserializer(attemptUnknownTypeDeserialization: false, _reflectionTypeConverter, YamlFormatter.Default, NullNamingConvention.Instance), - new EmitArrayNodeDeserializer(), + new ScalarNodeDeserializer(attemptUnknownTypeDeserialization: false, _reflectionTypeConverter, _typeDescriptor, YamlFormatter.Default, enumNamingConvention), + new EmitArrayNodeDeserializer(enumNamingConvention,_typeDescriptor), new EmitGenericDictionaryNodeDeserializer(objectFactory), new DictionaryNodeDeserializer(objectFactory, duplicateKeyChecking: true), - new EmitGenericCollectionNodeDeserializer(objectFactory), - new CollectionNodeDeserializer(objectFactory, NullNamingConvention.Instance), + new EmitGenericCollectionNodeDeserializer(objectFactory, enumNamingConvention,_typeDescriptor), + new CollectionNodeDeserializer(objectFactory, enumNamingConvention, _typeDescriptor), new EnumerableNodeDeserializer(), - new ExtensibleObjectNodeDeserializer(objectFactory, _typeDescriptor, ignoreUnmatched) - }; + new ExtensibleObjectNodeDeserializer(objectFactory, _typeDescriptor, enumNamingConvention, ignoreUnmatched, caseInsensitivePropertyMatching), + ]; _tagMappings = new Dictionary(PredefinedTagMappings); - TypeResolvers = new List - { + TypeResolvers = + [ new TagNodeTypeResolver(_tagMappings), new DefaultContainersNodeTypeResolver(), - new ScalarYamlNodeTypeResolver() - }; + new ScalarYamlNodeTypeResolver(), + ]; - NodeValueDeserializer nodeValueDeserializer = new(NodeDeserializers, TypeResolvers, _reflectionTypeConverter, NullNamingConvention.Instance); + NodeValueDeserializer nodeValueDeserializer = new(NodeDeserializers, TypeResolvers, _reflectionTypeConverter, enumNamingConvention, _typeDescriptor); if (ignoreNotFoundAnchor) { _valueDeserializer = new LooseAliasValueDeserializer(nodeValueDeserializer); @@ -127,29 +139,29 @@ public void RegisterTypeConverter(IYamlTypeConverter typeConverter) _converters.Add(typeConverter); } - public T Deserialize(TextReader input, IValueDeserializer deserializer = null) + public T? Deserialize(TextReader input, IValueDeserializer? deserializer = null) { - return (T)Deserialize(input, typeof(T), deserializer); + return (T?)Deserialize(input, typeof(T), deserializer); } - public object Deserialize(TextReader input, IValueDeserializer deserializer = null) + public object? Deserialize(TextReader input, IValueDeserializer? deserializer = null) { - return Deserialize(input, typeof(object), deserializer); + return Deserialize(input, deserializer); } - public object Deserialize(TextReader input, Type type, IValueDeserializer deserializer = null) + public object? Deserialize(TextReader input, Type type, IValueDeserializer? deserializer = null) { return Deserialize(new Parser(input), type, deserializer); } - public T Deserialize(IParser reader, IValueDeserializer deserializer = null) + public T? Deserialize(IParser reader, IValueDeserializer? deserializer = null) { - return (T)Deserialize(reader, typeof(T), deserializer); + return (T?)Deserialize(reader, typeof(T), deserializer); } - public object Deserialize(IParser reader, IValueDeserializer deserializer = null) + public object? Deserialize(IParser reader, IValueDeserializer? deserializer = null) { - return Deserialize(reader, typeof(object), deserializer); + return Deserialize(reader, deserializer); } /// @@ -158,7 +170,7 @@ public object Deserialize(IParser reader, IValueDeserializer deserializer = null /// The where to deserialize the object. /// The static type of the object to deserialize. /// Returns the deserialized object. - public object Deserialize(IParser parser, Type type, IValueDeserializer deserializer = null) + public object? Deserialize(IParser parser, Type type, IValueDeserializer? deserializer = null) { ArgumentNullException.ThrowIfNull(parser); ArgumentNullException.ThrowIfNull(type); @@ -167,7 +179,7 @@ public object Deserialize(IParser parser, Type type, IValueDeserializer deserial var hasDocumentStart = parser.TryConsume(out _); deserializer ??= _valueDeserializer; - object result = null; + object? result = null; if (!parser.Accept(out _) && !parser.Accept(out _)) { using var state = new SerializerState(); @@ -205,7 +217,7 @@ public void OnDeserialization() { foreach (var promise in Values) { - if (!promise.HasValue) + if (!promise.HasValue && promise.Alias != null) { // If promise is not resolved, reset to it's alias value promise.Value = "*" + promise.Alias.Value; @@ -216,26 +228,26 @@ public void OnDeserialization() private sealed class ValuePromise : IValuePromise { - public event Action ValueAvailable; + public event Action? ValueAvailable; public bool HasValue { get; private set; } - private object value; + private object? value; - public readonly AnchorAlias Alias; + public readonly AnchorAlias? Alias; public ValuePromise(AnchorAlias alias) { Alias = alias; } - public ValuePromise(object value) + public ValuePromise(object? value) { HasValue = true; this.value = value; } - public object Value + public object? Value { get { @@ -259,13 +271,13 @@ public object Value } } - public object DeserializeValue(IParser reader, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer) + public object? DeserializeValue(IParser reader, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer) { - object value; + object? value; if (reader.TryConsume(out var alias)) { var aliasState = state.Get(); - if (!aliasState.TryGetValue(alias.Value, out ValuePromise valuePromise)) + if (!aliasState.TryGetValue(alias.Value, out var valuePromise)) { valuePromise = new ValuePromise(alias); aliasState.Add(alias.Value, valuePromise); @@ -287,7 +299,7 @@ public object DeserializeValue(IParser reader, Type expectedType, SerializerStat { var aliasState = state.Get(); - if (!aliasState.TryGetValue(anchor.Value, out ValuePromise valuePromise)) + if (!aliasState.TryGetValue(anchor.Value, out var valuePromise)) { aliasState.Add(anchor.Value, new ValuePromise(value)); } diff --git a/src/Docfx.YamlSerialization/YamlSerializer.cs b/src/Docfx.YamlSerialization/YamlSerializer.cs index 69e9a64582b..d1b3920d41e 100644 --- a/src/Docfx.YamlSerialization/YamlSerializer.cs +++ b/src/Docfx.YamlSerialization/YamlSerializer.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Concurrent; using Docfx.YamlSerialization.Helpers; using Docfx.YamlSerialization.ObjectDescriptors; using Docfx.YamlSerialization.ObjectGraphTraversalStrategies; @@ -11,6 +12,7 @@ using YamlDotNet.Serialization; using YamlDotNet.Serialization.EventEmitters; using YamlDotNet.Serialization.NamingConventions; +using YamlDotNet.Serialization.ObjectFactories; using YamlDotNet.Serialization.ObjectGraphVisitors; using YamlDotNet.Serialization.TypeInspectors; using YamlDotNet.Serialization.TypeResolvers; @@ -23,11 +25,15 @@ public class YamlSerializer private readonly SerializationOptions _options; private readonly INamingConvention _namingConvention; private readonly ITypeResolver _typeResolver; + private readonly ITypeInspector _typeDescriptor; + private readonly IObjectFactory _objectFactory; + private readonly Settings _settings; - public YamlSerializer(SerializationOptions options = SerializationOptions.None, INamingConvention namingConvention = null) + public YamlSerializer(SerializationOptions options = SerializationOptions.None, INamingConvention? namingConvention = null, Settings? settings = null) { _options = options; _namingConvention = namingConvention ?? NullNamingConvention.Instance; + _settings = settings ?? new Settings(); Converters = new List(); foreach (IYamlTypeConverter yamlTypeConverter in YamlTypeConverters.BuiltInConverters) @@ -38,6 +44,9 @@ public YamlSerializer(SerializationOptions options = SerializationOptions.None, _typeResolver = IsOptionSet(SerializationOptions.DefaultToStaticType) ? new StaticTypeResolver() : new DynamicTypeResolver(); + + _typeDescriptor = CreateTypeInspector(); + _objectFactory = new DefaultObjectFactory(); } private bool IsOptionSet(SerializationOptions option) @@ -66,7 +75,7 @@ private void EmitDocument(IEmitter emitter, IObjectDescriptor graph) emitter.Emit(new StreamStart()); emitter.Emit(new DocumentStart()); - traversalStrategy.Traverse(graph, emittingVisitor, emitter); + traversalStrategy.Traverse(graph, emittingVisitor, emitter, GetObjectSerializer(emitter)); emitter.Emit(new DocumentEnd(true)); emitter.Emit(new StreamEnd()); @@ -76,14 +85,17 @@ private IObjectGraphVisitor CreateEmittingVisitor(IEmitter emitter, IO { IObjectGraphVisitor emittingVisitor = new EmittingObjectGraphVisitor(eventEmitter); - void nestedObjectSerializer(object v, Type t = null) => SerializeValue(emitter, v, t); + emittingVisitor = new CustomSerializationObjectGraphVisitor(emittingVisitor, Converters, GetObjectSerializer(emitter)); + + void nestedObjectSerializer(object? v, Type? t = null) => SerializeValue(emitter, v, t); emittingVisitor = new CustomSerializationObjectGraphVisitor(emittingVisitor, Converters, nestedObjectSerializer); if (!IsOptionSet(SerializationOptions.DisableAliases)) { var anchorAssigner = new AnchorAssigner(Converters); - traversalStrategy.Traverse(graph, anchorAssigner, default); + + traversalStrategy.Traverse(graph, anchorAssigner, default, GetObjectSerializer(emitter)); emittingVisitor = new AnchorAssigningObjectGraphVisitor(emittingVisitor, eventEmitter, anchorAssigner); } @@ -96,7 +108,7 @@ private IObjectGraphVisitor CreateEmittingVisitor(IEmitter emitter, IO return emittingVisitor; } - public void SerializeValue(IEmitter emitter, object value, Type type) + public void SerializeValue(IEmitter emitter, object? value, Type? type) { var graph = type != null ? new BetterObjectDescriptor(value, type, type) @@ -110,7 +122,12 @@ public void SerializeValue(IEmitter emitter, object value, Type type) graph ); - traversalStrategy.Traverse(graph, emittingVisitor, emitter); + traversalStrategy.Traverse(graph, emittingVisitor, emitter, GetObjectSerializer(emitter)); + } + + private ObjectSerializer GetObjectSerializer(IEmitter emitter) + { + return (object? v, Type? t = null) => SerializeValue(emitter, v, t); } private IEventEmitter CreateEventEmitter() @@ -119,40 +136,39 @@ private IEventEmitter CreateEventEmitter() if (IsOptionSet(SerializationOptions.JsonCompatible)) { - return new JsonEventEmitter(writer, YamlFormatter.Default, NullNamingConvention.Instance); + return new JsonEventEmitter(writer, YamlFormatter.Default, NullNamingConvention.Instance, _typeDescriptor); } else { return new TypeAssigningEventEmitter( writer, - new Dictionary(), + new ConcurrentDictionary(), quoteNecessaryStrings: false, quoteYaml1_1Strings: false, defaultScalarStyle: ScalarStyle.Any, formatter: YamlFormatter.Default, - enumNamingConvention: NullNamingConvention.Instance); + enumNamingConvention: NullNamingConvention.Instance, + typeInspector: _typeDescriptor); } } private IObjectGraphTraversalStrategy CreateTraversalStrategy() + { + return IsOptionSet(SerializationOptions.Roundtrip) + ? new RoundtripObjectGraphTraversalStrategy(Converters, this, _typeDescriptor, _typeResolver, 50, _namingConvention, _settings, _objectFactory) + : new FullObjectGraphTraversalStrategy(this, _typeDescriptor, _typeResolver, 50, _namingConvention, _objectFactory); + } + + private ITypeInspector CreateTypeInspector() { ITypeInspector typeDescriptor = new EmitTypeInspector(_typeResolver); if (IsOptionSet(SerializationOptions.Roundtrip)) - { typeDescriptor = new ReadableAndWritablePropertiesTypeInspector(typeDescriptor); - } typeDescriptor = new NamingConventionTypeInspector(typeDescriptor, _namingConvention); typeDescriptor = new YamlAttributesTypeInspector(typeDescriptor); - if (IsOptionSet(SerializationOptions.Roundtrip)) - { - return new RoundtripObjectGraphTraversalStrategy(this, typeDescriptor, _typeResolver, 50); - } - else - { - return new FullObjectGraphTraversalStrategy(this, typeDescriptor, _typeResolver, 50, _namingConvention); - } + return typeDescriptor; } } diff --git a/src/docfx/Models/BuildCommand.cs b/src/docfx/Models/BuildCommand.cs index 4dcc87189a3..4ac804afbc7 100644 --- a/src/docfx/Models/BuildCommand.cs +++ b/src/docfx/Models/BuildCommand.cs @@ -56,7 +56,7 @@ internal static void MergeOptionsToConfig(BuildCommandOptions options, BuildJson { config.Xref = new ListWithStringFallback( - (config.Xref ?? new ListWithStringFallback()) + (config.Xref ?? []) .Concat(options.XRefMaps) .Where(x => !string.IsNullOrWhiteSpace(x)) .Distinct()); @@ -100,7 +100,7 @@ void SetGlobalMetadataFromCommandLineArgs() { if (options.Metadata != null) { - config.GlobalMetadata ??= new(); + config.GlobalMetadata ??= []; foreach (var metadata in options.Metadata) { var (key, value) = ParseMetadata(metadata); diff --git a/src/docfx/Models/CancellableCommandBase.cs b/src/docfx/Models/CancellableCommandBase.cs new file mode 100644 index 00000000000..471bb9556e7 --- /dev/null +++ b/src/docfx/Models/CancellableCommandBase.cs @@ -0,0 +1,33 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +#nullable enable + +using System.Runtime.InteropServices; +using Spectre.Console.Cli; + +namespace Docfx; + +public abstract class CancellableCommandBase : Command + where TSettings : CommandSettings +{ + public abstract int Execute(CommandContext context, TSettings settings, CancellationToken cancellation); + + public sealed override int Execute(CommandContext context, TSettings settings) + { + using var cancellationSource = new CancellationTokenSource(); + + using var sigInt = PosixSignalRegistration.Create(PosixSignal.SIGINT, onSignal); + using var sigQuit = PosixSignalRegistration.Create(PosixSignal.SIGQUIT, onSignal); + using var sigTerm = PosixSignalRegistration.Create(PosixSignal.SIGTERM, onSignal); + + var exitCode = Execute(context, settings, cancellationSource.Token); + return exitCode; + + void onSignal(PosixSignalContext context) + { + context.Cancel = true; + cancellationSource.Cancel(); + } + } +} diff --git a/src/docfx/Models/DefaultCommand.cs b/src/docfx/Models/DefaultCommand.cs index fd21157e4be..d026f949f5b 100644 --- a/src/docfx/Models/DefaultCommand.cs +++ b/src/docfx/Models/DefaultCommand.cs @@ -10,7 +10,7 @@ namespace Docfx; -class DefaultCommand : Command +class DefaultCommand : CancellableCommandBase { [Description("Runs metadata, build and pdf commands")] internal class Options : BuildCommandOptions @@ -20,7 +20,7 @@ internal class Options : BuildCommandOptions public bool Version { get; set; } } - public override int Execute(CommandContext context, Options options) + public override int Execute(CommandContext context, Options options, CancellationToken cancellationToken) { if (options.Version) { @@ -48,9 +48,9 @@ public override int Execute(CommandContext context, Options options) if (config.build is not null) { BuildCommand.MergeOptionsToConfig(options, config.build, configDirectory); - serveDirectory = RunBuild.Exec(config.build, new(), configDirectory, outputFolder); + serveDirectory = RunBuild.Exec(config.build, new(), configDirectory, outputFolder, cancellationToken); - PdfBuilder.CreatePdf(serveDirectory).GetAwaiter().GetResult(); + PdfBuilder.CreatePdf(serveDirectory, cancellationToken).GetAwaiter().GetResult(); } if (options.Serve && serveDirectory is not null) diff --git a/src/docfx/Models/MetadataCommand.cs b/src/docfx/Models/MetadataCommand.cs index 516990ca0be..520e27e413d 100644 --- a/src/docfx/Models/MetadataCommand.cs +++ b/src/docfx/Models/MetadataCommand.cs @@ -27,6 +27,7 @@ private static void MergeOptionsToConfig(MetadataCommandOptions options, DocfxCo item.ShouldSkipMarkup |= options.ShouldSkipMarkup; item.DisableGitFeatures |= options.DisableGitFeatures; item.DisableDefaultFilter |= options.DisableDefaultFilter; + item.NoRestore |= options.NoRestore; item.CategoryLayout = options.CategoryLayout ?? item.CategoryLayout; item.NamespaceLayout = options.NamespaceLayout ?? item.NamespaceLayout; item.MemberLayout = options.MemberLayout ?? item.MemberLayout; @@ -68,7 +69,7 @@ private static Dictionary ResolveMSBuildProperties(MetadataComma if (index > -1) { // Latter one overwrites former one - properties[pair.Substring(0, index)] = pair.Substring(index + 1, pair.Length - index - 1); + properties[pair.Substring(0, index)] = pair.Substring(index + 1); } } } diff --git a/src/docfx/Models/MetadataCommandOptions.cs b/src/docfx/Models/MetadataCommandOptions.cs index 2b4ef828c68..9b4ad66ef71 100644 --- a/src/docfx/Models/MetadataCommandOptions.cs +++ b/src/docfx/Models/MetadataCommandOptions.cs @@ -45,6 +45,10 @@ internal class MetadataCommandOptions : LogOptions [CommandOption("--disableDefaultFilter")] public bool DisableDefaultFilter { get; set; } + [Description("Do not run `dotnet restore` before building the projects")] + [CommandOption("--noRestore")] + public bool NoRestore { get; set; } + [Description("Determines the category layout in table of contents.")] [CommandOption("--categoryLayout")] public CategoryLayout? CategoryLayout { get; set; } diff --git a/src/docfx/Models/PdfCommand.cs b/src/docfx/Models/PdfCommand.cs index 067b11f52de..7a20db92cb8 100644 --- a/src/docfx/Models/PdfCommand.cs +++ b/src/docfx/Models/PdfCommand.cs @@ -1,22 +1,23 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics.CodeAnalysis; using Docfx.Pdf; using Spectre.Console.Cli; +#nullable enable + namespace Docfx; -internal class PdfCommand : Command +internal class PdfCommand : CancellableCommandBase { - public override int Execute([NotNull] CommandContext context, [NotNull] PdfCommandOptions options) + public override int Execute(CommandContext context, PdfCommandOptions options, CancellationToken cancellationToken) { return CommandHelper.Run(options, () => { var (config, configDirectory) = Docset.GetConfig(options.ConfigFile); if (config.build is not null) - PdfBuilder.Run(config.build, configDirectory, options.OutputFolder).GetAwaiter().GetResult(); + PdfBuilder.Run(config.build, configDirectory, options.OutputFolder, cancellationToken).GetAwaiter().GetResult(); }); } } diff --git a/src/docfx/Models/TemplateCommand.cs b/src/docfx/Models/TemplateCommand.cs index 2961c3d8857..b30ce1d4566 100644 --- a/src/docfx/Models/TemplateCommand.cs +++ b/src/docfx/Models/TemplateCommand.cs @@ -53,7 +53,7 @@ public override int Execute(CommandContext context, Options options) foreach (var template in templates) { - var manager = new TemplateManager(new List { template }, null, null); + var manager = new TemplateManager([template], null, null); if (manager.TryExportTemplateFiles(Path.Combine(outputFolder, template))) { Logger.LogInfo($"{template} is exported to {outputFolder}"); diff --git a/templates/.eslintrc.js b/templates/.eslintrc.js deleted file mode 100644 index ec366045dd9..00000000000 --- a/templates/.eslintrc.js +++ /dev/null @@ -1,16 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -module.exports = { - env: { - browser: true - }, - ignorePatterns: ['**/*.js'], - extends: ['standard', 'eslint:recommended', 'plugin:@typescript-eslint/recommended'], - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - root: true, - rules: { - 'space-before-function-paren': ['warn', 'never'], - } -}; diff --git a/templates/.stylelintrc.json b/templates/.stylelintrc.json deleted file mode 100644 index 5902a160d78..00000000000 --- a/templates/.stylelintrc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "stylelint-config-standard-scss", - "ignoreFiles": [ - "**/*.ts", - "**/*.js" - ], - "rules": { - "selector-class-pattern": null, - "media-feature-range-notation": null, - "font-family-no-missing-generic-family-keyword": [ true, { - "ignoreFontFamilies": [ - "bootstrap-icons" - ] - }], - "property-no-unknown": [ true, { - "ignoreProperties": [ "navigation" ] - }], - "scss/at-rule-no-unknown": [ true, { - "ignoreAtRules": [ "view-transition" ] - }] - } -} diff --git a/templates/build.js b/templates/build.js index 20f1cae68d5..4d3ec7d5d51 100644 --- a/templates/build.js +++ b/templates/build.js @@ -1,14 +1,15 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -const esbuild = require('esbuild') -const { sassPlugin } = require('esbuild-sass-plugin') -const bs = require('browser-sync') -const { cpSync, rmSync } = require('fs') -const { join } = require('path') -const { spawnSync } = require('child_process') -const yargs = require('yargs/yargs') -const { hideBin } = require('yargs/helpers') +import esbuild from 'esbuild' +import { sassPlugin } from 'esbuild-sass-plugin' +import bs from 'browser-sync' +import { cpSync, rmSync } from 'fs' +import { join } from 'path' +import { spawnSync } from 'child_process' +import yargs from 'yargs/yargs' +import { hideBin } from 'yargs/helpers' + const argv = yargs(hideBin(process.argv)).argv const watch = argv.watch @@ -56,7 +57,10 @@ async function buildModernTemplate() { './main.js' ], plugins: [ - sassPlugin() + sassPlugin({ + quetDeps: true, + silenceDeprecations: ['import', 'global-builtin', 'color-functions'], + }) ], loader, } diff --git a/templates/default/src/search-worker.js b/templates/default/src/search-worker.js index 77f8250ce86..91bff74279f 100644 --- a/templates/default/src/search-worker.js +++ b/templates/default/src/search-worker.js @@ -40,7 +40,7 @@ var results = []; hits.forEach(function (hit) { var item = searchData[hit.ref]; - results.push({ 'href': item.href, 'title': item.title, 'keywords': item.keywords }); + results.push({ 'href': item.href, 'title': item.title, 'summary': item.summary, 'keywords': item.keywords }); }); postMessage({ e: 'query-ready', q: q, d: results }); } @@ -51,7 +51,8 @@ this.pipeline.remove(lunr.stopWordFilter); this.ref('href'); this.field('title', { boost: 50 }); - this.field('keywords', { boost: 20 }); + this.field('keywords', { boost: 40 }); + this.field('summary', { boost: 20 }); for (var prop in searchData) { if (searchData.hasOwnProperty(prop)) { diff --git a/templates/default/styles/docfx.js b/templates/default/styles/docfx.js index 5bd62e28478..399435091f2 100644 --- a/templates/default/styles/docfx.js +++ b/templates/default/styles/docfx.js @@ -250,6 +250,9 @@ $(function () { } function extractContentBrief(content) { + if (!content) { + return + } var briefOffset = 512; var words = query.split(/\s+/g); var queryIndex = content.indexOf(words[0]); @@ -285,7 +288,7 @@ $(function () { var itemRawHref = relativeUrlToAbsoluteUrl(currentUrl, relHref + hit.href); var itemHref = relHref + hit.href + "?q=" + query; var itemTitle = hit.title; - var itemBrief = extractContentBrief(hit.keywords); + var itemBrief = extractContentBrief(hit.summary || ''); var itemNode = $('
').attr('class', 'sr-item'); var itemTitleNode = $('
').attr('class', 'item-title').append($('').attr('href', itemHref).attr("target", "_blank").attr("rel", "noopener noreferrer").text(itemTitle)); diff --git a/templates/default/toc.html.primary.js b/templates/default/toc.html.primary.js index 479a87e3568..cb5c60d5a61 100644 --- a/templates/default/toc.html.primary.js +++ b/templates/default/toc.html.primary.js @@ -59,6 +59,16 @@ function transformMemberPage(model) { "delegate": { key: "delegatesInSubtitle" }, }; + var groupBy = [ + "Constructor", + "Field", + "Property", + "Method", + "Event", + "Operator", + "Eii", + ]; + groupChildren(model); transformItem(model, 1); return model; @@ -71,7 +81,7 @@ function transformMemberPage(model) { var items = []; item.items.forEach(function (element) { groupChildren(element); - if (element.type) { + if (element.type && groupBy.includes(element.type)) { var type = element.isEii ? "eii" : element.type.toLowerCase(); if (!grouped.hasOwnProperty(type)) { if (!groupNames.hasOwnProperty(type)) { diff --git a/templates/default/toc.json.js b/templates/default/toc.json.js index eaeb71d2cd5..b25de8c1362 100644 --- a/templates/default/toc.json.js +++ b/templates/default/toc.json.js @@ -15,18 +15,18 @@ exports.transform = function (model) { if (extension && extension.postTransform) { model = extension.postTransform(model); } - + for (var key in model) { if (key[0] === '_') { delete model[key] } } - + return { content: JSON.stringify(model) }; } - + function transformMemberPage(model) { var groupNames = { "constructor": { key: "constructorsInSubtitle" }, @@ -43,11 +43,21 @@ exports.transform = function (model) { "namespace": { key: "namespacesInSubtitle" }, "delegate": { key: "delegatesInSubtitle" }, }; - + + var groupBy = [ + "Constructor", + "Field", + "Property", + "Method", + "Event", + "Operator", + "Eii", + ]; + groupChildren(model); transformItem(model, 1); return model; - + function groupChildren(item) { if (!item || !item.items || item.items.length == 0) { return; @@ -56,7 +66,7 @@ exports.transform = function (model) { var items = []; item.items.forEach(function (element) { groupChildren(element); - if (element.type) { + if (element.type && groupBy.includes(element.type)) { var type = element.isEii ? "eii" : element.type.toLowerCase(); if (!grouped.hasOwnProperty(type)) { if (!groupNames.hasOwnProperty(type)) { @@ -72,7 +82,7 @@ exports.transform = function (model) { items.push(element); } }, this); - + // With order defined in groupNames for (var key in groupNames) { if (groupNames.hasOwnProperty(key) && grouped.hasOwnProperty(key)) { @@ -82,18 +92,18 @@ exports.transform = function (model) { }) } } - + item.items = items; } - + function transformItem(item, level) { // set to null in case mustache looks up item.topicHref = item.topicHref || null; item.tocHref = item.tocHref || null; item.name = item.name || null; - + item.level = level; - + if (item.items && item.items.length > 0) { item.leaf = false; var length = item.items.length; @@ -106,4 +116,3 @@ exports.transform = function (model) { } } } - \ No newline at end of file diff --git a/templates/eslint.config.js b/templates/eslint.config.js new file mode 100644 index 00000000000..245532dd159 --- /dev/null +++ b/templates/eslint.config.js @@ -0,0 +1,33 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +import {defineConfig, globalIgnores} from 'eslint/config' +import js from '@eslint/js' +import tsesLint from 'typescript-eslint' +import tsesLintParser from '@typescript-eslint/parser' +import tsesLintPlugin from '@typescript-eslint/eslint-plugin' +import neostandard from 'neostandard'; + +export default defineConfig([ + js.configs.recommended, + tsesLint.configs.recommended, + ...neostandard({ + ts: true, + }), + { + languageOptions: { + parser: tsesLintParser, + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + plugins: { + "@typescript-eslint": tsesLintPlugin, + }, + rules: { + "@stylistic/space-before-function-paren": ["error", "never"], + }, + }, + globalIgnores(["**/*.js"]) +]) diff --git a/templates/modern/partials/class.header.tmpl.partial b/templates/modern/partials/class.header.tmpl.partial index 64168b21533..7f442c64c5f 100644 --- a/templates/modern/partials/class.header.tmpl.partial +++ b/templates/modern/partials/class.header.tmpl.partial @@ -139,7 +139,8 @@
{{#children}}
{{syntax.content.0.value}}
-
{{{summary}}}
+ {{#remarks}}
{{{summary}}}{{{remarks}}}
{{/remarks}} + {{^remarks}}
{{{summary}}}
{{/remarks}} {{/children}}
{{/children}} diff --git a/templates/modern/src/docfx.scss b/templates/modern/src/docfx.scss index a4a6d6d90ac..94f13fd42c0 100644 --- a/templates/modern/src/docfx.scss +++ b/templates/modern/src/docfx.scss @@ -25,8 +25,7 @@ h5, h6, .xref, .text-break { - word-wrap: break-word; - word-break: break-word; + overflow-wrap: break-word; } .divider { diff --git a/templates/modern/src/nav.scss b/templates/modern/src/nav.scss index 7b1447b5f43..cb1dec4d612 100644 --- a/templates/modern/src/nav.scss +++ b/templates/modern/src/nav.scss @@ -71,6 +71,7 @@ position: absolute; left: .8rem; opacity: .5; + pointer-events: none; } >input { diff --git a/templates/modern/src/nav.ts b/templates/modern/src/nav.ts index 7ff75dcce26..1d55e89800c 100644 --- a/templates/modern/src/nav.ts +++ b/templates/modern/src/nav.ts @@ -127,8 +127,8 @@ function inThisArticle(): TemplateResult { return html`
${loc('inThisArticle')}
` } } diff --git a/templates/modern/src/search-worker.ts b/templates/modern/src/search-worker.ts index acaeee140c4..bbadfa433b7 100644 --- a/templates/modern/src/search-worker.ts +++ b/templates/modern/src/search-worker.ts @@ -10,6 +10,7 @@ import { get, set, createStore } from 'idb-keyval' type SearchHit = { href: string title: string + summary: string keywords: string } @@ -47,7 +48,8 @@ async function loadIndex({ lunrLanguages }: { lunrLanguages?: string[] }) { this.ref('href') this.field('title', { boost: 50 }) - this.field('keywords', { boost: 20 }) + this.field('keywords', { boost: 40 }) + this.field('summary', { boost: 20 }) if (lunrLanguages && lunrLanguages.length > 0) { this.use(lunr.multiLanguage(...lunrLanguages)) diff --git a/templates/modern/src/search.ts b/templates/modern/src/search.ts index aef1c540b61..5eebcc9d413 100644 --- a/templates/modern/src/search.ts +++ b/templates/modern/src/search.ts @@ -8,6 +8,7 @@ import { classMap } from 'lit-html/directives/class-map.js' type SearchHit = { href: string title: string + summary: string keywords: string } @@ -34,6 +35,11 @@ export async function enableSearch() { case 'index-ready': searchQuery.disabled = false searchQuery.addEventListener('input', onSearchQueryInput) + searchQuery.addEventListener('keypress', function(e) { + if (e.key === 'Enter') { + event.preventDefault() + } + }) window.docfx.searchReady = true break case 'query-ready': @@ -56,7 +62,8 @@ export async function enableSearch() { if (query === '') { document.body.removeAttribute('data-search') } else { - worker.postMessage({ q: query }) + const additiveQuery = query.replace(/\s+/g, ' ').split(' ').map(w => '+' + w).join(' ') + worker.postMessage({ q: additiveQuery }) } } @@ -108,7 +115,7 @@ export async function enableSearch() { const currentUrl = window.location.href const itemRawHref = relativeUrlToAbsoluteUrl(currentUrl, relHref + hit.href) const itemHref = relHref + hit.href + '?q=' + query - const itemBrief = extractContentBrief(hit.keywords) + const itemBrief = hit.summary ? extractContentBrief(hit.summary) : '' return html`
diff --git a/templates/modern/src/toc.scss b/templates/modern/src/toc.scss index 70a7a03a900..6b39640d14d 100644 --- a/templates/modern/src/toc.scss +++ b/templates/modern/src/toc.scss @@ -84,6 +84,7 @@ $expand-stub-width: .85rem; position: absolute; left: .6rem; opacity: .5; + pointer-events: none; } >input { diff --git a/templates/package-lock.json b/templates/package-lock.json index c2115e67155..3f0f6fdfbb3 100644 --- a/templates/package-lock.json +++ b/templates/package-lock.json @@ -18,177 +18,141 @@ "@default/url": "npm:@websanova/url@2.6.3", "@websanova/url": "^2.6.3", "anchor-js": "^5.0.0", - "bootstrap": "^5.3.3", - "bootstrap-icons": "^1.11.3", + "bootstrap": "^5.3.8", + "bootstrap-icons": "^1.13.1", "highlight.js": "^11.10.0", - "idb-keyval": "^6.2.1", + "idb-keyval": "^6.2.2", "jquery": "3.7.0", - "lit-html": "^3.2.1", + "lit-html": "^3.3.1", "lunr": "2.3.9", "lunr-languages": "^1.14.0", "mathjax": "^3.2.2", - "mermaid": "^11.4.0", - "tsx": "^4.19.2" + "mermaid": "^11.12.0", + "tsx": "^4.20.6" }, "devDependencies": { + "@eslint/js": "^9.38.0", "@types/lunr": "^2.3.7", - "@typescript-eslint/eslint-plugin": "^8.16.0", - "@typescript-eslint/parser": "^8.16.0", - "browser-sync": "^3.0.3", - "esbuild": "~0.24.0", + "@typescript-eslint/eslint-plugin": "^8.44.1", + "@typescript-eslint/parser": "^8.44.1", + "browser-sync": "^3.0.4", + "esbuild": "~0.25.11", "esbuild-sass-plugin": "~3.3.1", - "eslint": "^8.57.1", - "eslint-config-standard": "^17.1.0", - "stylelint": "^16.10.0", - "stylelint-config-standard-scss": "^13.1.0", - "typescript": "^5.7.2", - "yargs": "^17.7.2" + "eslint": "^9.38.0", + "neostandard": "^0.12.2", + "stylelint": "^16.25.0", + "stylelint-config-standard-scss": "^16.0.0", + "typescript": "^5.9.3", + "yargs": "^18.0.0" } }, "node_modules/@antfu/install-pkg": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.4.1.tgz", - "integrity": "sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", "dependencies": { - "package-manager-detector": "^0.2.0", - "tinyexec": "^0.3.0" + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-TMilPqXyii1AsiEii6l6ubRzbo76p6oshUSYPaKsmXDavyMLqjzVDkcp3pHp5ELMUNJHATcEOGxKTTsX9yYhGg==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.25.7", - "picocolors": "^1.0.0" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "license": "MIT" }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@bufbuild/protobuf": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.9.0.tgz", + "integrity": "sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } + "license": "(Apache-2.0 AND BSD-3-Clause)", + "peer": true }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@cacheable/memoize": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@cacheable/memoize/-/memoize-2.0.2.tgz", + "integrity": "sha512-wPrr7FUiq3Qt4yQyda2/NcOLTJCFcQSU3Am2adP+WLy+sz93/fKTokVTHmtz+rjp4PD7ee0AEOeRVNN6IvIfsg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "@cacheable/utils": "^2.0.2" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@cacheable/memory": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.2.tgz", + "integrity": "sha512-sJTITLfeCI1rg7P3ssaGmQryq235EGT8dXGcx6oZwX5NRnKq9IE6lddlllcOl+oXW+yaeTRddCjo0xrfU6ZySA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" + "@cacheable/memoize": "^2.0.1", + "@cacheable/utils": "^2.0.2", + "@keyv/bigmap": "^1.0.2", + "hookified": "^1.12.1", + "keyv": "^5.5.2" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@cacheable/memory/node_modules/keyv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.2.tgz", + "integrity": "sha512-TXcFHbmm/z7MGd1u9ASiCSfTS+ei6Z8B3a5JHzx3oPa/o7QzWVtPRpc4KGER5RR469IC+/nfg4U5YLIuDUua2g==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "@keyv/serialize": "^1.1.1" } }, - "node_modules/@braintree/sanitize-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz", - "integrity": "sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==" - }, - "node_modules/@bufbuild/protobuf": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.0.tgz", - "integrity": "sha512-+imAQkHf7U/Rwvu0wk1XWgsP3WnpCWmK7B48f0XqSNzgk64+grljTKC7pnO/xBiEMUziF7vKRfbBnOQhg126qQ==", + "node_modules/@cacheable/utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.0.2.tgz", + "integrity": "sha512-JTFM3raFhVv8LH95T7YnZbf2YoE9wEtkPPStuRF9a6ExZ103hFvs+QyCuYJ6r0hA9wRtbzgZtwUCoDWxssZd4Q==", "dev": true, - "peer": true + "license": "MIT" }, "node_modules/@chevrotain/cst-dts-gen": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "license": "Apache-2.0", "dependencies": { "@chevrotain/gast": "11.0.3", "@chevrotain/types": "11.0.3", @@ -199,6 +163,7 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", "dependencies": { "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" @@ -207,22 +172,25 @@ "node_modules/@chevrotain/regexp-to-ast": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0" }, "node_modules/@chevrotain/types": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0" }, "node_modules/@chevrotain/utils": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0" }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.2.tgz", - "integrity": "sha512-6tC/MnlEvs5suR4Ahef4YlBccJDHZuxGsAlxXmybWjZ5jPxlzLSMlRZ9mVHSRvlD+CmtE7+hJ+UQbfXrws/rUQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "dev": true, "funding": [ { @@ -234,17 +202,18 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.2" + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.2.tgz", - "integrity": "sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "dev": true, "funding": [ { @@ -256,14 +225,15 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@csstools/media-query-list-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", - "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", "dev": true, "funding": [ { @@ -275,18 +245,19 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, "node_modules/@csstools/selector-specificity": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", - "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", "dev": true, "funding": [ { @@ -298,24 +269,27 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "engines": { "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.1.0" + "postcss-selector-parser": "^7.0.0" } }, "node_modules/@default/anchor-js": { "name": "anchor-js", "version": "5.0.0", "resolved": "https://registry.npmjs.org/anchor-js/-/anchor-js-5.0.0.tgz", - "integrity": "sha512-2bOqCsBIXAYhjAN3iI4QevoAJtB2gRWAiY9P3P7CVW8lIjA3Dl6ldhDlWeeQvCHif+V5vIndfLOag/5I8tzTzA==" + "integrity": "sha512-2bOqCsBIXAYhjAN3iI4QevoAJtB2gRWAiY9P3P7CVW8lIjA3Dl6ldhDlWeeQvCHif+V5vIndfLOag/5I8tzTzA==", + "license": "MIT" }, "node_modules/@default/bootstrap": { "name": "bootstrap", "version": "3.4.1", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -325,6 +299,7 @@ "version": "11.8.0", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", + "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" } @@ -333,18 +308,21 @@ "name": "lunr", "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" }, "node_modules/@default/mark.js": { "name": "mark.js", "version": "8.11.1", "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==" + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "license": "MIT" }, "node_modules/@default/twbs-pagination": { "name": "twbs-pagination", "version": "1.3.1", "resolved": "git+ssh://git@github.com/josecebe/twbs-pagination.git#a0ceda4b492030ca12081ce08c1acca1d295c0ed", + "license": "Apache 2.0", "dependencies": { "jquery": ">=1.7.0" } @@ -353,272 +331,1144 @@ "name": "@websanova/url", "version": "2.6.3", "resolved": "https://registry.npmjs.org/@websanova/url/-/url-2.6.3.tgz", - "integrity": "sha512-+gLI+9nIVPg3X4VcC30MUrGd9/DmYPla2ryzl7qKzIbH07wgsgy99H2WRsSFweVgV4FLkTHEpClj1//t0u+FLw==" + "integrity": "sha512-+gLI+9nIVPg3X4VcC30MUrGd9/DmYPla2ryzl7qKzIbH07wgsgy99H2WRsSFweVgV4FLkTHEpClj1//t0u+FLw==", + "license": "MIT, GPL" }, "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", + "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", "dev": true, + "license": "MIT", "funding": { "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/JounQin" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "node_modules/@emnapi/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", + "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", "cpu": [ - "x64" + "ppc64" ], - "dev": true, + "license": "MIT", "optional": true, "os": [ - "win32" + "aix" ], "engines": { "node": ">=18" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=18" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", - "dev": true, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10.10.0" + "node": ">=18" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@esbuild/linux-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", + "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "license": "Apache-2.0", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" }, "node_modules/@iconify/utils": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.33.tgz", - "integrity": "sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.2.tgz", + "integrity": "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==", + "license": "MIT", "dependencies": { - "@antfu/install-pkg": "^0.4.0", - "@antfu/utils": "^0.7.10", + "@antfu/install-pkg": "^1.1.0", + "@antfu/utils": "^9.2.0", "@iconify/types": "^2.0.0", - "debug": "^4.3.6", + "debug": "^4.4.1", + "globals": "^15.15.0", "kolorist": "^1.8.0", - "local-pkg": "^0.5.0", - "mlly": "^1.7.1" + "local-pkg": "^1.1.1", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/utils/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@keyv/bigmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.0.2.tgz", + "integrity": "sha512-KR03xkEZlAZNF4IxXgVXb+uNIVNvwdh8UwI0cnc7WI6a+aQcDp8GL80qVfeB4E5NpsKJzou5jU0r6yLSSbMOtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.12.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mermaid-js/parser": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz", + "integrity": "sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@mermaid-js/parser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.3.0.tgz", - "integrity": "sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==", - "dependencies": { - "langium": "3.0.0" + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", - "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">= 10.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.4.1", - "@parcel/watcher-darwin-arm64": "2.4.1", - "@parcel/watcher-darwin-x64": "2.4.1", - "@parcel/watcher-freebsd-x64": "2.4.1", - "@parcel/watcher-linux-arm-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-musl": "2.4.1", - "@parcel/watcher-linux-x64-glibc": "2.4.1", - "@parcel/watcher-linux-x64-musl": "2.4.1", - "@parcel/watcher-win32-arm64": "2.4.1", - "@parcel/watcher-win32-ia32": "2.4.1", - "@parcel/watcher-win32-x64": "2.4.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", - "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -635,36 +1485,83 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "peer": true - }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "node_modules/@stylistic/eslint-plugin": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.11.0.tgz", + "integrity": "sha512-PNRHbydNG5EH8NK4c+izdJlxajIR6GxcUhzsYNRsn6Myep4dsZt0qFCz3rCPnkvgO5FYibDcMqgNHUT+zvjYZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -673,6 +1570,7 @@ "version": "7.4.3", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", @@ -707,14 +1605,16 @@ } }, "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" }, "node_modules/@types/d3-axis": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -723,6 +1623,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -730,17 +1631,20 @@ "node_modules/@types/d3-chord": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==" + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" @@ -749,17 +1653,20 @@ "node_modules/@types/d3-delaunay": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==" + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" }, "node_modules/@types/d3-dispatch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" }, "node_modules/@types/d3-drag": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -767,17 +1674,20 @@ "node_modules/@types/d3-dsv": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==" + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" }, "node_modules/@types/d3-fetch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", "dependencies": { "@types/d3-dsv": "*" } @@ -785,17 +1695,20 @@ "node_modules/@types/d3-force": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==" + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" }, "node_modules/@types/d3-format": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==" + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" }, "node_modules/@types/d3-geo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", "dependencies": { "@types/geojson": "*" } @@ -803,81 +1716,95 @@ "node_modules/@types/d3-hierarchy": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==" + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", "dependencies": { "@types/d3-color": "*" } }, "node_modules/@types/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" }, "node_modules/@types/d3-polygon": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==" + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" }, "node_modules/@types/d3-quadtree": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==" + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" }, "node_modules/@types/d3-random": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==" + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" }, "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==" + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" }, "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", "dependencies": { "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" }, "node_modules/@types/d3-time-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==" + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -886,66 +1813,71 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, - "node_modules/@types/dompurify": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", - "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", - "dependencies": { - "@types/trusted-types": "*" - } + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, - "peer": true + "license": "MIT" }, "node_modules/@types/lunr": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.7.tgz", "integrity": "sha512-Tb/kUm38e8gmjahQzdCKhbdsvQ9/ppzHFfsJ0dMs3ckqQsRj+P5IkSAwFTBrBxdyr3E/LoMUUrZngjDYAjiE3A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "22.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", - "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", + "version": "24.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.2.tgz", + "integrity": "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~7.12.0" } }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", - "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.44.1.tgz", + "integrity": "sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/type-utils": "8.16.0", - "@typescript-eslint/utils": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/scope-manager": "8.44.1", + "@typescript-eslint/type-utils": "8.44.1", + "@typescript-eslint/utils": "8.44.1", + "@typescript-eslint/visitor-keys": "8.44.1", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -955,25 +1887,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.44.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", - "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.44.1.tgz", + "integrity": "sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/scope-manager": "8.44.1", + "@typescript-eslint/types": "8.44.1", + "@typescript-eslint/typescript-estree": "8.44.1", + "@typescript-eslint/visitor-keys": "8.44.1", "debug": "^4.3.4" }, "engines": { @@ -984,22 +1913,41 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.44.1.tgz", + "integrity": "sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.44.1", + "@typescript-eslint/types": "^8.44.1", + "debug": "^4.3.4" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", - "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.44.1.tgz", + "integrity": "sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0" + "@typescript-eslint/types": "8.44.1", + "@typescript-eslint/visitor-keys": "8.44.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1009,16 +1957,35 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.44.1.tgz", + "integrity": "sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", - "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.44.1.tgz", + "integrity": "sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.16.0", - "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/types": "8.44.1", + "@typescript-eslint/typescript-estree": "8.44.1", + "@typescript-eslint/utils": "8.44.1", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1028,19 +1995,16 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", - "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.44.1.tgz", + "integrity": "sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -1050,19 +2014,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", - "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.44.1.tgz", + "integrity": "sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/visitor-keys": "8.16.0", + "@typescript-eslint/project-service": "8.44.1", + "@typescript-eslint/tsconfig-utils": "8.44.1", + "@typescript-eslint/types": "8.44.1", + "@typescript-eslint/visitor-keys": "8.44.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1071,22 +2038,21 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", - "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.44.1.tgz", + "integrity": "sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.16.0", - "@typescript-eslint/types": "8.16.0", - "@typescript-eslint/typescript-estree": "8.16.0" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.44.1", + "@typescript-eslint/types": "8.44.1", + "@typescript-eslint/typescript-estree": "8.44.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1096,22 +2062,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", - "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.44.1.tgz", + "integrity": "sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.16.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.44.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1122,10 +2085,11 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -1133,22 +2097,287 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@websanova/url": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@websanova/url/-/url-2.6.3.tgz", - "integrity": "sha512-+gLI+9nIVPg3X4VcC30MUrGd9/DmYPla2ryzl7qKzIbH07wgsgy99H2WRsSFweVgV4FLkTHEpClj1//t0u+FLw==" + "integrity": "sha512-+gLI+9nIVPg3X4VcC30MUrGd9/DmYPla2ryzl7qKzIbH07wgsgy99H2WRsSFweVgV4FLkTHEpClj1//t0u+FLw==", + "license": "MIT, GPL" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -1158,9 +2387,10 @@ } }, "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1173,6 +2403,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1182,6 +2413,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1196,13 +2428,15 @@ "node_modules/anchor-js": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/anchor-js/-/anchor-js-5.0.0.tgz", - "integrity": "sha512-2bOqCsBIXAYhjAN3iI4QevoAJtB2gRWAiY9P3P7CVW8lIjA3Dl6ldhDlWeeQvCHif+V5vIndfLOag/5I8tzTzA==" + "integrity": "sha512-2bOqCsBIXAYhjAN3iI4QevoAJtB2gRWAiY9P3P7CVW8lIjA3Dl6ldhDlWeeQvCHif+V5vIndfLOag/5I8tzTzA==", + "license": "MIT" }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1212,6 +2446,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1227,6 +2462,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1239,17 +2475,18 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -1259,18 +2496,20 @@ } }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -1284,16 +2523,17 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/array.prototype.findlastindex": { + "node_modules/array.prototype.findlast": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -1310,16 +2550,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -1329,16 +2569,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -1347,21 +2587,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -1375,6 +2631,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1384,6 +2641,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.14" } @@ -1393,16 +2651,27 @@ "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -1417,13 +2686,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } @@ -1432,13 +2703,15 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -1447,9 +2720,9 @@ } }, "node_modules/bootstrap": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", - "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", "funding": [ { "type": "github", @@ -1460,14 +2733,15 @@ "url": "https://opencollective.com/bootstrap" } ], + "license": "MIT", "peerDependencies": { "@popperjs/core": "^2.11.8" } }, "node_modules/bootstrap-icons": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz", - "integrity": "sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.13.1.tgz", + "integrity": "sha512-ijombt4v6bv5CLeXvRWKy7CuM3TRTuPEuGaGKvTV5cz65rQSY8RQ2JcHt6b90cBBAC7s8fsf2EkQDldzCoXUjw==", "funding": [ { "type": "github", @@ -1477,13 +2751,15 @@ "type": "opencollective", "url": "https://opencollective.com/bootstrap" } - ] + ], + "license": "MIT" }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1493,6 +2769,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1501,13 +2778,14 @@ } }, "node_modules/browser-sync": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", - "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.4.tgz", + "integrity": "sha512-mcYOIy4BW6sWSEnTSBjQwWsnbx2btZX78ajTTjdNfyC/EqQVcIe0nQR6894RNAMtvlfAnLaH9L2ka97zpvgenA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "browser-sync-client": "^3.0.3", - "browser-sync-ui": "^3.0.3", + "browser-sync-client": "^3.0.4", + "browser-sync-ui": "^3.0.4", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -1515,7 +2793,7 @@ "connect-history-api-fallback": "^1", "dev-ip": "^1.0.1", "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", + "eazy-logger": "^4.1.0", "etag": "^1.8.1", "fresh": "^0.5.2", "fs-extra": "3.0.1", @@ -1543,10 +2821,11 @@ } }, "node_modules/browser-sync-client": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", - "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.4.tgz", + "integrity": "sha512-+ew5ubXzGRKVjquBL3u6najS40TG7GxCdyBll0qSRc/n+JRV9gb/yDdRL1IAgRHqjnJTdqeBKKIQabjvjRSYRQ==", "dev": true, + "license": "ISC", "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", @@ -1557,10 +2836,11 @@ } }, "node_modules/browser-sync-ui": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", - "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.4.tgz", + "integrity": "sha512-5Po3YARCZ/8yQHFzvrSjn8+hBUF7ZWac39SHsy8Tls+7tE62iq6pYWxpVU6aOOMAGD21RwFQhQeqmJPf70kHEQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async-each-series": "0.1.1", "chalk": "4.1.2", @@ -1571,63 +2851,159 @@ "stream-throttle": "^0.1.3" } }, + "node_modules/browser-sync/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/browser-sync/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/browser-sync/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/browser-sync/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/bs-recipes": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/buffer-builder": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", "dev": true, + "license": "MIT/X11", "peer": true }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "peer": true, + "license": "MIT", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "node_modules/cacheable": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.0.2.tgz", + "integrity": "sha512-dWjhLx8RWnPsAWVKwW/wI6OJpQ/hSVb1qS0NUif8TR9vRiSwci7Gey8x04kRU9iAF+Rnbtex5Kjjfg/aB5w8Pg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "semver": "^7.0.0" + "@cacheable/memoize": "^2.0.2", + "@cacheable/memory": "^2.0.2", + "@cacheable/utils": "^2.0.2", + "hookified": "^1.12.1", + "keyv": "^5.5.2" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/cacheable/node_modules/keyv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.2.tgz", + "integrity": "sha512-TXcFHbmm/z7MGd1u9ASiCSfTS+ei6Z8B3a5JHzx3oPa/o7QzWVtPRpc4KGER5RR469IC+/nfg4U5YLIuDUua2g==", "dev": true, - "engines": { - "node": ">= 0.8" + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -1641,6 +3017,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1650,6 +3027,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1665,6 +3043,7 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", @@ -1678,6 +3057,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", "dependencies": { "lodash-es": "^4.17.21" }, @@ -1690,6 +3070,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1710,17 +3091,72 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, + "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/color-convert": { @@ -1728,6 +3164,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1739,45 +3176,62 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorjs.io": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "license": "MIT" }, "node_modules/connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.0", @@ -1793,6 +3247,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -1802,6 +3257,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -1810,13 +3266,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1826,6 +3284,7 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -1838,6 +3297,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", "dependencies": { "layout-base": "^1.0.0" } @@ -1847,6 +3307,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -1869,10 +3330,11 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1887,17 +3349,19 @@ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12 || >=16" } }, "node_modules/css-tree": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", - "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, + "license": "MIT", "dependencies": { - "mdn-data": "2.10.0", + "mdn-data": "2.12.2", "source-map-js": "^1.0.1" }, "engines": { @@ -1909,6 +3373,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -1917,9 +3382,10 @@ } }, "node_modules/cytoscape": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.2.tgz", - "integrity": "sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", "engines": { "node": ">=0.10" } @@ -1928,6 +3394,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", "dependencies": { "cose-base": "^1.0.0" }, @@ -1939,6 +3406,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", "dependencies": { "cose-base": "^2.2.0" }, @@ -1950,6 +3418,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", "dependencies": { "layout-base": "^2.0.0" } @@ -1957,12 +3426,14 @@ "node_modules/cytoscape-fcose/node_modules/layout-base": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -2003,6 +3474,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -2014,6 +3486,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2022,6 +3495,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -2037,6 +3511,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -2048,6 +3523,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2056,6 +3532,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -2067,6 +3544,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -2078,6 +3556,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2086,6 +3565,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -2098,6 +3578,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -2122,6 +3603,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -2130,6 +3612,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -2141,6 +3624,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -2154,6 +3638,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2162,6 +3647,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -2173,6 +3659,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2181,6 +3668,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -2192,6 +3680,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2200,6 +3689,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2208,6 +3698,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2216,6 +3707,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2224,6 +3716,7 @@ "version": "0.12.3", "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" @@ -2233,6 +3726,7 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", "dependencies": { "internmap": "^1.0.0" } @@ -2240,12 +3734,14 @@ "node_modules/d3-sankey/node_modules/d3-path": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" }, "node_modules/d3-sankey/node_modules/d3-shape": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" } @@ -2253,12 +3749,14 @@ "node_modules/d3-sankey/node_modules/internmap": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -2274,6 +3772,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -2286,6 +3785,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2294,6 +3794,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -2305,6 +3806,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -2316,6 +3818,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -2327,6 +3830,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -2335,6 +3839,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -2353,6 +3858,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -2368,21 +3874,22 @@ "version": "7.0.11", "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", + "license": "MIT", "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2392,31 +3899,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -2428,14 +3935,16 @@ } }, "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + "version": "1.11.18", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2452,14 +3961,15 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2477,7 +3987,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -2494,6 +4004,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" } @@ -2503,6 +4014,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2512,6 +4024,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -2522,6 +4035,8 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, + "license": "Apache-2.0", + "optional": true, "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -2546,6 +4061,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -2554,22 +4070,42 @@ } }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dompurify": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" } }, - "node_modules/dompurify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", - "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==" - }, "node_modules/easy-extender": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", @@ -2583,9 +4119,9 @@ } }, "node_modules/eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.1.0.tgz", + "integrity": "sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==", "dev": true, "dependencies": { "chalk": "4.1.2" @@ -2598,30 +4134,33 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/engine.io": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", - "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "dev": true, + "license": "MIT", "dependencies": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", @@ -2637,10 +4176,11 @@ } }, "node_modules/engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", + "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", @@ -2649,86 +4189,147 @@ "xmlhttprequest-ssl": "~2.1.1" } }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/engine.io-parser": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "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.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "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.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", + "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "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.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "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.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "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.19" }, "engines": { "node": ">= 0.4" @@ -2738,14 +4339,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2755,17 +4353,45 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "peer": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, "engines": { "node": ">= 0.4" } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -2774,40 +4400,44 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -2817,11 +4447,11 @@ } }, "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", - "dev": true, + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -2829,30 +4459,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" + "@esbuild/aix-ppc64": "0.25.11", + "@esbuild/android-arm": "0.25.11", + "@esbuild/android-arm64": "0.25.11", + "@esbuild/android-x64": "0.25.11", + "@esbuild/darwin-arm64": "0.25.11", + "@esbuild/darwin-x64": "0.25.11", + "@esbuild/freebsd-arm64": "0.25.11", + "@esbuild/freebsd-x64": "0.25.11", + "@esbuild/linux-arm": "0.25.11", + "@esbuild/linux-arm64": "0.25.11", + "@esbuild/linux-ia32": "0.25.11", + "@esbuild/linux-loong64": "0.25.11", + "@esbuild/linux-mips64el": "0.25.11", + "@esbuild/linux-ppc64": "0.25.11", + "@esbuild/linux-riscv64": "0.25.11", + "@esbuild/linux-s390x": "0.25.11", + "@esbuild/linux-x64": "0.25.11", + "@esbuild/netbsd-arm64": "0.25.11", + "@esbuild/netbsd-x64": "0.25.11", + "@esbuild/openbsd-arm64": "0.25.11", + "@esbuild/openbsd-x64": "0.25.11", + "@esbuild/openharmony-arm64": "0.25.11", + "@esbuild/sunos-x64": "0.25.11", + "@esbuild/win32-arm64": "0.25.11", + "@esbuild/win32-ia32": "0.25.11", + "@esbuild/win32-x64": "0.25.11" } }, "node_modules/esbuild-sass-plugin": { @@ -2860,6 +4492,7 @@ "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-3.3.1.tgz", "integrity": "sha512-SnO1ls+d52n6j8gRRpjexXI8MsHEaumS0IdDHaYM29Y6gakzZYMls6i9ql9+AWMSQk/eryndmUpXEgT34QrX1A==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.22.8", "safe-identifier": "^0.4.2", @@ -2875,6 +4508,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2883,13 +4517,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2898,59 +4534,63 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.1", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.38.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-compat-utils": { @@ -2958,7 +4598,7 @@ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "semver": "^7.5.4" }, @@ -2969,85 +4609,66 @@ "eslint": ">=6.0.0" } }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, "engines": { - "node": ">=12.0.0" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" }, "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "peer": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } } }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", "dev": true, - "peer": true, + "license": "ISC", "dependencies": { - "debug": "^3.2.7" + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.13", + "unrs-resolver": "^1.6.2" }, "engines": { - "node": ">=4" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" }, "peerDependenciesMeta": { - "eslint": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { "optional": true } } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/eslint-plugin-es-x": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", @@ -3057,7 +4678,7 @@ "https://github.com/sponsors/ota-meshi", "https://opencollective.com/eslint" ], - "peer": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", "@eslint-community/regexpp": "^4.11.0", @@ -3070,143 +4691,162 @@ "eslint": ">=8" } }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "node_modules/eslint-plugin-import-x": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.1.tgz", + "integrity": "sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "@typescript-eslint/types": "^8.35.0", + "comment-parser": "^1.4.1", + "debug": "^4.4.1", + "eslint-import-context": "^0.1.9", "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" + "minimatch": "^9.0.3 || ^10.0.1", + "semver": "^7.7.2", + "stable-hash-x": "^0.2.0", + "unrs-resolver": "^1.9.2" }, "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-import-x" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "^2.1.1" + "@typescript-eslint/utils": "^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "eslint-import-resolver-node": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/utils": { + "optional": true + }, + "eslint-import-resolver-node": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/eslint-plugin-n": { + "version": "17.23.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", + "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "@eslint-community/eslint-utils": "^4.5.0", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "globrex": "^0.1.2", + "ignore": "^5.3.2", + "semver": "^7.6.3", + "ts-declaration-location": "^1.0.6" }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" + "license": "MIT", + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-n/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 4" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-promise": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz", + "integrity": "sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==", "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" + "license": "ISC", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-n": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", - "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "builtins": "^5.0.1", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^13.24.0", - "ignore": "^5.2.4", - "is-builtin-module": "^3.2.1", - "is-core-module": "^2.12.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "resolve": "^1.22.2", - "semver": "^7.5.3" + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": ">=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">=4" }, "peerDependencies": { - "eslint": ">=7.0.0" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/eslint-plugin-n/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-n/node_modules/minimatch": { + "node_modules/eslint-plugin-react/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "peer": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3214,33 +4854,46 @@ "node": "*" } }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "bin": { + "resolve": "bin/resolve" }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3251,6 +4904,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3258,21 +4912,49 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3280,11 +4962,22 @@ "node": ">=10.13.0" } }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3293,17 +4986,31 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3314,6 +5021,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3326,6 +5034,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3338,6 +5047,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3347,6 +5057,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -3356,6 +5067,7 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3364,25 +5076,34 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -3392,48 +5113,64 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", - "dev": true + "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": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { @@ -3441,6 +5178,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3453,6 +5191,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.1", @@ -3471,6 +5210,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -3479,13 +5219,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3498,29 +5240,30 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -3528,6 +5271,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -3538,13 +5282,19 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/fresh": { @@ -3552,6 +5302,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3561,23 +5312,19 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^3.0.0", "universalify": "^0.1.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3591,21 +5338,24 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -3619,7 +5369,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "peer": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3629,22 +5379,41 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3653,16 +5422,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -3672,9 +5455,10 @@ } }, "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -3682,32 +5466,12 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3715,33 +5479,12 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -3754,6 +5497,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -3768,6 +5512,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3776,15 +5521,13 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3795,7 +5538,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -3812,6 +5555,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -3827,20 +5571,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/globjoin": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "peer": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3850,25 +5612,31 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hachure-fill": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==" + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, - "peer": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3878,6 +5646,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3887,7 +5656,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -3896,11 +5665,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, - "peer": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3909,11 +5681,11 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3926,7 +5698,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -3942,6 +5714,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -3950,18 +5723,27 @@ } }, "node_modules/highlight.js": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.10.0.tgz", - "integrity": "sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" } }, + "node_modules/hookified": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.12.1.tgz", + "integrity": "sha512-xnKGl+iMIlhrZmGHB729MqlmPoWBznctSQTYCpFKqNsCgimJQmithcW0xSQMMFzYnV2iKUh25alswn6epgxS0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -3974,6 +5756,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -3990,6 +5773,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -3999,6 +5783,7 @@ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -4012,6 +5797,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -4020,15 +5806,17 @@ } }, "node_modules/idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", + "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", + "license": "Apache-2.0" }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -4038,15 +5826,17 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4063,43 +5853,35 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4109,19 +5891,21 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -4134,16 +5918,40 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4154,6 +5962,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4162,14 +5971,14 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4178,20 +5987,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "semver": "^7.7.1" } }, "node_modules/is-callable": { @@ -4199,7 +6002,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4208,10 +6011,11 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -4223,12 +6027,14 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -4239,13 +6045,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4259,24 +6066,62 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4284,12 +6129,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4302,6 +6160,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -4311,18 +6170,20 @@ "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", "dev": true, + "license": "ISC", "dependencies": { "lodash.isfinite": "^3.3.2" } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4331,34 +6192,41 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4367,13 +6235,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -4383,13 +6251,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4399,13 +6268,15 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4415,14 +6286,27 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4431,13 +6315,33 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, - "peer": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4448,6 +6352,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4457,30 +6362,52 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, - "peer": true + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/jquery": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz", - "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==" + "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==", + "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 + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4492,56 +6419,65 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } + "dev": true, + "license": "MIT" }, "node_modules/jsonfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/katex": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", - "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==", + "version": "0.16.22", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], + "license": "MIT", "dependencies": { "commander": "^8.3.0" }, @@ -4553,6 +6489,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -4562,6 +6499,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -4576,25 +6514,29 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/known-css-properties": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", - "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", - "dev": true + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", + "dev": true, + "license": "MIT" }, "node_modules/kolorist": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" }, "node_modules/langium": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", - "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "license": "MIT", "dependencies": { "chevrotain": "~11.0.3", "chevrotain-allstar": "~0.3.0", @@ -4609,13 +6551,15 @@ "node_modules/layout-base": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -4634,23 +6578,27 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lit-html": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", - "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz", + "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==", + "license": "BSD-3-Clause", "dependencies": { "@types/trusted-types": "^2.0.2" } }, "node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "license": "MIT", "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" }, "engines": { "node": ">=14" @@ -4664,6 +6612,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -4678,78 +6627,113 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" }, "node_modules/lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" }, "node_modules/lunr-languages": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz", - "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==" + "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==", + "license": "MPL-1.1" }, "node_modules/marked": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz", - "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.3.0.tgz", + "integrity": "sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==", + "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, "node_modules/mathjax": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz", - "integrity": "sha512-Bt+SSVU8eBG27zChVewOicYs7Xsdt40qm4+UpHyX7k0/O9NliPc+x77k1/FEsPsjKPZGJvtRZM1vO+geW0OhGw==" + "integrity": "sha512-Bt+SSVU8eBG27zChVewOicYs7Xsdt40qm4+UpHyX7k0/O9NliPc+x77k1/FEsPsjKPZGJvtRZM1vO+geW0OhGw==", + "license": "Apache-2.0" }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/mdn-data": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", - "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", - "dev": true + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -4762,36 +6746,37 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/mermaid": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.4.0.tgz", - "integrity": "sha512-mxCfEYvADJqOiHfGpJXLs4/fAjHz448rH0pfY5fAoxiz70rQiDSzUUy4dNET2T08i46IVpjohPd6WWbzmRHiPA==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.0.tgz", + "integrity": "sha512-ZudVx73BwrMJfCFmSSJT84y6u5brEoV8DOItdHomNLz32uBjNrelm7mg95X7g+C6UoQH/W6mBLGDEDv73JdxBg==", + "license": "MIT", "dependencies": { - "@braintree/sanitize-url": "^7.0.1", - "@iconify/utils": "^2.1.32", - "@mermaid-js/parser": "^0.3.0", + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^0.6.2", "@types/d3": "^7.4.3", - "@types/dompurify": "^3.0.5", - "cytoscape": "^3.29.2", + "cytoscape": "^3.29.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.11", - "dayjs": "^1.11.10", - "dompurify": "^3.0.11 <3.1.7", - "katex": "^0.16.9", + "dayjs": "^1.11.18", + "dompurify": "^3.2.5", + "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", - "marked": "^13.0.2", + "marked": "^16.2.1", "roughjs": "^4.6.6", - "stylis": "^4.3.1", + "stylis": "^4.3.6", "ts-dedent": "^2.2.0", - "uuid": "^9.0.1" + "uuid": "^11.1.0" } }, "node_modules/micromatch": { @@ -4799,6 +6784,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -4812,6 +6798,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -4824,6 +6811,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4833,6 +6821,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -4845,6 +6834,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4855,42 +6845,52 @@ "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, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/mitt": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mlly": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.2.tgz", - "integrity": "sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", "dependencies": { - "acorn": "^8.12.1", - "pathe": "^1.1.2", - "pkg-types": "^1.2.0", - "ufo": "^1.5.4" + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -4898,6 +6898,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4905,32 +6906,95 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-postinstall": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.3.tgz", + "integrity": "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/neostandard": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/neostandard/-/neostandard-0.12.2.tgz", + "integrity": "sha512-VZU8EZpSaNadp3rKEwBhVD1Kw8jE3AftQLkCyOaM7bWemL1LwsYRsBnAmXy2LjG9zO8t66qJdqB7ccwwORyrAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@stylistic/eslint-plugin": "2.11.0", + "eslint-import-resolver-typescript": "^3.10.1", + "eslint-plugin-import-x": "^4.16.1", + "eslint-plugin-n": "^17.20.0", + "eslint-plugin-promise": "^7.2.1", + "eslint-plugin-react": "^7.37.5", + "find-up": "^5.0.0", + "globals": "^15.15.0", + "peowly": "^1.3.2", + "typescript-eslint": "^8.35.1" + }, + "bin": { + "neostandard": "cli.mjs" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^9.0.0" + } + }, + "node_modules/neostandard/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true + "dev": true, + "license": "MIT", + "optional": true }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4940,16 +7004,17 @@ "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.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4962,21 +7027,23 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -4986,12 +7053,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.fromentries": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5005,29 +7088,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -5043,6 +7112,7 @@ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -5050,20 +7120,12 @@ "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, + "license": "MIT", "dependencies": { "is-wsl": "^1.1.0" }, @@ -5076,6 +7138,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -5088,11 +7151,30 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -5108,6 +7190,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -5119,15 +7202,17 @@ } }, "node_modules/package-manager-detector": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.2.tgz", - "integrity": "sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "license": "MIT" }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -5140,6 +7225,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -5158,6 +7244,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5165,31 +7252,25 @@ "node_modules/path-data-parser": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5198,33 +7279,48 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/peowly": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/peowly/-/peowly-1.3.2.tgz", + "integrity": "sha512-BYIrwr8JCXY49jUZscgw311w9oGEKo7ux/s+BxrhKTQbiQ0iYNdZNJ5LgagaeercQdFHwnR7Z5IxxFWVQ+BasQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.6.0" + } }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -5233,24 +7329,27 @@ } }, "node_modules/pkg-types": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", - "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "license": "MIT", "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.2", - "pathe": "^1.1.2" + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" } }, "node_modules/points-on-curve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" }, "node_modules/points-on-path": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" @@ -5261,6 +7360,7 @@ "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, + "license": "MIT", "dependencies": { "async": "^2.6.0", "is-number-like": "^1.0.3" @@ -5271,19 +7371,19 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -5299,9 +7399,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -5312,13 +7413,15 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-safe-parser": { "version": "7.0.1", @@ -5339,6 +7442,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": ">=18.0" }, @@ -5365,6 +7469,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": ">=12.0" }, @@ -5373,10 +7478,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5389,26 +7495,57 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "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/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5427,13 +7564,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5443,6 +7582,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -5458,6 +7598,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5465,28 +7606,61 @@ "node": ">=0.10.0" } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -5501,6 +7675,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5510,6 +7685,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" } @@ -5518,21 +7694,26 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5542,6 +7723,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5550,6 +7732,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -5568,10 +7751,11 @@ } }, "node_modules/resp-modifier/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5582,6 +7766,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5591,6 +7776,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5602,43 +7788,31 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" }, "node_modules/roughjs": { "version": "4.6.6", "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", @@ -5665,149 +7839,483 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-identifier": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", + "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", + "dev": true, + "license": "ISC" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz", + "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass-embedded": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.93.2.tgz", + "integrity": "sha512-FvQdkn2dZ8DGiLgi0Uf4zsj7r/BsiLImNa5QJ10eZalY6NfZyjrmWGFcuCN5jNwlDlXFJnftauv+UtvBKLvepQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@bufbuild/protobuf": "^2.5.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-all-unknown": "1.93.2", + "sass-embedded-android-arm": "1.93.2", + "sass-embedded-android-arm64": "1.93.2", + "sass-embedded-android-riscv64": "1.93.2", + "sass-embedded-android-x64": "1.93.2", + "sass-embedded-darwin-arm64": "1.93.2", + "sass-embedded-darwin-x64": "1.93.2", + "sass-embedded-linux-arm": "1.93.2", + "sass-embedded-linux-arm64": "1.93.2", + "sass-embedded-linux-musl-arm": "1.93.2", + "sass-embedded-linux-musl-arm64": "1.93.2", + "sass-embedded-linux-musl-riscv64": "1.93.2", + "sass-embedded-linux-musl-x64": "1.93.2", + "sass-embedded-linux-riscv64": "1.93.2", + "sass-embedded-linux-x64": "1.93.2", + "sass-embedded-unknown-all": "1.93.2", + "sass-embedded-win32-arm64": "1.93.2", + "sass-embedded-win32-x64": "1.93.2" + } + }, + "node_modules/sass-embedded-all-unknown": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.93.2.tgz", + "integrity": "sha512-GdEuPXIzmhRS5J7UKAwEvtk8YyHQuFZRcpnEnkA3rwRUI27kwjyXkNeIj38XjUQ3DzrfMe8HcKFaqWGHvblS7Q==", + "cpu": [ + "!arm", + "!arm64", + "!riscv64", + "!x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "sass": "1.93.2" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.93.2.tgz", + "integrity": "sha512-I8bpO8meZNo5FvFx5FIiE7DGPVOYft0WjuwcCCdeJ6duwfkl6tZdatex1GrSigvTsuz9L0m4ngDcX/Tj/8yMow==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.93.2.tgz", + "integrity": "sha512-346f4iVGAPGcNP6V6IOOFkN5qnArAoXNTPr5eA/rmNpeGwomdb7kJyQ717r9rbJXxOG8OAAUado6J0qLsjnjXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.93.2.tgz", + "integrity": "sha512-hSMW1s4yJf5guT9mrdkumluqrwh7BjbZ4MbBW9tmi1DRDdlw1Wh9Oy1HnnmOG8x9XcI1qkojtPL6LUuEJmsiDg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.93.2.tgz", + "integrity": "sha512-JqktiHZduvn+ldGBosE40ALgQ//tGCVNAObgcQ6UIZznEJbsHegqStqhRo8UW3x2cgOO2XYJcrInH6cc7wdKbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.93.2.tgz", + "integrity": "sha512-qI1X16qKNeBJp+M/5BNW7v/JHCDYWr1/mdoJ7+UMHmP0b5AVudIZtimtK0hnjrLnBECURifd6IkulybR+h+4UA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.93.2.tgz", + "integrity": "sha512-4KeAvlkQ0m0enKUnDGQJZwpovYw99iiMb8CTZRSsQm8Eh7halbJZVmx67f4heFY/zISgVOCcxNg19GrM5NTwtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.93.2.tgz", + "integrity": "sha512-N3+D/ToHtzwLDO+lSH05Wo6/KRxFBPnbjVHASOlHzqJnK+g5cqex7IFAp6ozzlRStySk61Rp6d+YGrqZ6/P0PA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.93.2.tgz", + "integrity": "sha512-9ftX6nd5CsShJqJ2WRg+ptaYvUW+spqZfJ88FbcKQBNFQm6L87luj3UI1rB6cP5EWrLwHA754OKxRJyzWiaN6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.93.2.tgz", + "integrity": "sha512-XBTvx66yRenvEsp3VaJCb3HQSyqCsUh7R+pbxcN5TuzueybZi0LXvn9zneksdXcmjACMlMpIVXi6LyHPQkYc8A==", + "cpu": [ + "arm" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "peer": true, - "dependencies": { - "tslib": "^2.1.0" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.93.2.tgz", + "integrity": "sha512-+3EHuDPkMiAX5kytsjEC1bKZCawB9J6pm2eBIzzLMPWbf5xdx++vO1DpT7hD4bm4ZGn0eVHgSOKIfP6CVz6tVg==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/safe-identifier": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", - "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", - "dev": true + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.93.2.tgz", + "integrity": "sha512-0sB5kmVZDKTYzmCSlTUnjh6mzOhzmQiW/NNI5g8JS4JiHw2sDNTvt1dsFTuqFkUHyEOY3ESTsfHHBQV8Ip4bEA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.93.2.tgz", + "integrity": "sha512-t3ejQ+1LEVuHy7JHBI2tWHhoMfhedUNDjGJR2FKaLgrtJntGnyD1RyX0xb3nuqL/UXiEAtmTmZY+Uh3SLUe1Hg==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "peer": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.93.2.tgz", + "integrity": "sha512-e7AndEwAbFtXaLy6on4BfNGTr3wtGZQmypUgYpSNVcYDO+CWxatKVY4cxbehMPhxG9g5ru+eaMfynvhZt7fLaA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/sass": { - "version": "1.80.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.3.tgz", - "integrity": "sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==", + "node_modules/sass-embedded-linux-x64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.93.2.tgz", + "integrity": "sha512-U3EIUZQL11DU0xDDHXexd4PYPHQaSQa2hzc4EzmhHqrAj+TyfYO94htjWOd+DdTPtSwmLp+9cTWwPZBODzC96w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@parcel/watcher": "^2.4.1", - "chokidar": "^4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { "node": ">=14.0.0" } }, - "node_modules/sass-embedded": { - "version": "1.80.3", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.80.3.tgz", - "integrity": "sha512-aTxTl4ToSAWg7ILFgAe+kMenj+zNlwHmHK/ZNPrOM8+HTef1Q6zuxolptYLijmHdZHKSMOkWYHgo5MMN6+GIyg==", + "node_modules/sass-embedded-unknown-all": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.93.2.tgz", + "integrity": "sha512-7VnaOmyewcXohiuoFagJ3SK5ddP9yXpU0rzz+pZQmS1/+5O6vzyFCUoEt3HDRaLctH4GT3nUGoK1jg0ae62IfQ==", "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "!android", + "!darwin", + "!linux", + "!win32" + ], "peer": true, "dependencies": { - "@bufbuild/protobuf": "^2.0.0", - "buffer-builder": "^0.2.0", - "colorjs.io": "^0.5.0", - "immutable": "^4.0.0", - "rxjs": "^7.4.0", - "supports-color": "^8.1.1", - "varint": "^6.0.0" - }, - "bin": { - "sass": "dist/bin/sass.js" - }, + "sass": "1.93.2" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.93.2.tgz", + "integrity": "sha512-Y90DZDbQvtv4Bt0GTXKlcT9pn4pz8AObEjFF8eyul+/boXwyptPZ/A1EyziAeNaIEIfxyy87z78PUgCeGHsx3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">=16.0.0" - }, - "optionalDependencies": { - "sass-embedded-android-arm": "1.80.3", - "sass-embedded-android-arm64": "1.80.3", - "sass-embedded-android-ia32": "1.80.3", - "sass-embedded-android-riscv64": "1.80.3", - "sass-embedded-android-x64": "1.80.3", - "sass-embedded-darwin-arm64": "1.80.3", - "sass-embedded-darwin-x64": "1.80.3", - "sass-embedded-linux-arm": "1.80.3", - "sass-embedded-linux-arm64": "1.80.3", - "sass-embedded-linux-ia32": "1.80.3", - "sass-embedded-linux-musl-arm": "1.80.3", - "sass-embedded-linux-musl-arm64": "1.80.3", - "sass-embedded-linux-musl-ia32": "1.80.3", - "sass-embedded-linux-musl-riscv64": "1.80.3", - "sass-embedded-linux-musl-x64": "1.80.3", - "sass-embedded-linux-riscv64": "1.80.3", - "sass-embedded-linux-x64": "1.80.3", - "sass-embedded-win32-arm64": "1.80.3", - "sass-embedded-win32-ia32": "1.80.3", - "sass-embedded-win32-x64": "1.80.3" + "node": ">=14.0.0" } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.80.3", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.80.3.tgz", - "integrity": "sha512-wehVA0atPloc6NKof/ctpW0agM+k7kiBLIpQs3/mi9FAlmTjxNnvntBPZIbl8n7AAExiLEir+x/LHC0yGhTfkg==", + "version": "1.93.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.93.2.tgz", + "integrity": "sha512-BbSucRP6PVRZGIwlEBkp+6VQl2GWdkWFMN+9EuOTPrLxCJZoq+yhzmbjspd3PeM8+7WJ7AdFu/uRYdO8tor1iQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -5818,10 +8326,11 @@ } }, "node_modules/sass-embedded/node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/sass-embedded/node_modules/supports-color": { @@ -5829,6 +8338,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -5841,10 +8351,11 @@ } }, "node_modules/sass/node_modules/chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, + "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -5856,18 +8367,20 @@ } }, "node_modules/sass/node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", - "dev": true + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "license": "MIT" }, "node_modules/sass/node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 14.16.0" + "node": ">= 14.18.0" }, "funding": { "type": "individual", @@ -5875,10 +8388,11 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5891,6 +8405,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -5915,6 +8430,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5923,13 +8439,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5939,6 +8457,7 @@ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -5951,6 +8470,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -5960,6 +8480,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -5978,6 +8499,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5987,6 +8509,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5996,6 +8519,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -6010,25 +8534,29 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6038,6 +8566,7 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", @@ -6053,6 +8582,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6061,13 +8591,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6077,6 +8609,7 @@ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -6089,6 +8622,7 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -6113,6 +8647,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6122,6 +8657,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6130,14 +8666,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -6155,7 +8692,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -6166,17 +8703,34 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -6189,21 +8743,79 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -6217,6 +8829,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -6229,6 +8842,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6238,6 +8852,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -6251,10 +8866,11 @@ } }, "node_modules/socket.io": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", - "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -6273,16 +8889,36 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "~4.3.4", "ws": "~8.17.1" } }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", - "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -6293,11 +8929,30 @@ "node": ">=10.0.0" } }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -6306,29 +8961,99 @@ "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-throttle": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "commander": "^2.2.0", "limiter": "^1.0.5" @@ -6344,13 +9069,15 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6360,17 +9087,59 @@ "node": ">=8" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6380,16 +9149,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6399,7 +9172,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -6417,6 +9190,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6424,21 +9198,12 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6447,9 +9212,9 @@ } }, "node_modules/stylelint": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", - "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", + "version": "16.25.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.25.0.tgz", + "integrity": "sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==", "dev": true, "funding": [ { @@ -6461,44 +9226,45 @@ "url": "https://github.com/sponsors/stylelint" } ], + "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1", - "@csstools/media-query-list-parser": "^3.0.1", - "@csstools/selector-specificity": "^4.0.0", - "@dual-bundle/import-meta-resolve": "^4.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", - "css-tree": "^3.0.0", - "debug": "^4.3.7", - "fast-glob": "^3.3.2", + "css-tree": "^3.1.0", + "debug": "^4.4.3", + "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.1.0", + "file-entry-cache": "^10.1.4", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^6.0.2", + "ignore": "^7.0.5", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", + "known-css-properties": "^0.37.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", - "postcss": "^8.4.47", + "picocolors": "^1.1.1", + "postcss": "^8.5.6", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^6.1.2", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "supports-hyperlinks": "^3.1.0", + "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", - "table": "^6.8.2", + "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -6509,9 +9275,9 @@ } }, "node_modules/stylelint-config-recommended": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", - "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-17.0.0.tgz", + "integrity": "sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==", "dev": true, "funding": [ { @@ -6523,29 +9289,31 @@ "url": "https://github.com/sponsors/stylelint" } ], + "license": "MIT", "engines": { "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^16.1.0" + "stylelint": "^16.23.0" } }, "node_modules/stylelint-config-recommended-scss": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz", - "integrity": "sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-16.0.1.tgz", + "integrity": "sha512-wfpU6kmTUwPEHMACYdpt5wLM/aS44+sqE8yk82LkOkA7yVpAuTZDwd3m9762d0mRnNCn0JMUx4XfDVDmbb8hTA==", "dev": true, + "license": "MIT", "dependencies": { "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^14.0.1", - "stylelint-scss": "^6.4.0" + "stylelint-config-recommended": "^17.0.0", + "stylelint-scss": "^6.12.1" }, "engines": { - "node": ">=18.12.0" + "node": ">=20" }, "peerDependencies": { "postcss": "^8.3.3", - "stylelint": "^16.6.1" + "stylelint": "^16.23.1" }, "peerDependenciesMeta": { "postcss": { @@ -6554,9 +9322,9 @@ } }, "node_modules/stylelint-config-standard": { - "version": "36.0.1", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", - "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", + "version": "39.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-39.0.0.tgz", + "integrity": "sha512-JabShWORb8Bmc1A47ZyJstran60P3yUdI1zWMpGYPeFiC6xzHXJMkpKAd8EjIhq3HPUplIWWMDJ/xu0AiPd+kA==", "dev": true, "funding": [ { @@ -6568,31 +9336,33 @@ "url": "https://github.com/sponsors/stylelint" } ], + "license": "MIT", "dependencies": { - "stylelint-config-recommended": "^14.0.1" + "stylelint-config-recommended": "^17.0.0" }, "engines": { "node": ">=18.12.0" }, "peerDependencies": { - "stylelint": "^16.1.0" + "stylelint": "^16.23.0" } }, "node_modules/stylelint-config-standard-scss": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-13.1.0.tgz", - "integrity": "sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-16.0.0.tgz", + "integrity": "sha512-/FHECLUu+med/e6OaPFpprG86ShC4SYT7Tzb2PTVdDjJsehhFBOioSlWqYFqJxmGPIwO3AMBxNo+kY3dxrbczA==", "dev": true, + "license": "MIT", "dependencies": { - "stylelint-config-recommended-scss": "^14.0.0", - "stylelint-config-standard": "^36.0.0" + "stylelint-config-recommended-scss": "^16.0.1", + "stylelint-config-standard": "^39.0.0" }, "engines": { - "node": ">=18.12.0" + "node": ">=20" }, "peerDependencies": { "postcss": "^8.3.3", - "stylelint": "^16.3.1" + "stylelint": "^16.23.1" }, "peerDependenciesMeta": { "postcss": { @@ -6601,18 +9371,19 @@ } }, "node_modules/stylelint-scss": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.8.1.tgz", - "integrity": "sha512-al+5eRb72bKrFyVAY+CLWKUMX+k+wsDCgyooSfhISJA2exqnJq1PX1iIIpdrvhu3GtJgNJZl9/BIW6EVSMCxdg==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz", + "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==", "dev": true, + "license": "MIT", "dependencies": { - "css-tree": "^3.0.0", + "css-tree": "^3.0.1", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", - "mdn-data": "^2.11.1", + "known-css-properties": "^0.36.0", + "mdn-data": "^2.21.0", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-selector-parser": "^6.1.2", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -6622,50 +9393,47 @@ "stylelint": "^16.0.2" } }, + "node_modules/stylelint-scss/node_modules/known-css-properties": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", + "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", + "dev": true, + "license": "MIT" + }, "node_modules/stylelint-scss/node_modules/mdn-data": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.11.1.tgz", - "integrity": "sha512-Hdx3wmyqPFrhd6YHVuSkUK2eIGAcxR0xlndcgZqjA68yMJTbfXrjJwbgsBOsNjI7LnBIVUQnmyMVSdi/ob0GpQ==", - "dev": true + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.24.0.tgz", + "integrity": "sha512-i97fklrJl03tL1tdRVw0ZfLLvuDsdb6wxL+TrJ+PKkCbLrp2PCu2+OYdCKychIUm19nSM/35S6qz7pJpnXttoA==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", - "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.4.tgz", + "integrity": "sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^5.0.0" - }, - "engines": { - "node": ">=18" + "flat-cache": "^6.1.13" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "version": "6.1.14", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.14.tgz", + "integrity": "sha512-ExZSCSV9e7v/Zt7RzCbX57lY2dnPdxzU/h3UE6WJ6NtEMfwBd8jmi1n4otDEUfz+T/R+zxrFDpICFdjhD3H/zw==", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.3.1", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/stylelint/node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", - "dev": true, - "engines": { - "node": ">= 4" + "cacheable": "^2.0.1", + "flatted": "^3.3.3", + "hookified": "^1.12.0" } }, "node_modules/stylelint/node_modules/resolve-from": { @@ -6673,20 +9441,23 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/stylis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==" + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6695,10 +9466,11 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -6707,7 +9479,7 @@ "node": ">=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -6715,6 +9487,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6728,11 +9501,37 @@ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -6749,6 +9548,7 @@ "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", @@ -6764,24 +9564,83 @@ "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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "node_modules/tapable": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", + "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } }, "node_modules/tinyexec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", - "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/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/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -6794,56 +9653,83 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-declaration-location": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz", + "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==", + "dev": true, + "funding": [ + { + "type": "ko-fi", + "url": "https://ko-fi.com/rebeccastevens" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/ts-declaration-location" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "picomatch": "^4.0.2" + }, + "peerDependencies": { + "typescript": ">=4.0.0" + } + }, + "node_modules/ts-declaration-location/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=12" }, - "peerDependencies": { - "typescript": ">=4.2.0" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", "engines": { "node": ">=6.10" } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "peer": true + "license": "0BSD" }, "node_modules/tsx": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", - "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", + "version": "4.20.6", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", + "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", + "license": "MIT", "dependencies": { - "esbuild": "~0.23.0", + "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -6856,64 +9742,12 @@ "fsevents": "~2.3.3" } }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -6921,45 +9755,33 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -6969,18 +9791,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -6990,18 +9813,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -7011,10 +9834,11 @@ } }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "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": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7023,10 +9847,34 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.44.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.44.1.tgz", + "integrity": "sha512-0ws8uWGrUVTjEeN2OM4K1pLKHK/4NiNP/vz6ns+LjT/6sqpaYzIVFajZb1fj/IDwpsrrHb3Jy0Qm5u9CPcKaeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.44.1", + "@typescript-eslint/parser": "8.44.1", + "@typescript-eslint/typescript-estree": "8.44.1", + "@typescript-eslint/utils": "8.44.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, "node_modules/ua-parser-js": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", - "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", + "version": "1.0.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz", + "integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==", "dev": true, "funding": [ { @@ -7042,6 +9890,7 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", "bin": { "ua-parser-js": "script/cli.js" }, @@ -7050,37 +9899,43 @@ } }, "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz", + "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==", + "dev": true, + "license": "MIT" }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -7090,15 +9945,52 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "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" } @@ -7107,27 +9999,30 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/varint": { @@ -7135,6 +10030,7 @@ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/vary": { @@ -7142,6 +10038,7 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7150,6 +10047,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -7158,6 +10056,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, @@ -7169,6 +10068,7 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" @@ -7177,23 +10077,27 @@ "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==" + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" }, "node_modules/vscode-uri": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -7205,33 +10109,85 @@ } }, "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -7246,38 +10202,102 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } }, "node_modules/write-file-atomic": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -7291,6 +10311,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -7308,9 +10329,9 @@ } }, "node_modules/xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -7321,35 +10342,91 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/yargs/node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/yocto-queue": { @@ -7357,6 +10434,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/templates/package.json b/templates/package.json index 7e4b394b0be..5ae45c39d29 100644 --- a/templates/package.json +++ b/templates/package.json @@ -2,6 +2,7 @@ "name": "@docfx/template", "version": "1.0.0", "description": "Docfx static website templates", + "type": "module", "keywords": [ "docfx", "template" @@ -27,30 +28,31 @@ "@default/url": "npm:@websanova/url@2.6.3", "@websanova/url": "^2.6.3", "anchor-js": "^5.0.0", - "bootstrap": "^5.3.3", - "bootstrap-icons": "^1.11.3", + "bootstrap": "^5.3.8", + "bootstrap-icons": "^1.13.1", "highlight.js": "^11.10.0", - "idb-keyval": "^6.2.1", + "idb-keyval": "^6.2.2", "jquery": "3.7.0", - "lit-html": "^3.2.1", + "lit-html": "^3.3.1", "lunr": "2.3.9", "lunr-languages": "^1.14.0", "mathjax": "^3.2.2", - "mermaid": "^11.4.0", - "tsx": "^4.19.2" + "mermaid": "^11.12.0", + "tsx": "^4.20.6" }, "devDependencies": { + "@eslint/js": "^9.38.0", "@types/lunr": "^2.3.7", - "@typescript-eslint/eslint-plugin": "^8.16.0", - "@typescript-eslint/parser": "^8.16.0", - "browser-sync": "^3.0.3", - "esbuild": "~0.24.0", + "@typescript-eslint/eslint-plugin": "^8.44.1", + "@typescript-eslint/parser": "^8.44.1", + "browser-sync": "^3.0.4", + "esbuild": "~0.25.11", "esbuild-sass-plugin": "~3.3.1", - "eslint": "^8.57.1", - "eslint-config-standard": "^17.1.0", - "stylelint": "^16.10.0", - "stylelint-config-standard-scss": "^13.1.0", - "typescript": "^5.7.2", - "yargs": "^17.7.2" + "eslint": "^9.38.0", + "neostandard": "^0.12.2", + "stylelint": "^16.25.0", + "stylelint-config-standard-scss": "^16.0.0", + "typescript": "^5.9.3", + "yargs": "^18.0.0" } } diff --git a/templates/stylelint.config.js b/templates/stylelint.config.js new file mode 100644 index 00000000000..acc8602010f --- /dev/null +++ b/templates/stylelint.config.js @@ -0,0 +1,15 @@ +/** @type {import('stylelint').Config} */ +export default { + extends: ["stylelint-config-recommended-scss"], + ignoreFiles: [ + "**/*.ts", + "**/*.js" + ], + rules: { + "font-family-no-missing-generic-family-keyword": [ true, { + "ignoreFontFamilies": [ + "bootstrap-icons" + ] + }], + } +}; diff --git a/test/.editorconfig b/test/.editorconfig index 12a6e51f759..aa113483a11 100644 --- a/test/.editorconfig +++ b/test/.editorconfig @@ -4,3 +4,9 @@ root = false [*.cs] csharp_style_unused_value_expression_statement_preference = discard_variable:silent # IDE0058: Remove unnecessary expression value csharp_style_unused_value_assignment_preference = discard_variable:silent # IDE0059: Remove unnecessary value assignment + +dotnet_diagnostic.CA1816.severity = none # CA1816: Call GC.SuppressFinalize correctly +dotnet_diagnostic.CA1861.severity = none # CA1861: Avoid constant arrays as arguments +dotnet_diagnostic.CA1869.severity = none # CA1869: Cache and reuse 'JsonSerializerOptions' instances + +dotnet_diagnostic.SYSLIB1045.severity = silent # SYSLIB1045: Convert to 'GeneratedRegexAttribute'. diff --git a/test/Directory.Build.props b/test/Directory.Build.props index 5e9e6662dcf..a0b1fcf254b 100644 --- a/test/Directory.Build.props +++ b/test/Directory.Build.props @@ -12,7 +12,7 @@ false - + @@ -24,12 +24,12 @@ $(VSTestLogger);html%3BLogFileName=TestResults-$(MSBuildProjectName)-$(TargetFramework)-$(RUNNER_OS).html + + + + - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + diff --git a/test/Directory.Packages.props b/test/Directory.Packages.props new file mode 100644 index 00000000000..64168891c98 --- /dev/null +++ b/test/Directory.Packages.props @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/test/Docfx.Build.Common.Tests/FileLinkInfoTest.cs b/test/Docfx.Build.Common.Tests/FileLinkInfoTest.cs index 07c66c3714b..6f7cfd7ec15 100644 --- a/test/Docfx.Build.Common.Tests/FileLinkInfoTest.cs +++ b/test/Docfx.Build.Common.Tests/FileLinkInfoTest.cs @@ -1,8 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using AwesomeAssertions; using Docfx.Common; -using FluentAssertions; using Xunit; namespace Docfx.MarkdigEngine.Tests; diff --git a/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs b/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs index a8c47d11e89..5e5da0a699e 100644 --- a/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs +++ b/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs @@ -26,7 +26,7 @@ public void TestReadMarkdownAsOverwrite() var fileName = "ut_ReadMarkdownAsOverwrite.md"; var fullPath = Path.Combine(baseDir, fileName); File.WriteAllText(fullPath, content); - var host = new HostService(Enumerable.Empty()) + var host = new HostService([]) { MarkdownService = new MarkdigMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }), SourceFiles = ImmutableDictionary.Create() diff --git a/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs b/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs index 4db7ad6775f..79047dc6bb0 100644 --- a/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs +++ b/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs @@ -20,7 +20,7 @@ public void TestSimpleModelWithUniqueIdentityReferenceAttributeShouldSucceed() var model = new SimpleModel { Identity = "Identity1", - Identities = new List { "Identity2" } + Identities = ["Identity2"] }; var context = Handle(model); @@ -61,7 +61,7 @@ public void TestModelWithInvalidItemTypeShouldThrow() { var model = new InvalidModel2 { - Identities = new List { 0 } + Identities = [0] }; Assert.Throws( () => Handle(model) @@ -73,23 +73,23 @@ public void TestComplexModelWithUniqueIdentityReferenceAttributeShouldSucceed() { var model = new ComplexModel { - Identities = new List { "1", "2", "3" }, + Identities = ["1", "2", "3"], Identity = "0", Inner = new ComplexModel { - Identities = new List { "1.1", "1.2", "1.3" }, + Identities = ["1.1", "1.2", "1.3"], Identity = "0.0", OtherProperty = "innerothers", Inner = new ComplexModel { - Identities = new List { "1.1.1", "1.1.2" }, + Identities = ["1.1.1", "1.1.2"], Identity = "0.0.0", OtherProperty = "innersinner" } }, OtherProperty = "others", - InnerModels = new List - { + InnerModels = + [ new() { Identity = "2.1", @@ -100,7 +100,7 @@ public void TestComplexModelWithUniqueIdentityReferenceAttributeShouldSucceed() Identity = "2.2", CrefType = TestCrefType.Href } - } + ] }; var context = Handle(model); @@ -238,7 +238,7 @@ public void TesteModelWithIListMarkdownContentAttributeShouldSucceed() { var model = new MarkdownModelWithIList { - ListContent = new List { "*list*" }, + ListContent = ["*list*"], ArrayContent = ["@xref", "*content"] }; @@ -295,7 +295,7 @@ private static HandleModelAttributesContext GetDefaultContext() { return new HandleModelAttributesContext { - Host = new HostService(Enumerable.Empty()) + Host = new HostService([]) { MarkdownService = new MarkdigMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }), SourceFiles = new Dictionary diff --git a/test/Docfx.Build.ManagedReference.Tests/Docfx.Build.ManagedReference.Tests.csproj b/test/Docfx.Build.ManagedReference.Tests/Docfx.Build.ManagedReference.Tests.csproj index 943a81c22c2..d2189eb119f 100644 --- a/test/Docfx.Build.ManagedReference.Tests/Docfx.Build.ManagedReference.Tests.csproj +++ b/test/Docfx.Build.ManagedReference.Tests/Docfx.Build.ManagedReference.Tests.csproj @@ -2,6 +2,5 @@ - diff --git a/test/Docfx.Build.OverwriteDocuments.Tests/Docfx.Build.OverwriteDocuments.Tests.csproj b/test/Docfx.Build.OverwriteDocuments.Tests/Docfx.Build.OverwriteDocuments.Tests.csproj index ada9e2ab801..8e3c524d874 100644 --- a/test/Docfx.Build.OverwriteDocuments.Tests/Docfx.Build.OverwriteDocuments.Tests.csproj +++ b/test/Docfx.Build.OverwriteDocuments.Tests/Docfx.Build.OverwriteDocuments.Tests.csproj @@ -4,6 +4,5 @@ - diff --git a/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs b/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs index b4f82ef9148..01dbcbe25ee 100644 --- a/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs +++ b/test/Docfx.Build.OverwriteDocuments.Tests/OverwriteDocumentModelCreatorTest.cs @@ -58,7 +58,7 @@ public void ContentConvertTest() }); } - var contentsMetadata = new OverwriteDocumentModelCreator("test.yml.md").ConvertContents(new Dictionary(), contents); + var contentsMetadata = new OverwriteDocumentModelCreator("test.yml.md").ConvertContents([], contents); Assert.Equal(3, contentsMetadata.Count); Assert.Equal("summary,return,function", ExtractDictionaryKeys(contentsMetadata)); Assert.Equal(2, ((Dictionary)contentsMetadata["return"]).Count); @@ -79,26 +79,27 @@ public void ContentConvertTest() public void DuplicateOPathInMarkdownSectionTest() { var testOPath = "function/parameters"; - var contents = new List(); - - contents.Add(new MarkdownPropertyModel - { - PropertyName = testOPath, - PropertyNameSource = Markdown.Parse($"## `{testOPath}`")[0], - PropertyValue = Markdown.Parse("test1").ToList() - }); - contents.Add(new MarkdownPropertyModel + var contents = new List { - PropertyName = testOPath, - PropertyNameSource = Markdown.Parse($"## `{testOPath}`")[0], - PropertyValue = Markdown.Parse("test2").ToList() - }); + new MarkdownPropertyModel + { + PropertyName = testOPath, + PropertyNameSource = Markdown.Parse($"## `{testOPath}`")[0], + PropertyValue = Markdown.Parse("test1").ToList() + }, + new MarkdownPropertyModel + { + PropertyName = testOPath, + PropertyNameSource = Markdown.Parse($"## `{testOPath}`")[0], + PropertyValue = Markdown.Parse("test2").ToList() + } + }; Dictionary contentsMetadata; Logger.RegisterListener(_listener); try { - contentsMetadata = new OverwriteDocumentModelCreator("test.yml.md").ConvertContents(new Dictionary(), contents); + contentsMetadata = new OverwriteDocumentModelCreator("test.yml.md").ConvertContents([], contents); } finally { @@ -188,7 +189,7 @@ public void InvalidOPathsTest1() }); } - var ex = Assert.Throws(() => new OverwriteDocumentModelCreator("test.yml.md").ConvertContents(new Dictionary(), contents)); + var ex = Assert.Throws(() => new OverwriteDocumentModelCreator("test.yml.md").ConvertContents([], contents)); Assert.Equal( "A(parameters) is not expected to be an array like \"A[c=d]/B\", however it is used as an array in line 0 with `parameters[id=\"para1\"]/...`", ex.Message); @@ -215,7 +216,7 @@ public void InvalidOPathsTest2() }); } - var ex = Assert.Throws(() => new OverwriteDocumentModelCreator("test.yml.md").ConvertContents(new Dictionary(), contents)); + var ex = Assert.Throws(() => new OverwriteDocumentModelCreator("test.yml.md").ConvertContents([], contents)); Assert.Equal( "A(parameters) is not expected to be an object like \"A/B\", however it is used as an object in line 0 with `parameters/...`", ex.Message); diff --git a/test/Docfx.Build.RestApi.Tests/Docfx.Build.RestApi.Tests.csproj b/test/Docfx.Build.RestApi.Tests/Docfx.Build.RestApi.Tests.csproj index 6632e67a6a9..e62f8103d22 100644 --- a/test/Docfx.Build.RestApi.Tests/Docfx.Build.RestApi.Tests.csproj +++ b/test/Docfx.Build.RestApi.Tests/Docfx.Build.RestApi.Tests.csproj @@ -11,6 +11,5 @@ - diff --git a/test/Docfx.Build.RestApi.WithPlugins.Tests/Docfx.Build.RestApi.WithPlugins.Tests.csproj b/test/Docfx.Build.RestApi.WithPlugins.Tests/Docfx.Build.RestApi.WithPlugins.Tests.csproj index ac834570ef9..610b6f5bc54 100644 --- a/test/Docfx.Build.RestApi.WithPlugins.Tests/Docfx.Build.RestApi.WithPlugins.Tests.csproj +++ b/test/Docfx.Build.RestApi.WithPlugins.Tests/Docfx.Build.RestApi.WithPlugins.Tests.csproj @@ -7,6 +7,5 @@ - diff --git a/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs b/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs index 4f9f8656300..db65cfef4c8 100644 --- a/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs +++ b/test/Docfx.Build.RestApi.WithPlugins.Tests/SplitRestApiToOperationLevelTest.cs @@ -36,7 +36,7 @@ public SplitRestApiToOperationLevelTest() RawModelExportSettings = { Export = true }, TransformDocument = true, }; - _templateManager = new TemplateManager(new List { "template" }, null, "TestData/"); + _templateManager = new TemplateManager(["template"], null, "TestData/"); } [Fact] diff --git a/test/Docfx.Build.SchemaDriven.Tests/Docfx.Build.SchemaDriven.Tests.csproj b/test/Docfx.Build.SchemaDriven.Tests/Docfx.Build.SchemaDriven.Tests.csproj index 4ed255dbd06..474324b4f13 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/Docfx.Build.SchemaDriven.Tests.csproj +++ b/test/Docfx.Build.SchemaDriven.Tests/Docfx.Build.SchemaDriven.Tests.csproj @@ -6,6 +6,5 @@ - diff --git a/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs b/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs index 381e10fa736..00f1c13687f 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/JsonPointerTest.cs @@ -1,13 +1,14 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using AwesomeAssertions; using Docfx.Common; using Docfx.Exceptions; using Docfx.Tests.Common; -using FluentAssertions; using Xunit; namespace Docfx.Build.SchemaDriven.Tests; + public class JsonPointerTest : TestBase { [Fact] diff --git a/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs b/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs index a04406a268e..814cdd70777 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/MarkdownFragmentsValidationTest.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Immutable; using Docfx.Build.Engine; using Docfx.Common; using Docfx.Plugins; @@ -22,7 +21,7 @@ public class MarkdownFragmentsValidationTest : TestBase private TemplateManager _templateManager; private FileCollection _files; - private TestLoggerListener _listener = new(); + private readonly TestLoggerListener _listener = new(); private string _rawModelFilePath; private const string RawModelFileExtension = ".raw.json"; diff --git a/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs b/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs index f82fa591e58..15909a250f9 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/MergeMarkdownFragmentsTest.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Immutable; using Docfx.Build.Engine; using Docfx.Common; using Docfx.Plugins; @@ -45,7 +44,7 @@ public MergeMarkdownFragmentsTest() } [Fact] - void TestMergeMarkdownFragments() + public void TestMergeMarkdownFragments() { // Arrange CreateFile("Suppressions.yml.md", File.ReadAllText("TestData/inputs/Suppressions.yml.md"), _inputFolder); diff --git a/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs b/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs index 400694d1d06..0337e095193 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/SchemaDrivenProcessorTest.cs @@ -3,7 +3,6 @@ using System.Collections.Immutable; using System.Composition; -using System.Text.RegularExpressions; using Docfx.Build.Engine; using Docfx.Common; diff --git a/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs b/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs index 35f256a0879..a0d6cbcb63b 100644 --- a/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs +++ b/test/Docfx.Build.SchemaDriven.Tests/SchemaFragmentsIteratorTest.cs @@ -24,7 +24,7 @@ public void TestSchemaFragmentsIterator() } // act - iterator.Traverse(yamlStream.Documents[0].RootNode, new Dictionary(), schema); + iterator.Traverse(yamlStream.Documents[0].RootNode, [], schema); // assert Assert.Single(counter.ExistingUids); diff --git a/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs b/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs index 4d4c7961e93..c7a5f1eeae3 100644 --- a/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs +++ b/test/Docfx.Build.Tests/ConceptualDocumentProcessorTest.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; -using System.Reflection; using System.Web; using Docfx.Build.Engine; using Docfx.Common; @@ -44,7 +43,7 @@ public ConceptualDocumentProcessorTest() // Prepare conceptual template var templateCreator = new FileCreator(_templateFolder); var file = templateCreator.CreateFile("{{{conceptual}}}", "conceptual.html.tmpl", "default"); - _templateManager = new TemplateManager(new List { "default" }, null, _templateFolder); + _templateManager = new TemplateManager(["default"], null, _templateFolder); } public override void Dispose() @@ -385,7 +384,7 @@ Some content // Test `manifest.json` content var manifest = GetOutputManifest(); - Assert.True(manifest.Files.Count == 1); + Assert.Single(manifest.Files); Assert.True(manifest.Files[0].Type == Constants.DocumentType.Redirection); } diff --git a/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj b/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj index 61c730cef26..7a73d0fa005 100644 --- a/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj +++ b/test/Docfx.Build.Tests/Docfx.Build.Tests.csproj @@ -10,13 +10,11 @@ - - diff --git a/test/Docfx.Build.Tests/DocumentBuilderTest.cs b/test/Docfx.Build.Tests/DocumentBuilderTest.cs index 67b4ae138f4..98a7478e338 100644 --- a/test/Docfx.Build.Tests/DocumentBuilderTest.cs +++ b/test/Docfx.Build.Tests/DocumentBuilderTest.cs @@ -48,19 +48,17 @@ public void TestBuild() CreateFile("conceptual.html.primary.tmpl", "{{{conceptual}}}", _templateFolder); var tocFile = CreateFile("toc.md", - new[] - { + [ "# [test1](test.md#bookmark)", "## [test2](test/test.md)", "## [GitHub](GitHub.md?shouldBeAbbreviated=true#test)", "# Api", "## [Console](@System.Console)", "## [ConsoleColor](xref:System.ConsoleColor)", - }, + ], _inputFolder); var conceptualFile = CreateFile("test.md", - new[] - { + [ "---", "uid: XRef1", "a: b", @@ -96,11 +94,10 @@ public void TestBuild() "Test href generator: [Git](Git.md?shouldBeAbbreviated=true#test)", "

", "test", - }, + ], _inputFolder); var conceptualFile2 = CreateFile("test/test.md", - new[] - { + [ "---", "uid: XRef2", "a: b", @@ -112,11 +109,10 @@ public void TestBuild() "Test link: [link text](../test.md)", "

", "test", - }, + ], _inputFolder); var conceptualFile3 = CreateFile("check-xrefmap.md", - new[] - { + [ "---", "uid: XRef1", "a: b", @@ -125,11 +121,10 @@ public void TestBuild() "---", "# Hello World", "Test xrefmap with duplicate uid in different files: XRef1 should be recorded with file check-xrefmap.md" - }, + ], _inputFolder); var conceptualFile4 = CreateFile("test/verify-xrefmap.md", - new[] - { + [ "---", "uid: XRef2", "a: b", @@ -138,7 +133,7 @@ public void TestBuild() "---", "# Hello World", "Test xrefmap with duplicate uid in different files: XRef2 should be recorded with file test/test.md" - }, + ], _inputFolder); FileCollection files = new(Directory.GetCurrentDirectory()); @@ -278,7 +273,7 @@ public void TestBuild() Assert.True(File.Exists(Path.Combine(_outputFolder, resourceFile + RawModelFileExtension))); var meta = JsonUtility.Deserialize>(Path.Combine(_outputFolder, resourceFile + RawModelFileExtension)); Assert.Single(meta); - Assert.True(!meta.ContainsKey("meta")); + Assert.False(meta.ContainsKey("meta")); } { @@ -320,34 +315,32 @@ public void TestBuildConceptualWithTemplateShouldSucceed() ", _templateFolder); CreateFile("conceptual.html.tmpl", "{{.}}", _templateFolder); var conceptualFile = CreateFile("test.md", - new[] - { + [ "---", "uid: XRef1", "---", "# Hello World", "Test link: [link text](test/test.md)", "test", - }, + ], _inputFolder); var conceptualFile2 = CreateFile("test/test.md", - new[] - { + [ "---", "uid: XRef2", "---", "test", - }, + ], _inputFolder); - var tocFile = CreateFile("toc.md", new[] - { + var tocFile = CreateFile("toc.md", + [ "#[Test](test.md)" - }, + ], _inputFolder); - var tocFile2 = CreateFile("test/toc.md", new[] - { + var tocFile2 = CreateFile("test/toc.md", + [ "#[Test](test.md)" - }, + ], _inputFolder); FileCollection files = new(Directory.GetCurrentDirectory()); files.Add(DocumentType.Article, new[] { conceptualFile, conceptualFile2, tocFile, tocFile2 }); @@ -517,15 +510,13 @@ public void TestBuildWithInvalidPath() CreateFile("conceptual.html.primary.tmpl", "{{{conceptual}}}", _templateFolder); var tocFile = CreateFile("toc.md", - new[] - { + [ "# [test1](test.md)", "## [test2](test/test.md)", - }, + ], _inputFolder); var conceptualFile = CreateFile("test.md", - new[] - { + [ "# Hello World", "Test link: [link 1](test/test.md)", "Test link: [link 2](http://www.microsoft.com)", @@ -537,14 +528,13 @@ public void TestBuildWithInvalidPath() "Test link: [link 8](test/test.md#top)", "Test link: [link 9](a.md#top)", "Test link: [link 10](#top)", - }, + ], _inputFolder); var conceptualFile2 = CreateFile("test/test.md", - new[] - { + [ "# Hello World", "Test link: [link 1](../test.md)", - }, + ], _inputFolder); FileCollection files = new(Directory.GetCurrentDirectory()); @@ -630,19 +620,17 @@ public void TestBuildWithInvalidPathWithTokenAndMapping() CreateFile("conceptual.html.primary.tmpl", "{{{conceptual}}}", _templateFolder); var conceptualFile = CreateFile("a/a.md", - new[] - { + [ "[link a](invalid-a.md)", "[link b](../b/invalid-b.md)", "[!include[](../b/token.md)]", - }, + ], _inputFolder); var tokenFile = CreateFile("b/token.md", - new[] - { + [ "[link a](../a/invalid-a.md)", "[link b](invalid-b.md)", - }, + ], _inputFolder); FileCollection files = new(Directory.GetCurrentDirectory()); @@ -651,7 +639,7 @@ public void TestBuildWithInvalidPathWithTokenAndMapping() BuildDocument( files, - new Dictionary(), + [], templateFolder: _templateFolder); { @@ -672,7 +660,7 @@ public void TestBuildWithInvalidPathWithTokenAndMapping() private class FakeResponseHandler : DelegatingHandler { - private readonly Dictionary _fakeResponses = new(); + private readonly Dictionary _fakeResponses = []; protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { @@ -703,7 +691,7 @@ public void TestBuildWithMultipleVersion() BuildDocument( files, - new Dictionary(), + [], templateFolder: _templateFolder, versionDir: versionDir); @@ -740,10 +728,10 @@ private void BuildDocument( OutputBaseDir = Path.Combine(Directory.GetCurrentDirectory(), _outputFolder), ApplyTemplateSettings = applyTemplateSettings, Metadata = metadata?.ToImmutableDictionary(), - TemplateManager = new TemplateManager(new List { _templateFolder }, null, null), + TemplateManager = new TemplateManager([_templateFolder], null, null), TemplateDir = templateFolder, VersionDir = versionDir, - XRefMaps = ImmutableArray.Create("TestData/xrefmap.yml"), + XRefMaps = ["TestData/xrefmap.yml"], }; builder.Build(parameters); } diff --git a/test/Docfx.Build.Tests/DocumentProcessors/YamlDocumentModel.cs b/test/Docfx.Build.Tests/DocumentProcessors/YamlDocumentModel.cs index d05c828c08e..8623653babe 100644 --- a/test/Docfx.Build.Tests/DocumentProcessors/YamlDocumentModel.cs +++ b/test/Docfx.Build.Tests/DocumentProcessors/YamlDocumentModel.cs @@ -20,10 +20,10 @@ public class YamlDocumentModel [ExtensibleMember] [Newtonsoft.Json.JsonExtensionData] [System.Text.Json.Serialization.JsonExtensionData] - public Dictionary Data { get; set; } = new(); + public Dictionary Data { get; set; } = []; [YamlMember(Alias = "metadata")] [JsonProperty("metadata")] [JsonPropertyName("metadata")] - public Dictionary Metadata { get; set; } = new(); + public Dictionary Metadata { get; set; } = []; } diff --git a/test/Docfx.Build.Tests/ExtractSearchIndexFromHtmlTest.cs b/test/Docfx.Build.Tests/ExtractSearchIndexFromHtmlTest.cs index 41b97201b79..478ce955538 100644 --- a/test/Docfx.Build.Tests/ExtractSearchIndexFromHtmlTest.cs +++ b/test/Docfx.Build.Tests/ExtractSearchIndexFromHtmlTest.cs @@ -39,7 +39,72 @@ This is article title html.LoadHtml(rawHtml); var href = "http://dotnet.github.io/docfx"; var item = _extractor.ExtractItem(html, href); - Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Keywords = "Hello World, Microsoft This is article title docfx can do anything..." }, item); + Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Summary = "Hello World, Microsoft This is article title docfx can do anything..." }, item); + } + + [Fact] + public void TestMRefMetadata() + { + var rawHtml = @" + + + This is title in head metadata + + +

This is Title

+

Hello World, + Microsoft +

+
+

+ This is article title +

+ docfx can do anything... +
+ + +"; + var html = new HtmlDocument(); + html.LoadHtml(rawHtml); + var href = "http://dotnet.github.io/docfx"; + _extractor.UseMetadata = false; + _extractor.UseMetadataTitle = false; + var itemNoMetadata = _extractor.ExtractItem(html, href, new() + { + ["IsMRef"] = true, + ["Title"] = "ManagedReferenceExample", + ["Summary"] = "Lorem Ipsum", + }); + Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Summary = "Hello World, Microsoft This is article title docfx can do anything..." }, itemNoMetadata); + _extractor.UseMetadata = true; + _extractor.UseMetadataTitle = true; + var itemWithMetadata = _extractor.ExtractItem(html, href, new() + { + ["IsMRef"] = true, + ["Title"] = "ManagedReferenceExample", + ["Summary"] = "Lorem Ipsum", + }); + Assert.Equal(new SearchIndexItem + { + Href = href, + Title = "ManagedReferenceExample", + Keywords = "Managed ManagedReference ManagedReferenceExample ManagedExample Reference ReferenceExample Example", + Summary = "Lorem Ipsum" + }, itemWithMetadata); + _extractor.UseMetadataTitle = false; + var itemWithMetadataNoTitle = _extractor.ExtractItem(html, href, new() + { + ["IsMRef"] = true, + ["Title"] = "ManagedReferenceExample", + ["Summary"] = "Lorem Ipsum", + }); + Assert.Equal(new SearchIndexItem + { + Href = href, + Title = "This is title in head metadata", + Keywords = "This is title in head metadata", + Summary = "Lorem Ipsum" + }, itemWithMetadataNoTitle); } [Fact] @@ -59,7 +124,7 @@ public void TestSearchableClass() html.LoadHtml(rawHtml); var href = "http://dotnet.github.io/docfx"; var item = _extractor.ExtractItem(html, href); - Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Keywords = "Cooooooool!" }, item); + Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Summary = "Cooooooool!" }, item); } [Fact] @@ -107,7 +172,7 @@ Only index once. html.LoadHtml(rawHtml); var href = "http://dotnet.github.io/docfx"; var item = _extractor.ExtractItem(html, href); - Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Keywords = "Only index once." }, item); + Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Summary = "Only index once." }, item); } [Fact] @@ -150,7 +215,7 @@ public void TestEmptyItem() html.LoadHtml(rawHtml); var href = "http://dotnet.github.io/docfx"; var item = _extractor.ExtractItem(html, href); - Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Keywords = string.Empty }, item); + Assert.Equal(new SearchIndexItem { Href = href, Title = "This is title in head metadata", Summary = string.Empty }, item); } [Fact] @@ -170,7 +235,7 @@ public void TestBlockTagsVsInlineTags() html.LoadHtml(rawHtml); var href = "http://dotnet.github.io/docfx"; var item = _extractor.ExtractItem(html, href); - Assert.Equal(new SearchIndexItem { Href = href, Title = "", Keywords = "Insert space in block level html tags Donotinsertspaceininlinehtmltags" }, item); + Assert.Equal(new SearchIndexItem { Href = href, Title = "", Summary = "Insert space in block level html tags Donotinsertspaceininlinehtmltags" }, item); } [Fact] @@ -225,7 +290,7 @@ This is article title ""index.html"": { ""href"": ""index.html"", ""title"": ""This is title in head metadata"", - ""keywords"": ""Hello World, Microsoft This is article title docfx can do anything... and it supports non-english characters like these: ãâáà êé í õôó Типы шрифтов 人物 文字"" + ""summary"": ""Hello World, Microsoft This is article title docfx can do anything... and it supports non-english characters like these: ãâáà êé í õôó Типы шрифтов 人物 文字"" } }"; var actualIndexJSON = File.ReadAllText(Path.Combine(tempTestFolder, "index.json"), Encoding.UTF8); diff --git a/test/Docfx.Build.Tests/FileMetadataHelperTest.cs b/test/Docfx.Build.Tests/FileMetadataHelperTest.cs index 0c3fd561d31..72d6703db72 100644 --- a/test/Docfx.Build.Tests/FileMetadataHelperTest.cs +++ b/test/Docfx.Build.Tests/FileMetadataHelperTest.cs @@ -15,26 +15,26 @@ public void TestGetChangedGlobs_AllTheSame() var baseDir = "inputFolder"; var left = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = [ new FileMetadataItem(new GlobMatcher("*.md"), "meta", 1L), new FileMetadataItem(new GlobMatcher("*.m"), "meta", true), new FileMetadataItem(new GlobMatcher("abc"), "meta", "string"), new FileMetadataItem(new GlobMatcher("/[]\\*.cs"), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher("*/*.cs"), "meta", new object[] { "1", "2" }), new FileMetadataItem(new GlobMatcher("**"), "meta", new Dictionary { ["key"] = new object[] { "1", "2" } }) - ) + ] }); var right = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = [ new FileMetadataItem(new GlobMatcher("*.md"), "meta", 1L), new FileMetadataItem(new GlobMatcher("*.m"), "meta", true), new FileMetadataItem(new GlobMatcher("abc"), "meta", "string"), new FileMetadataItem(new GlobMatcher("/[]\\*.cs"), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher("*/*.cs"), "meta", new object[] { "1", "2" }), new FileMetadataItem(new GlobMatcher("**"), "meta", new Dictionary { ["key"] = new object[] { "1", "2" } }) - ) + ] }); var actual = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); @@ -48,26 +48,26 @@ public void TestGetChangedGlobs_AllChanged_With_DifferentBaseDir() var patterns = new string[] { "*md", "*.m", "abc", "/[]\\*.cs", "*/*.cs", "**" }; var left = new FileMetadata("inputFolder1", new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patterns[2]), "meta", "string"), new FileMetadataItem(new GlobMatcher(patterns[3]), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher(patterns[4]), "meta", new object[] { "1", "2" }), new FileMetadataItem(new GlobMatcher(patterns[5]), "meta", new Dictionary { ["key"] = new object[] { "1", "2" } }) - ) + ] }); var right = new FileMetadata("inputFolder2", new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patterns[2]), "meta", "string"), new FileMetadataItem(new GlobMatcher(patterns[3]), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher(patterns[4]), "meta", new object[] { "1", "2" }), new FileMetadataItem(new GlobMatcher(patterns[5]), "meta", new Dictionary { ["key"] = new object[] { "1", "2" } }) - ) + ] }); var actualResults = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); @@ -83,26 +83,26 @@ public void TestGetChangedGlobs_AllChanged_With_DifferentPattern() var patternsB = new string[] { "*mdB", "*.mB", "abcB", "/[]\\*.csB", "*/*.csB", "**B" }; var left = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = [ new FileMetadataItem(new GlobMatcher(patternsA[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patternsA[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patternsA[2]), "meta", "string"), new FileMetadataItem(new GlobMatcher(patternsA[3]), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher(patternsA[4]), "meta", new object[] { "1", "2" }), new FileMetadataItem(new GlobMatcher(patternsA[5]), "meta", new Dictionary { ["key"] = new object[] { "1", "2" } }) - ) + ] }); var right = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = [ new FileMetadataItem(new GlobMatcher(patternsB[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patternsB[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patternsB[2]), "meta", "string"), new FileMetadataItem(new GlobMatcher(patternsB[3]), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher(patternsB[4]), "meta", new object[] { "1", "2" }), new FileMetadataItem(new GlobMatcher(patternsB[5]), "meta", new Dictionary { ["key"] = new object[] { "1", "2" } }) - ) + ] }); var actualResults = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); @@ -122,18 +122,24 @@ public void TestGetChangedGlobs_CrossGlobsChanged() var patterns = new string[] { "*md", "*.m", "abc", "/[]\\*.cs", "*/*.cs", "**" }; var left = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + + [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true) - ) +, + ] }); var right = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + + [ new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patterns[2]), "meta", "string") - ) +, + ] }); var actualResults = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); @@ -150,17 +156,18 @@ public void TestGetChangedGlobs_ReduceGlobsChanged() var patterns = new string[] { "*md", "*.m", "abc", "/[]\\*.cs", "*/*.cs", "**" }; var left = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + + [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true) - ) +, + ] }); var right = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( - new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L) - ) + ["meta"] = [new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L)] }); var actualResults = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); @@ -176,19 +183,25 @@ public void TestGetChangedGlobs_IncreaseGlobsChanged() var patterns = new string[] { "*md", "*.m", "abc" }; var left = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + + [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true) - ) +, + ] }); var right = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + + [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patterns[2]), "meta", "string") - ) +, + ] }); var actualResults = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); @@ -204,23 +217,26 @@ public void TestGetChangedGlobs_Changed() var patterns = new string[] { "*md", "*.m", "abc", "/[]\\*.cs", "*/*.cs", "**" }; var left = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + + [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patterns[3]), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher(patterns[5]), "meta", new Dictionary { ["key"] = new object[] { "1", "2" } }) - ) +, + ] }); var right = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true), new FileMetadataItem(new GlobMatcher(patterns[2]), "meta", "string"), new FileMetadataItem(new GlobMatcher(patterns[3]), "meta", new Dictionary { ["key"] = "2" }), new FileMetadataItem(new GlobMatcher(patterns[4]), "meta", new object[] { "1", "2" }) - ) + ] }); var actualResults = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); @@ -238,18 +254,20 @@ public void TestGetChangedGlobs_Changed_Reverse() var patterns = new string[] { "*md", "*.m" }; var left = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + [ new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true) - ) + ] }); var right = new FileMetadata(baseDir, new Dictionary> { - ["meta"] = ImmutableArray.Create( + ["meta"] = + [ new FileMetadataItem(new GlobMatcher(patterns[1]), "meta", true), - new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L) - ) + new FileMetadataItem(new GlobMatcher(patterns[0]), "meta", 1L), + ] }); var actualResults = FileMetadataHelper.GetChangedGlobs(left, right).ToList(); diff --git a/test/Docfx.Build.Tests/JintProcessorHelperTest.cs b/test/Docfx.Build.Tests/JintProcessorHelperTest.cs index e520143599f..ff772e00a34 100644 --- a/test/Docfx.Build.Tests/JintProcessorHelperTest.cs +++ b/test/Docfx.Build.Tests/JintProcessorHelperTest.cs @@ -52,6 +52,6 @@ private sealed class TestData public Dictionary ValueDict { get; set; } = new() { [1] = "Value1", ["key"] = 2 }; - public List ValueList { get; set; } = new() { "ValueA", "ValueB" }; + public List ValueList { get; set; } = ["ValueA", "ValueB"]; } } diff --git a/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs b/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs index 4e8658a653b..68860158bfb 100644 --- a/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs +++ b/test/Docfx.Build.Tests/PostProcessors/SitemapGeneratorTests.cs @@ -5,7 +5,6 @@ using Docfx.Plugins; using Docfx.Tests.Common; using Xunit; -using Xunit.Abstractions; using DocumentType = Docfx.DataContracts.Common.Constants.DocumentType; namespace Docfx.Build.Engine.Tests; @@ -13,13 +12,6 @@ namespace Docfx.Build.Engine.Tests; [Collection("docfx STA")] public class SitemapGeneratorTests : TestBase { - private readonly ITestOutputHelper _output; - - public SitemapGeneratorTests(ITestOutputHelper output) - { - _output = output; - } - public override void Dispose() { base.Dispose(); @@ -67,7 +59,7 @@ public void TestSitemapGenerator() var sitemap = XDocument.Load(sitemapPath); var ns = sitemap.Root.Name.Namespace; var urls = sitemap.Root.Elements(ns + "url").ToArray(); - Assert.True(urls.Length == 4); + Assert.Equal(4, urls.Length); // URLs are ordered based on HTML output's RelativePath. Assert.EndsWith("/Conceptual.html", urls[0].Element(ns + "loc").Value); diff --git a/test/Docfx.Build.Tests/TemplateManagerUnitTest.DotnetToolMode.cs b/test/Docfx.Build.Tests/TemplateManagerUnitTest.DotnetToolMode.cs index 838bff1a889..44a8b471d79 100644 --- a/test/Docfx.Build.Tests/TemplateManagerUnitTest.DotnetToolMode.cs +++ b/test/Docfx.Build.Tests/TemplateManagerUnitTest.DotnetToolMode.cs @@ -1,9 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using AwesomeAssertions; using Docfx.Common; using Docfx.Tests.Common; -using FluentAssertions; using Xunit; using Switches = Docfx.DataContracts.Common.Constants.Switches; diff --git a/test/Docfx.Build.Tests/TemplateManagerUnitTest.cs b/test/Docfx.Build.Tests/TemplateManagerUnitTest.cs index 2a72b1c83a0..22c766f0612 100644 --- a/test/Docfx.Build.Tests/TemplateManagerUnitTest.cs +++ b/test/Docfx.Build.Tests/TemplateManagerUnitTest.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Docfx.Common; using Docfx.Plugins; using Docfx.Tests.Common; diff --git a/test/Docfx.Build.Tests/TemplateProcessorUnitTest.cs b/test/Docfx.Build.Tests/TemplateProcessorUnitTest.cs index afa8b8cfbc1..097a821e3e6 100644 --- a/test/Docfx.Build.Tests/TemplateProcessorUnitTest.cs +++ b/test/Docfx.Build.Tests/TemplateProcessorUnitTest.cs @@ -61,6 +61,6 @@ private ManifestItem Process(string documentType, string fileName, object conten LocalPathFromRoot = fileName, Content = content, }; - return processor.Process(new List { inputItem }, new ApplyTemplateSettings(_inputFolder, _outputFolder))[0]; + return processor.Process([inputItem], new ApplyTemplateSettings(_inputFolder, _outputFolder))[0]; } } diff --git a/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs b/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs index 6b2dbc2ca47..11d201e646f 100644 --- a/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs +++ b/test/Docfx.Build.Tests/TocDocumentProcessorTest.cs @@ -2,7 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Immutable; -using System.Reflection; using System.Web; using Docfx.Build.Engine; using Docfx.Common; @@ -60,15 +59,15 @@ public void ProcessMarkdownTocWithComplexHrefShouldSucceed() var model = JsonUtility.Deserialize(outputRawModelPath); var expectedModel = new TocItemViewModel { - Items = new List - { + Items = + [ new() { Name = "Constructor", Href = $"{href}.md", TopicHref = $"{href}.md", } - } + ] }; AssertTocEqual(expectedModel, model); @@ -94,27 +93,27 @@ public void ProcessMarkdownTocWithAbsoluteHrefShouldSucceed() var model = JsonUtility.Deserialize(outputRawModelPath); var expectedModel = new TocItemViewModel { - Items = new List - { + Items = + [ new() { Name = "Topic1 Language", Href = "/href1", TopicHref = "/href1", - Items = new List - { + Items = + [ new() { Name = "Topic1.1 Language C#", - Items = new List - { + Items = + [ new() { Name = "Topic1.1.1", Href = "/href1.1.1", TopicHref = "/href1.1.1" } - } + ] }, new() { @@ -122,7 +121,7 @@ public void ProcessMarkdownTocWithAbsoluteHrefShouldSucceed() Href = string.Empty, TopicHref = string.Empty } - } + ] }, new() { @@ -130,7 +129,7 @@ public void ProcessMarkdownTocWithAbsoluteHrefShouldSucceed() Href = "http://href.com", TopicHref = "http://href.com" } - } + ] }; AssertTocEqual(expectedModel, model); @@ -158,29 +157,29 @@ public void ProcessMarkdownTocWithRelativeHrefShouldSucceed() var model = JsonUtility.Deserialize(outputRawModelPath); var expectedModel = new TocItemViewModel { - Items = new List - { + Items = + [ new() { Name = "Topic1", Href = "/href1", TopicHref = "/href1", - Items = new List - { + Items = + [ new() { Name = "Topic1.1", Href = file1, TopicHref = file1, - Items = new List - { + Items = + [ new() { Name = "Topic1.1.1", Href = file2, TopicHref = file2 } - } + ] }, new() { @@ -188,7 +187,7 @@ public void ProcessMarkdownTocWithRelativeHrefShouldSucceed() Href = string.Empty, TopicHref = string.Empty } - } + ] }, new() { @@ -202,7 +201,7 @@ public void ProcessMarkdownTocWithRelativeHrefShouldSucceed() Href = "invalid.md", TopicHref = "invalid.md" } - } + ] }; AssertTocEqual(expectedModel, model); @@ -238,15 +237,15 @@ public void ProcessYamlTocWithFolderShouldSucceed() var model = JsonUtility.Deserialize(outputRawModelPath); var expectedModel = new TocItemViewModel { - Items = new List - { + Items = + [ new() { Name = "Topic1", Href = file1, TopicHref = file1, - Items = new List - { + Items = + [ new() { Name = "Topic1.1", @@ -262,7 +261,7 @@ public void ProcessYamlTocWithFolderShouldSucceed() TopicHref = file1, TocHref = "sub/toc.md", } - } + ] }, new() { @@ -271,7 +270,7 @@ public void ProcessYamlTocWithFolderShouldSucceed() TopicHref = file2, TocHref = "sub/toc.md", } - } + ] }; AssertTocEqual(expectedModel, model); @@ -317,24 +316,24 @@ public void ProcessYamlTocWithMetadataShouldSucceed() var expectedModel = new TocItemViewModel { - Items = new List - { + Items = + [ new() { Name = "Topic1", Href = file1, TopicHref = file1, - Items = new List - { + Items = + [ new() { Name = "Topic1.1", Href = file1, // For relative file, href keeps unchanged TopicHref = file1, } - } + ] } - } + ] }; AssertTocEqual(expectedModel, model); } @@ -386,23 +385,23 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() var model = JsonUtility.Deserialize(outputRawModelPath); var expectedModel = new TocItemViewModel { - Items = new List - { + Items = + [ new() { Name = "Topic1", Href = file1, TopicHref = file1, - Items = new List - { + Items = + [ new() { Name = "Topic1.1", IncludedFrom = "~/sub1/toc.md", Href = null, // For referenced toc, the content from the referenced toc is expanded as the items of current toc, and href is cleared TopicHref = null, - Items = new List - { + Items = + [ new() { Name = "Topic", @@ -413,8 +412,8 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() { Name = "ReferencedToc", IncludedFrom = "~/sub1/sub2/toc.yml", - Items = new List - { + Items = + [ new() { Name = "Topic", @@ -427,22 +426,22 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() Href = "sub1/sub2/a/b/c.md", TopicHref = "sub1/sub2/a/b/c.md", } - } + ] }, new() { Name = "ReferencedToc2", IncludedFrom = "~/sub1/sub3/toc.md", - Items = new List - { + Items = + [ new() { Name = "Not-existed-md", Href = "sub1/sub3/sub2/notexist.md", TopicHref = "sub1/sub3/sub2/notexist.md", }, - } + ] }, new() { @@ -450,7 +449,7 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() Href = "sub1/sub2/notexist.md", TopicHref = "sub1/sub2/notexist.md", } - } + ] }, new() { @@ -459,8 +458,8 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() TopicHref = file1, IncludedFrom = "~/sub1/toc.md", Homepage = file1, - Items = new List - { + Items = + [ new() { Name = "Topic", @@ -471,8 +470,8 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() { Name = "ReferencedToc", IncludedFrom = "~/sub1/sub2/toc.yml", - Items = new List - { + Items = + [ new() { Name = "Topic", @@ -485,21 +484,21 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() Href = "sub1/sub2/a/b/c.md", TopicHref = "sub1/sub2/a/b/c.md", } - } + ] }, new() { Name = "ReferencedToc2", IncludedFrom = "~/sub1/sub3/toc.md", - Items = new List - { + Items = + [ new() { Name = "Not-existed-md", Href = "sub1/sub3/sub2/notexist.md", TopicHref = "sub1/sub3/sub2/notexist.md", } - } + ] }, new() { @@ -507,17 +506,17 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() Href = "sub1/sub2/notexist.md", TopicHref = "sub1/sub2/notexist.md", } - } + ] } - } + ] }, new() { Name = "Topic2", IncludedFrom = "~/sub1/sub2/toc.yml", Href = null, - Items = new List - { + Items = + [ new() { Name = "Topic", @@ -530,9 +529,9 @@ public void ProcessYamlTocWithReferencedTocShouldSucceed() Href = "sub1/sub2/a/b/c.md", TopicHref = "sub1/sub2/a/b/c.md", } - } + ] } - } + ] }; AssertTocEqual(expectedModel, model); @@ -575,7 +574,7 @@ public void ProcessMarkdownTocWithNonExistentReferencedTocShouldLogError() var files = new FileCollection(_inputFolder); files.Add(DocumentType.Article, new[] { toc }); - var listener = TestLoggerListener.CreateLoggerListenerWithCodesFilter(new List { WarningCodes.Build.InvalidTocInclude }); + var listener = TestLoggerListener.CreateLoggerListenerWithCodesFilter([WarningCodes.Build.InvalidTocInclude]); Logger.RegisterListener(listener); BuildDocument(files); @@ -599,7 +598,7 @@ public void ProcessYamlTocWithNonExistentReferencedTocShouldLogError() var files = new FileCollection(_inputFolder); files.Add(DocumentType.Article, new[] { toc }); - var listener = TestLoggerListener.CreateLoggerListenerWithCodesFilter(new List { WarningCodes.Build.InvalidTocInclude }); + var listener = TestLoggerListener.CreateLoggerListenerWithCodesFilter([WarningCodes.Build.InvalidTocInclude]); Logger.RegisterListener(listener); BuildDocument(files); Logger.UnregisterListener(listener); @@ -645,8 +644,8 @@ public void ProcessYamlTocWithTocHrefShouldSucceed() var model = JsonUtility.Deserialize(outputRawModelPath); var expectedModel = new TocItemViewModel { - Items = new List - { + Items = + [ new() { Name = "Topic1", @@ -654,8 +653,8 @@ public void ProcessYamlTocWithTocHrefShouldSucceed() TocHref = "/Topic1/", Homepage = "/Topic1/index.html", TopicHref = "/Topic1/index.html", - Items = new List - { + Items = + [ new() { Name = "Topic1.1", @@ -672,7 +671,7 @@ public void ProcessYamlTocWithTocHrefShouldSucceed() Homepage = "/Topic1.2/index.html", TopicHref = "/Topic1.2/index.html", } - } + ] }, new() { @@ -682,7 +681,7 @@ public void ProcessYamlTocWithTocHrefShouldSucceed() TopicHref = file2, Homepage = file2, } - } + ] }; AssertTocEqual(expectedModel, model); @@ -813,7 +812,7 @@ public void WarningShouldBeFromIncludedToc() // Act var listener = TestLoggerListener.CreateLoggerListenerWithCodesFilter( - new List { WarningCodes.Build.InvalidFileLink, WarningCodes.Build.UidNotFound }); + [WarningCodes.Build.InvalidFileLink, WarningCodes.Build.UidNotFound]); Logger.RegisterListener(listener); BuildDocument(files); Logger.UnregisterListener(listener); @@ -841,7 +840,7 @@ public void UrlDecodeHrefInYamlToc() // Act var listener = TestLoggerListener.CreateLoggerListenerWithCodesFilter( - new List { WarningCodes.Build.InvalidFileLink }); + [WarningCodes.Build.InvalidFileLink]); Logger.RegisterListener(listener); BuildDocument(files); Logger.UnregisterListener(listener); @@ -863,7 +862,7 @@ public void UrlDecodeHrefInMarkdownToc() // Act var listener = TestLoggerListener.CreateLoggerListenerWithCodesFilter( - new List { WarningCodes.Build.InvalidFileLink }); + [WarningCodes.Build.InvalidFileLink]); Logger.RegisterListener(listener); BuildDocument(files); Logger.UnregisterListener(listener); diff --git a/test/Docfx.Build.Tests/TocRestructureTest.cs b/test/Docfx.Build.Tests/TocRestructureTest.cs index b25c761b68f..f1308faf7c9 100644 --- a/test/Docfx.Build.Tests/TocRestructureTest.cs +++ b/test/Docfx.Build.Tests/TocRestructureTest.cs @@ -259,7 +259,7 @@ private TocItemViewModel GetTocItem(string layout) } var root = new TocItemViewModel { - Items = new() + Items = [] }; var stack = new Stack>(); stack.Push(Tuple.Create(new LineInfo @@ -280,7 +280,7 @@ private TocItemViewModel GetTocItem(string layout) var parent = stack.Peek(); if (parent.Item2.Items == null) { - parent.Item2.Items = new(); + parent.Item2.Items = []; } parent.Item2.Items.Add(item); @@ -291,8 +291,8 @@ private TocItemViewModel GetTocItem(string layout) private IEnumerable GetLines(string layout) { - return layout.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) - .SelectMany(s => s.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)) + return layout.Split(["\r\n"], StringSplitOptions.RemoveEmptyEntries) + .SelectMany(s => s.Split(["\n"], StringSplitOptions.RemoveEmptyEntries)) .Where(s => !string.IsNullOrWhiteSpace(s)).Select(GetLineInfo); } diff --git a/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs b/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs index b3557df9c27..5b23a995993 100644 --- a/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs +++ b/test/Docfx.Build.Tests/XRefMapDownloaderTest.cs @@ -1,8 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Net; -using FluentAssertions; +using AwesomeAssertions; using Xunit; namespace Docfx.Build.Engine.Tests; diff --git a/test/Docfx.Build.Tests/XRefMapSerializationTest.cs b/test/Docfx.Build.Tests/XRefMapSerializationTest.cs index 6925b4234f0..fdaf6428d05 100644 --- a/test/Docfx.Build.Tests/XRefMapSerializationTest.cs +++ b/test/Docfx.Build.Tests/XRefMapSerializationTest.cs @@ -2,9 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Text; +using AwesomeAssertions; using Docfx.Common; -using Docfx.Plugins; -using FluentAssertions; using Xunit; namespace Docfx.Build.Engine.Tests; @@ -19,16 +18,16 @@ public void XRefMapSerializationRoundTripTest() BaseUrl = "http://localhost", Sorted = true, HrefUpdated = null, - Redirections = new List - { + Redirections = + [ new() { Href = "Dummy", UidPrefix = "Dummy" }, - }, - References = new List - { + ], + References = + [ new(new Dictionary { ["Additional1"] = "Dummy", @@ -40,7 +39,7 @@ public void XRefMapSerializationRoundTripTest() CommentId ="Dummy", IsSpec = true, }, - }, + ], Others = new Dictionary { ["StringValue"] = "Dummy", diff --git a/test/Docfx.Build.UniversalReference.Tests/Docfx.Build.UniversalReference.Tests.csproj b/test/Docfx.Build.UniversalReference.Tests/Docfx.Build.UniversalReference.Tests.csproj index 3aeb509bbd8..286e7730784 100644 --- a/test/Docfx.Build.UniversalReference.Tests/Docfx.Build.UniversalReference.Tests.csproj +++ b/test/Docfx.Build.UniversalReference.Tests/Docfx.Build.UniversalReference.Tests.csproj @@ -6,6 +6,5 @@ - - \ No newline at end of file + diff --git a/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs b/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs index 04240ae3d34..acad455356f 100644 --- a/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs +++ b/test/Docfx.Build.UniversalReference.Tests/UniversalReferenceDocumentProcessorTest.cs @@ -34,7 +34,7 @@ public UniversalReferenceDocumentProcessorTest() RawModelExportSettings = { Export = true }, TransformDocument = true, }; - _templateManager = new TemplateManager(new List { "template" }, null, "TestData/"); + _templateManager = new TemplateManager(["template"], null, "TestData/"); } #region Python diff --git a/test/Docfx.Common.Tests/CompositeDictionaryTest.cs b/test/Docfx.Common.Tests/CompositeDictionaryTest.cs index 2bbe7ee86b0..ff8f6e735bf 100644 --- a/test/Docfx.Common.Tests/CompositeDictionaryTest.cs +++ b/test/Docfx.Common.Tests/CompositeDictionaryTest.cs @@ -105,9 +105,9 @@ public void TestThrowCaseForCompositeDictionary() private sealed class C { - public Dictionary D1 { get; } = new(); - public SortedDictionary D2 { get; } = new(); - public SortedList D3 { get; } = new(); + public Dictionary D1 { get; } = []; + public SortedDictionary D2 { get; } = []; + public SortedList D3 { get; } = []; private CompositeDictionary _cd; public CompositeDictionary CD { diff --git a/test/Docfx.Common.Tests/ConvertToObjectHelperTest.cs b/test/Docfx.Common.Tests/ConvertToObjectHelperTest.cs index 138b4c9795f..ae173c31660 100644 --- a/test/Docfx.Common.Tests/ConvertToObjectHelperTest.cs +++ b/test/Docfx.Common.Tests/ConvertToObjectHelperTest.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json.Serialization; -using FluentAssertions; +using AwesomeAssertions; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Xunit; @@ -30,8 +30,8 @@ public void ConvertComplexTypeToObjectShouldWork() var complexType = new ComplexType { String = "String", - List = new List(), - IntDictionary = new Dictionary() + List = [], + IntDictionary = [] }; var result = ConvertToObjectHelper.ConvertStrongTypeToObject(complexType); Assert.Equal(typeof(Dictionary), result.GetType()); @@ -45,8 +45,8 @@ public void ConvertComplexTypeWithJsonAttributeToObjectShouldUseAttributeAsPrope var complexType = new ComplexTypeWithJson { String = "String", - List = new List(), - IntDictionary = new Dictionary() + List = [], + IntDictionary = [] }; var result = ConvertToObjectHelper.ConvertStrongTypeToObject(complexType); Assert.Equal(typeof(Dictionary), result.GetType()); diff --git a/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj b/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj index 241d5099754..ba18c40f876 100644 --- a/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj +++ b/test/Docfx.Common.Tests/Docfx.Common.Tests.csproj @@ -3,6 +3,5 @@ - diff --git a/test/Docfx.Common.Tests/PathUtilityTest.cs b/test/Docfx.Common.Tests/PathUtilityTest.cs index aaceedef989..6f1c7d36715 100644 --- a/test/Docfx.Common.Tests/PathUtilityTest.cs +++ b/test/Docfx.Common.Tests/PathUtilityTest.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using FluentAssertions; +using AwesomeAssertions; using Xunit; namespace Docfx.Common.Tests; @@ -46,10 +46,10 @@ private static class TestData { "/temp/dir", "/temp/dir/subdir/", "subdir/"}, // If target path endsWith directory separator char. resolved path should contain directory separator. }; - public static TheoryData EscapedPaths = new() - { + public static TheoryData EscapedPaths = + [ "EscapedHypen(%2D).md", // Contains escaped hypen char "EscapedSpace(%20)_with_NonAsciiChar(α).md", // Contains escaped space char and non-unicode char - }; + ]; } } diff --git a/test/Docfx.Common.Tests/YamlSerializationTest.cs b/test/Docfx.Common.Tests/YamlSerializationTest.cs index a2b1315ffce..74fb179a5c3 100644 --- a/test/Docfx.Common.Tests/YamlSerializationTest.cs +++ b/test/Docfx.Common.Tests/YamlSerializationTest.cs @@ -325,11 +325,11 @@ public void TestListOfClassWithExtensibleMembers() public class ClassWithExtensibleMembers : BasicClass { [ExtensibleMember("s.")] - public SortedDictionary StringExtensions { get; } = new(); + public SortedDictionary StringExtensions { get; } = []; [ExtensibleMember("i.")] - public SortedList IntegerExtensions { get; } = new(); + public SortedList IntegerExtensions { get; } = []; [ExtensibleMember()] - public Dictionary ObjectExtensions { get; } = new(); + public Dictionary ObjectExtensions { get; } = []; } [Fact] @@ -364,7 +364,7 @@ public void TestClassWithInterfaceMember() var sw = new StringWriter(); YamlUtility.Serialize(sw, new ClassWithInterfaceMember { - List = new List { "a" }, + List = ["a"], ReadOnlyList = new[] { "b" }, Collection = new Collection { "c" }, ReadOnlyCollection = ImmutableList.Create("d"), diff --git a/test/Docfx.Dotnet.Tests/ApiFilterUnitTest.cs b/test/Docfx.Dotnet.Tests/ApiFilterUnitTest.cs index 7f7babdf6d3..0a1f3a32b08 100644 --- a/test/Docfx.Dotnet.Tests/ApiFilterUnitTest.cs +++ b/test/Docfx.Dotnet.Tests/ApiFilterUnitTest.cs @@ -10,7 +10,7 @@ namespace Docfx.Dotnet.Tests; [Collection("docfx STA")] public class ApiFilterUnitTest { - private static readonly Dictionary EmptyMSBuildProperties = new(); + private static readonly Dictionary EmptyMSBuildProperties = []; [Fact] public void TestApiFilter() diff --git a/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs b/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs index 862bdf0d125..fbad40a99f4 100644 --- a/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs +++ b/test/Docfx.Dotnet.Tests/GenerateMetadataFromCSUnitTest.cs @@ -12,7 +12,7 @@ namespace Docfx.Dotnet.Tests; [Collection("docfx STA")] public class GenerateMetadataFromCSUnitTest { - private static readonly Dictionary EmptyMSBuildProperties = new(); + private static readonly Dictionary EmptyMSBuildProperties = []; private static MetadataItem Verify(string code, ExtractMetadataConfig config = null, IDictionary msbuildProperties = null, MetadataReference[] references = null) { diff --git a/test/Docfx.Dotnet.Tests/GenerateMetadataFromVBUnitTest.cs b/test/Docfx.Dotnet.Tests/GenerateMetadataFromVBUnitTest.cs index 502a6144ca7..41c5d2d378d 100644 --- a/test/Docfx.Dotnet.Tests/GenerateMetadataFromVBUnitTest.cs +++ b/test/Docfx.Dotnet.Tests/GenerateMetadataFromVBUnitTest.cs @@ -11,7 +11,7 @@ namespace Docfx.Dotnet.Tests; [Collection("docfx STA")] public class GenerateMetadataFromVBUnitTest { - private static readonly Dictionary EmptyMSBuildProperties = new(); + private static readonly Dictionary EmptyMSBuildProperties = []; private static MetadataItem Verify(string code, ExtractMetadataConfig config = null, IDictionary msbuildProperties = null, MetadataReference[] references = null) { diff --git a/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs b/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs index 0a2035f3daf..9906c514222 100644 --- a/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs +++ b/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs @@ -28,7 +28,8 @@ public static void ParaNewLine() Assert.Equal( """ a -

b

c

+

b

+

c

""", XmlComment.Parse(""" @@ -390,13 +391,14 @@ Classes in assemblies are by definition complete. example

This is ref a sample of exception node

  • -
    public class XmlElement
    -                      : XmlLinkedNode
    -
    1. - word inside list->listItem->list->listItem->para.> + +
      public class XmlElement
      +                            : XmlLinkedNode
      +
      1. + word inside list->listItem->list->listItem->para.> the second line.
      2. item2 in numbered list
      -
    2. item2 in bullet list
    3. +
    4. item2 in bullet list
    5. loose text not wrapped in description
""", remarks, ignoreLineEndingDifferences: true); @@ -519,6 +521,7 @@ public void Issue9495() Assert.Equal( """
options.UseRelativeLinks = true;
+
{
               "type": "articles",
               "id": "4309",
@@ -533,4 +536,45 @@ public void Issue9495()
             }
""", comment.Examples[0], ignoreLineEndingDifferences: true); } + + [Fact] + public void Issue10385() + { + var comment = XmlComment.Parse( + """ + + + Paragraph. + + + public sealed class Issue10385 + { + public int AAA {get;set;} + + public int BBB {get;set;} + + public int CCC {get;set;} + } + + + """); + Assert.Equal( + """ +

+ Paragraph. +

+ +
public sealed class Issue10385
+            {
+                public int AAA {get;set;}
+
+                public int BBB {get;set;}
+
+                public int CCC {get;set;}
+            }
+ """, comment.Remarks, ignoreLineEndingDifferences: true); + } + + + } diff --git a/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj b/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj index 38cbb3cdba2..659823ee298 100644 --- a/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj +++ b/test/Docfx.Glob.Tests/Docfx.Glob.Tests.csproj @@ -1,6 +1,5 @@ - diff --git a/test/Docfx.Glob.Tests/GlobFileTest.cs b/test/Docfx.Glob.Tests/GlobFileTest.cs index da22b713f17..6ea1062ed69 100644 --- a/test/Docfx.Glob.Tests/GlobFileTest.cs +++ b/test/Docfx.Glob.Tests/GlobFileTest.cs @@ -87,7 +87,7 @@ private static void CreateFilesOrFolders(string cwd, params string[] items) foreach (var i in items) { var item = cwd + "/" + i; - if (item.EndsWith("/")) + if (item.EndsWith('/')) { Directory.CreateDirectory(item); } diff --git a/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs b/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs index 35b563d1c86..b306433a019 100644 --- a/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs +++ b/test/Docfx.MarkdigEngine.Extensions.Tests/CodeTest.cs @@ -7,7 +7,7 @@ namespace Docfx.MarkdigEngine.Tests; public class CodeTest { - public static string contentCSharp = @"using System; + private static readonly string contentCSharp = @"using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; @@ -216,7 +216,7 @@ void TableCellConst() } } }"; - public static string contentCSharp2 = @"using System; + private static readonly string contentCSharp2 = @"using System; using System.Collections.Generic; using System.IO; using System.Threading; @@ -376,7 +376,7 @@ private static CosmosClient BuildCosmosClient(IConfiguration configuration) } } }"; - public static string contentCSharpRegion = @"using Microsoft.AspNetCore.Builder; + private static readonly string contentCSharpRegion = @"using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -446,7 +446,7 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) } } }"; - public static string contentASPNet = @"@{ + private static readonly string contentASPNet = @"@{ ViewData[""Title""] = ""Anchor Tag Helper""; } @@ -650,7 +650,7 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) "; - public static string contentVB = @"' + private static readonly string contentVB = @"' Class ADSetupInformation Shared Sub Main() @@ -709,7 +709,7 @@ End Sub End Class ' "; - public static string contentCPP = @"// + private static readonly string contentCPP = @"// using namespace System; int main() @@ -771,7 +771,7 @@ int main() AppDomain4::Main(); } // "; - public static string contentCPP2 = @"// + private static readonly string contentCPP2 = @"// using namespace System; using namespace System::Collections::Generic; @@ -947,7 +947,7 @@ int main() Key ""doc"" is not found. */ //"; - public static string contentCrazy = @"// + private static readonly string contentCrazy = @"// using namespace System; int main() @@ -1009,7 +1009,7 @@ int main() AppDomain4::Main(); } // "; - public static string contentSQL = @"-- + private static readonly string contentSQL = @"-- -- SELECT * FROM Students WHERE Grade = 12 @@ -1022,7 +1022,7 @@ int main() AND Class = 'Math' -- --"; - public static string contentPython = @"# + private static readonly string contentPython = @"# # from flask import Flask app = Flask(__name__) @@ -1035,21 +1035,21 @@ def hello(): # # "; - public static string contentBatch = @"REM + private static readonly string contentBatch = @"REM :Label1 :Label2 :: Comment line 3 REM :: Comment line 4 IF EXIST C:\AUTOEXEC.BAT REM AUTOEXEC.BAT exists"; - public static string contentErlang = @"-module(hello_world). + private static readonly string contentErlang = @"-module(hello_world). -compile(export_all). % hello() -> io:format(""hello world~n""). % "; - public static string contentLisp = @"; + private static readonly string contentLisp = @"; USER(64): (member 'b '(perhaps today is a good day to die)) ; test fails NIL ; @@ -1057,7 +1057,7 @@ def hello(): '(a good day to die) ; ;"; - public static string contentRuby = @"source 'https://rubygems.org' + private static readonly string contentRuby = @"source 'https://rubygems.org' git_source(:github) { |repo| ""https://github.com/#{repo}.git"" } ruby '2.6.5' @@ -1119,7 +1119,7 @@ def hello(): gem 'activerecord-session_store', '~> 1.1' # "; - public static string contentCSS = @"body { + private static readonly string contentCSS = @"body { padding-top: 70px; } diff --git a/test/Docfx.MarkdigEngine.Extensions.Tests/PlantUmlTest.cs b/test/Docfx.MarkdigEngine.Extensions.Tests/PlantUmlTest.cs index 1456fab9ebb..51d8eddc4da 100644 --- a/test/Docfx.MarkdigEngine.Extensions.Tests/PlantUmlTest.cs +++ b/test/Docfx.MarkdigEngine.Extensions.Tests/PlantUmlTest.cs @@ -1,14 +1,14 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using FluentAssertions; +using AwesomeAssertions; using Xunit; namespace Docfx.MarkdigEngine.Tests; public class PlantUmlTest { - [Fact] + [Fact(Skip = "Flaky Tests")] public void TestRenderSvg_SequenceDiagram() { var source = """ @@ -26,6 +26,6 @@ public void TestRenderSvg_SequenceDiagram() }).TrimEnd(); result.Should().StartWith("""
"""); + result.Should().EndWith(""""""); } } diff --git a/test/Docfx.MarkdigEngine.Extensions.Tests/TestUtility.cs b/test/Docfx.MarkdigEngine.Extensions.Tests/TestUtility.cs index 32d6ac85ba1..96c98606e4b 100644 --- a/test/Docfx.MarkdigEngine.Extensions.Tests/TestUtility.cs +++ b/test/Docfx.MarkdigEngine.Extensions.Tests/TestUtility.cs @@ -23,9 +23,9 @@ public static string VerifyMarkup( Dictionary notes = null, PlantUmlOptions plantUml = null) { - errors ??= Array.Empty(); - tokens ??= new Dictionary(); - files ??= new Dictionary(); + errors ??= []; + tokens ??= []; + files ??= []; optionalExtensions ??= []; var actualErrors = new List(); diff --git a/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj b/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj index 8c61517ccfb..a90ff20f42d 100644 --- a/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj +++ b/test/Docfx.MarkdigEngine.Tests/Docfx.MarkdigEngine.Tests.csproj @@ -1,8 +1,5 @@ - - - \ No newline at end of file diff --git a/test/Docfx.MarkdigEngine.Tests/TestUtility/TestLoggerListener.cs b/test/Docfx.MarkdigEngine.Tests/TestUtility/TestLoggerListener.cs index f1f562fdcbb..5b3c1e0354f 100644 --- a/test/Docfx.MarkdigEngine.Tests/TestUtility/TestLoggerListener.cs +++ b/test/Docfx.MarkdigEngine.Tests/TestUtility/TestLoggerListener.cs @@ -7,7 +7,7 @@ namespace Docfx.MarkdigEngine.Tests; internal class TestLoggerListener : ILoggerListener { - public List Items { get; } = new(); + public List Items { get; } = []; public void Dispose() { diff --git a/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj b/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj index 5ba17a6a447..230ab4eeb47 100644 --- a/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj +++ b/test/Docfx.Tests.Common/Docfx.Tests.Common.csproj @@ -3,6 +3,11 @@ false + + + + + diff --git a/test/Docfx.Tests.Common/TestBase.cs b/test/Docfx.Tests.Common/TestBase.cs index 77abe916218..750958e7297 100644 --- a/test/Docfx.Tests.Common/TestBase.cs +++ b/test/Docfx.Tests.Common/TestBase.cs @@ -6,9 +6,9 @@ namespace Docfx.Tests.Common; -public class TestBase : IClassFixture, IDisposable +public class TestBase : IDisposable { - private readonly List _folderCollection = new(); + private readonly List _folderCollection = []; private readonly object _locker = new(); protected string GetRandomFolder() diff --git a/test/Docfx.Tests.Common/TestListenerScope.cs b/test/Docfx.Tests.Common/TestListenerScope.cs index 9607a8c084c..7b955459c19 100644 --- a/test/Docfx.Tests.Common/TestListenerScope.cs +++ b/test/Docfx.Tests.Common/TestListenerScope.cs @@ -7,7 +7,7 @@ namespace Docfx.Tests.Common; public class TestListenerScope : ILoggerListener, IDisposable { - private static AsyncLocal> s_items = new(); + private static readonly AsyncLocal> s_items = new(); private readonly LogLevel _logLevel; public List Items => s_items.Value; @@ -15,7 +15,7 @@ public class TestListenerScope : ILoggerListener, IDisposable public TestListenerScope(LogLevel logLevel = LogLevel.Warning) { _logLevel = logLevel; - s_items.Value = new(); + s_items.Value = []; Logger.RegisterListener(this); } diff --git a/test/Docfx.Tests.Common/TestLoggerListener.cs b/test/Docfx.Tests.Common/TestLoggerListener.cs index f284e2d53ca..c2cd6beaa8b 100644 --- a/test/Docfx.Tests.Common/TestLoggerListener.cs +++ b/test/Docfx.Tests.Common/TestLoggerListener.cs @@ -7,7 +7,7 @@ namespace Docfx.Tests.Common; public class TestLoggerListener : ILoggerListener { - public List Items { get; } = new(); + public List Items { get; } = []; private readonly Func _filter; diff --git a/test/docfx.Snapshot.Tests/PercyTest.cs b/test/docfx.Snapshot.Tests/PercyTest.cs index 7d7449b9a36..9528ebe1ed6 100644 --- a/test/docfx.Snapshot.Tests/PercyTest.cs +++ b/test/docfx.Snapshot.Tests/PercyTest.cs @@ -39,7 +39,7 @@ public PercyFactAttribute() static PercyTest() { PlaywrightHelper.EnsurePlaywrightNodeJsPath(); - Microsoft.Playwright.Program.Main(["install", "chromium"]); + Microsoft.Playwright.Program.Main(["install", "chromium", "--only-shell"]); } [PercyFact] diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.html.view.verified.json index 3fde883ce2b..6dc677e5f5e 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.html.view.verified.json @@ -1,121 +1,104 @@ { "items": [ { - "name": "Namespaces", + "name": "MyExample", + "href": "MyExample.html", + "topicHref": "MyExample.html", + "topicUid": "MyExample", + "type": "Namespace", "items": [ { - "name": "MyExample", - "href": "MyExample.html", - "topicHref": "MyExample.html", - "topicUid": "MyExample", - "type": "Namespace", + "name": "ExampleClass", + "href": "MyExample.ExampleClass.html", + "topicHref": "MyExample.ExampleClass.html", + "topicUid": "MyExample.ExampleClass", + "type": "Class", "items": [ { - "name": "Classes", + "name": "Constructors", "items": [ { "name": "ExampleClass", - "href": "MyExample.ExampleClass.html", - "topicHref": "MyExample.ExampleClass.html", - "topicUid": "MyExample.ExampleClass", - "type": "Class", - "items": [ - { - "name": "Constructors", - "items": [ - { - "name": "ExampleClass", - "href": "MyExample.ExampleClass.-ctor.html", - "topicHref": "MyExample.ExampleClass.-ctor.html", - "topicUid": "MyExample.ExampleClass.#ctor*", - "type": "Constructor", - "fullName": "MyExample.ExampleClass.ExampleClass", - "nameWithType": "ExampleClass.ExampleClass", - "isEii": false, - "tocHref": null, - "level": 7, - "items": [], - "leaf": true - } - ], - "topicHref": null, - "tocHref": null, - "level": 6, - "leaf": false - }, - { - "name": "Properties", - "items": [ - { - "name": "MyProperty", - "href": "MyExample.ExampleClass.MyProperty.html", - "topicHref": "MyExample.ExampleClass.MyProperty.html", - "topicUid": "MyExample.ExampleClass.MyProperty*", - "type": "Property", - "fullName": "MyExample.ExampleClass.MyProperty", - "nameWithType": "ExampleClass.MyProperty", - "isEii": false, - "tocHref": null, - "level": 7, - "items": [], - "leaf": true - } - ], - "topicHref": null, - "tocHref": null, - "level": 6, - "leaf": false - }, - { - "name": "Methods", - "items": [ - { - "name": "MyMethod", - "href": "MyExample.ExampleClass.MyMethod.html", - "topicHref": "MyExample.ExampleClass.MyMethod.html", - "topicUid": "MyExample.ExampleClass.MyMethod*", - "type": "Method", - "fullName": "MyExample.ExampleClass.MyMethod", - "nameWithType": "ExampleClass.MyMethod", - "isEii": false, - "tocHref": null, - "level": 7, - "items": [], - "leaf": true - } - ], - "topicHref": null, - "tocHref": null, - "level": 6, - "leaf": false - }, - { - "name": "Events", - "items": [ - { - "name": "MyEvent", - "href": "MyExample.ExampleClass.MyEvent.html", - "topicHref": "MyExample.ExampleClass.MyEvent.html", - "topicUid": "MyExample.ExampleClass.MyEvent", - "type": "Event", - "fullName": "MyExample.ExampleClass.MyEvent", - "nameWithType": "ExampleClass.MyEvent", - "isEii": false, - "tocHref": null, - "level": 7, - "items": [], - "leaf": true - } - ], - "topicHref": null, - "tocHref": null, - "level": 6, - "leaf": false - } - ], + "href": "MyExample.ExampleClass.-ctor.html", + "topicHref": "MyExample.ExampleClass.-ctor.html", + "topicUid": "MyExample.ExampleClass.#ctor*", + "type": "Constructor", + "fullName": "MyExample.ExampleClass.ExampleClass", + "nameWithType": "ExampleClass.ExampleClass", + "isEii": false, "tocHref": null, "level": 5, - "leaf": false + "items": [], + "leaf": true + } + ], + "topicHref": null, + "tocHref": null, + "level": 4, + "leaf": false + }, + { + "name": "Properties", + "items": [ + { + "name": "MyProperty", + "href": "MyExample.ExampleClass.MyProperty.html", + "topicHref": "MyExample.ExampleClass.MyProperty.html", + "topicUid": "MyExample.ExampleClass.MyProperty*", + "type": "Property", + "fullName": "MyExample.ExampleClass.MyProperty", + "nameWithType": "ExampleClass.MyProperty", + "isEii": false, + "tocHref": null, + "level": 5, + "items": [], + "leaf": true + } + ], + "topicHref": null, + "tocHref": null, + "level": 4, + "leaf": false + }, + { + "name": "Methods", + "items": [ + { + "name": "MyMethod", + "href": "MyExample.ExampleClass.MyMethod.html", + "topicHref": "MyExample.ExampleClass.MyMethod.html", + "topicUid": "MyExample.ExampleClass.MyMethod*", + "type": "Method", + "fullName": "MyExample.ExampleClass.MyMethod", + "nameWithType": "ExampleClass.MyMethod", + "isEii": false, + "tocHref": null, + "level": 5, + "items": [], + "leaf": true + } + ], + "topicHref": null, + "tocHref": null, + "level": 4, + "leaf": false + }, + { + "name": "Events", + "items": [ + { + "name": "MyEvent", + "href": "MyExample.ExampleClass.MyEvent.html", + "topicHref": "MyExample.ExampleClass.MyEvent.html", + "topicUid": "MyExample.ExampleClass.MyEvent", + "type": "Event", + "fullName": "MyExample.ExampleClass.MyEvent", + "nameWithType": "ExampleClass.MyEvent", + "isEii": false, + "tocHref": null, + "level": 5, + "items": [], + "leaf": true } ], "topicHref": null, @@ -129,7 +112,6 @@ "leaf": false } ], - "topicHref": null, "tocHref": null, "level": 2, "leaf": false diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.json.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.json.view.verified.json index 9445945054e..650dcc23752 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.json.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.json.view.verified.json @@ -1,3 +1,3 @@ { - "content": "{\"items\":[{\"name\":\"Namespaces\",\"items\":[{\"name\":\"MyExample\",\"href\":\"MyExample.html\",\"topicHref\":\"MyExample.html\",\"topicUid\":\"MyExample\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Classes\",\"items\":[{\"name\":\"ExampleClass\",\"href\":\"MyExample.ExampleClass.html\",\"topicHref\":\"MyExample.ExampleClass.html\",\"topicUid\":\"MyExample.ExampleClass\",\"type\":\"Class\",\"items\":[{\"name\":\"Constructors\",\"items\":[{\"name\":\"ExampleClass\",\"href\":\"MyExample.ExampleClass.-ctor.html\",\"topicHref\":\"MyExample.ExampleClass.-ctor.html\",\"topicUid\":\"MyExample.ExampleClass.#ctor*\",\"type\":\"Constructor\",\"fullName\":\"MyExample.ExampleClass.ExampleClass\",\"nameWithType\":\"ExampleClass.ExampleClass\",\"isEii\":false,\"tocHref\":null,\"level\":7,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":6,\"leaf\":false},{\"name\":\"Properties\",\"items\":[{\"name\":\"MyProperty\",\"href\":\"MyExample.ExampleClass.MyProperty.html\",\"topicHref\":\"MyExample.ExampleClass.MyProperty.html\",\"topicUid\":\"MyExample.ExampleClass.MyProperty*\",\"type\":\"Property\",\"fullName\":\"MyExample.ExampleClass.MyProperty\",\"nameWithType\":\"ExampleClass.MyProperty\",\"isEii\":false,\"tocHref\":null,\"level\":7,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":6,\"leaf\":false},{\"name\":\"Methods\",\"items\":[{\"name\":\"MyMethod\",\"href\":\"MyExample.ExampleClass.MyMethod.html\",\"topicHref\":\"MyExample.ExampleClass.MyMethod.html\",\"topicUid\":\"MyExample.ExampleClass.MyMethod*\",\"type\":\"Method\",\"fullName\":\"MyExample.ExampleClass.MyMethod\",\"nameWithType\":\"ExampleClass.MyMethod\",\"isEii\":false,\"tocHref\":null,\"level\":7,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":6,\"leaf\":false},{\"name\":\"Events\",\"items\":[{\"name\":\"MyEvent\",\"href\":\"MyExample.ExampleClass.MyEvent.html\",\"topicHref\":\"MyExample.ExampleClass.MyEvent.html\",\"topicUid\":\"MyExample.ExampleClass.MyEvent\",\"type\":\"Event\",\"fullName\":\"MyExample.ExampleClass.MyEvent\",\"nameWithType\":\"ExampleClass.MyEvent\",\"isEii\":false,\"tocHref\":null,\"level\":7,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":6,\"leaf\":false}],\"tocHref\":null,\"level\":5,\"leaf\":false}],\"topicHref\":null,\"tocHref\":null,\"level\":4,\"leaf\":false}],\"tocHref\":null,\"level\":3,\"leaf\":false}],\"topicHref\":null,\"tocHref\":null,\"level\":2,\"leaf\":false}],\"memberLayout\":\"SeparatePages\",\"topicHref\":null,\"tocHref\":null,\"name\":null,\"level\":1,\"leaf\":false}" + "content": "{\"items\":[{\"name\":\"MyExample\",\"href\":\"MyExample.html\",\"topicHref\":\"MyExample.html\",\"topicUid\":\"MyExample\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ExampleClass\",\"href\":\"MyExample.ExampleClass.html\",\"topicHref\":\"MyExample.ExampleClass.html\",\"topicUid\":\"MyExample.ExampleClass\",\"type\":\"Class\",\"items\":[{\"name\":\"Constructors\",\"items\":[{\"name\":\"ExampleClass\",\"href\":\"MyExample.ExampleClass.-ctor.html\",\"topicHref\":\"MyExample.ExampleClass.-ctor.html\",\"topicUid\":\"MyExample.ExampleClass.#ctor*\",\"type\":\"Constructor\",\"fullName\":\"MyExample.ExampleClass.ExampleClass\",\"nameWithType\":\"ExampleClass.ExampleClass\",\"isEii\":false,\"tocHref\":null,\"level\":5,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":4,\"leaf\":false},{\"name\":\"Properties\",\"items\":[{\"name\":\"MyProperty\",\"href\":\"MyExample.ExampleClass.MyProperty.html\",\"topicHref\":\"MyExample.ExampleClass.MyProperty.html\",\"topicUid\":\"MyExample.ExampleClass.MyProperty*\",\"type\":\"Property\",\"fullName\":\"MyExample.ExampleClass.MyProperty\",\"nameWithType\":\"ExampleClass.MyProperty\",\"isEii\":false,\"tocHref\":null,\"level\":5,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":4,\"leaf\":false},{\"name\":\"Methods\",\"items\":[{\"name\":\"MyMethod\",\"href\":\"MyExample.ExampleClass.MyMethod.html\",\"topicHref\":\"MyExample.ExampleClass.MyMethod.html\",\"topicUid\":\"MyExample.ExampleClass.MyMethod*\",\"type\":\"Method\",\"fullName\":\"MyExample.ExampleClass.MyMethod\",\"nameWithType\":\"ExampleClass.MyMethod\",\"isEii\":false,\"tocHref\":null,\"level\":5,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":4,\"leaf\":false},{\"name\":\"Events\",\"items\":[{\"name\":\"MyEvent\",\"href\":\"MyExample.ExampleClass.MyEvent.html\",\"topicHref\":\"MyExample.ExampleClass.MyEvent.html\",\"topicUid\":\"MyExample.ExampleClass.MyEvent\",\"type\":\"Event\",\"fullName\":\"MyExample.ExampleClass.MyEvent\",\"nameWithType\":\"ExampleClass.MyEvent\",\"isEii\":false,\"tocHref\":null,\"level\":5,\"items\":[],\"leaf\":true}],\"topicHref\":null,\"tocHref\":null,\"level\":4,\"leaf\":false}],\"tocHref\":null,\"level\":3,\"leaf\":false}],\"tocHref\":null,\"level\":2,\"leaf\":false}],\"memberLayout\":\"SeparatePages\",\"topicHref\":null,\"tocHref\":null,\"name\":null,\"level\":1,\"leaf\":false}" } \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.verified.json index 853804b3f61..fc861cd98be 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Extensions/api/toc.verified.json @@ -1,2 +1,2 @@  -{"items":[{"name":"Namespaces","items":[{"name":"MyExample","href":"MyExample.html","topicHref":"MyExample.html","topicUid":"MyExample","type":"Namespace","items":[{"name":"Classes","items":[{"name":"ExampleClass","href":"MyExample.ExampleClass.html","topicHref":"MyExample.ExampleClass.html","topicUid":"MyExample.ExampleClass","type":"Class","items":[{"name":"Constructors","items":[{"name":"ExampleClass","href":"MyExample.ExampleClass.-ctor.html","topicHref":"MyExample.ExampleClass.-ctor.html","topicUid":"MyExample.ExampleClass.#ctor*","type":"Constructor","fullName":"MyExample.ExampleClass.ExampleClass","nameWithType":"ExampleClass.ExampleClass","isEii":false,"tocHref":null,"level":7,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":6,"leaf":false},{"name":"Properties","items":[{"name":"MyProperty","href":"MyExample.ExampleClass.MyProperty.html","topicHref":"MyExample.ExampleClass.MyProperty.html","topicUid":"MyExample.ExampleClass.MyProperty*","type":"Property","fullName":"MyExample.ExampleClass.MyProperty","nameWithType":"ExampleClass.MyProperty","isEii":false,"tocHref":null,"level":7,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":6,"leaf":false},{"name":"Methods","items":[{"name":"MyMethod","href":"MyExample.ExampleClass.MyMethod.html","topicHref":"MyExample.ExampleClass.MyMethod.html","topicUid":"MyExample.ExampleClass.MyMethod*","type":"Method","fullName":"MyExample.ExampleClass.MyMethod","nameWithType":"ExampleClass.MyMethod","isEii":false,"tocHref":null,"level":7,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":6,"leaf":false},{"name":"Events","items":[{"name":"MyEvent","href":"MyExample.ExampleClass.MyEvent.html","topicHref":"MyExample.ExampleClass.MyEvent.html","topicUid":"MyExample.ExampleClass.MyEvent","type":"Event","fullName":"MyExample.ExampleClass.MyEvent","nameWithType":"ExampleClass.MyEvent","isEii":false,"tocHref":null,"level":7,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":6,"leaf":false}],"tocHref":null,"level":5,"leaf":false}],"topicHref":null,"tocHref":null,"level":4,"leaf":false}],"tocHref":null,"level":3,"leaf":false}],"topicHref":null,"tocHref":null,"level":2,"leaf":false}],"memberLayout":"SeparatePages","topicHref":null,"tocHref":null,"name":null,"level":1,"leaf":false} +{"items":[{"name":"MyExample","href":"MyExample.html","topicHref":"MyExample.html","topicUid":"MyExample","type":"Namespace","items":[{"name":"ExampleClass","href":"MyExample.ExampleClass.html","topicHref":"MyExample.ExampleClass.html","topicUid":"MyExample.ExampleClass","type":"Class","items":[{"name":"Constructors","items":[{"name":"ExampleClass","href":"MyExample.ExampleClass.-ctor.html","topicHref":"MyExample.ExampleClass.-ctor.html","topicUid":"MyExample.ExampleClass.#ctor*","type":"Constructor","fullName":"MyExample.ExampleClass.ExampleClass","nameWithType":"ExampleClass.ExampleClass","isEii":false,"tocHref":null,"level":5,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":4,"leaf":false},{"name":"Properties","items":[{"name":"MyProperty","href":"MyExample.ExampleClass.MyProperty.html","topicHref":"MyExample.ExampleClass.MyProperty.html","topicUid":"MyExample.ExampleClass.MyProperty*","type":"Property","fullName":"MyExample.ExampleClass.MyProperty","nameWithType":"ExampleClass.MyProperty","isEii":false,"tocHref":null,"level":5,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":4,"leaf":false},{"name":"Methods","items":[{"name":"MyMethod","href":"MyExample.ExampleClass.MyMethod.html","topicHref":"MyExample.ExampleClass.MyMethod.html","topicUid":"MyExample.ExampleClass.MyMethod*","type":"Method","fullName":"MyExample.ExampleClass.MyMethod","nameWithType":"ExampleClass.MyMethod","isEii":false,"tocHref":null,"level":5,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":4,"leaf":false},{"name":"Events","items":[{"name":"MyEvent","href":"MyExample.ExampleClass.MyEvent.html","topicHref":"MyExample.ExampleClass.MyEvent.html","topicUid":"MyExample.ExampleClass.MyEvent","type":"Event","fullName":"MyExample.ExampleClass.MyEvent","nameWithType":"ExampleClass.MyEvent","isEii":false,"tocHref":null,"level":5,"items":[],"leaf":true}],"topicHref":null,"tocHref":null,"level":4,"leaf":false}],"tocHref":null,"level":3,"leaf":false}],"tocHref":null,"level":2,"leaf":false}],"memberLayout":"SeparatePages","topicHref":null,"tocHref":null,"name":null,"level":1,"leaf":false} diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json new file mode 100644 index 00000000000..d0666050a9e --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json @@ -0,0 +1,383 @@ +{ + "uid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "isEii": false, + "isExtensionMethod": false, + "parent": { + "uid": "BuildFromProject", + "isEii": false, + "isExtensionMethod": false, + "href": "BuildFromProject.html", + "name": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0 + }, + "children": [ + { + "inProperty": true, + "typePropertyName": "inProperty", + "id": "properties", + "children": [ + { + "uid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks", + "isEii": false, + "isExtensionMethod": false, + "parent": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "isExternal": false, + "name": [ + { + "lang": "csharp", + "value": "UseRelativeLinks" + }, + { + "lang": "vb", + "value": "UseRelativeLinks" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "syntax": { + "content": [ + { + "lang": "csharp", + "value": "bool UseRelativeLinks { get; }" + }, + { + "lang": "vb", + "value": "ReadOnly Property UseRelativeLinks As Boolean" + } + ], + "parameters": [], + "return": null, + "propertyValue": { + "type": { + "uid": "System.Boolean", + "name": [ + { + "lang": "csharp", + "value": "bool" + }, + { + "lang": "vb", + "value": "Boolean" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "bool" + }, + { + "lang": "vb", + "value": "Boolean" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "bool" + }, + { + "lang": "vb", + "value": "Boolean" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ] + } + } + }, + "source": { + "remote": { + "path": "samples/seed/dotnet/project/Project/Inheritdoc.cs", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "id": "UseRelativeLinks", + "path": "dotnet/project/Project/Inheritdoc.cs", + "startLine": 138, + "endLine": 0 + }, + "assemblies": [ + "BuildFromProject" + ], + "namespace": "BuildFromProject", + "example": [ + "
options.UseRelativeLinks = true;
\n
{\n  \"type\": \"articles\",\n  \"id\": \"4309\",\n  \"relationships\": {\n     \"author\": {\n       \"links\": {\n         \"self\": \"/api/shopping/articles/4309/relationships/author\",\n         \"related\": \"/api/shopping/articles/4309/author\"\n       }\n     }\n  }\n}
\n" + ], + "overload": { + "uid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks*", + "name": [ + { + "lang": "csharp", + "value": "UseRelativeLinks" + }, + { + "lang": "vb", + "value": "UseRelativeLinks" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "id": "BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions_UseRelativeLinks_" + }, + "level": 0, + "type": "property", + "summary": "

Whether to use relative links for all resources. false by default.

\n", + "platform": null, + "docurl": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions_UseRelativeLinks.md&value=---%0Auid%3A%20BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A", + "sourceurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/project/Project/Inheritdoc.cs/#L139", + "description": "", + "remarks": "", + "conceptual": "", + "implements": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions_UseRelativeLinks", + "hideTitleType": false, + "hideSubtitle": false + } + ] + } + ], + "langs": [ + "csharp", + "vb" + ], + "name": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "type": "interface", + "source": { + "remote": { + "path": "samples/seed/dotnet/project/Project/Inheritdoc.cs", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "id": "IJsonApiOptions", + "path": "dotnet/project/Project/Inheritdoc.cs", + "startLine": 114, + "endLine": 0 + }, + "assemblies": [ + "BuildFromProject" + ], + "namespace": { + "uid": "BuildFromProject", + "isEii": false, + "isExtensionMethod": false, + "href": "BuildFromProject.html", + "name": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0 + }, + "syntax": { + "content": [ + { + "lang": "csharp", + "value": "public interface Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Public Interface Inheritdoc.Issue9736.IJsonApiOptions" + } + ] + }, + "level": 0, + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "_key": "obj/api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.yml", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "_rel": "../", + "_tocKey": "~/obj/api/toc.yml", + "_tocPath": "api/toc.html", + "_tocRel": "toc.html", + "yamlmime": "ManagedReference", + "docurl": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions.md&value=---%0Auid%3A%20BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A", + "sourceurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/project/Project/Inheritdoc.cs/#L115", + "summary": "", + "description": "", + "remarks": "", + "conceptual": "", + "implements": "", + "example": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions", + "hideTitleType": false, + "hideSubtitle": false, + "isClass": true, + "inInterface": true, + "_disableToc": false, + "_disableNextArticle": true +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json new file mode 100644 index 00000000000..74afad733c6 --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json @@ -0,0 +1,819 @@ +{ + "uid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions", + "isEii": false, + "isExtensionMethod": false, + "parent": { + "uid": "BuildFromProject", + "isEii": false, + "isExtensionMethod": false, + "href": "BuildFromProject.html", + "name": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0 + }, + "children": [ + { + "inProperty": true, + "typePropertyName": "inProperty", + "id": "properties", + "children": [ + { + "uid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks", + "isEii": false, + "isExtensionMethod": false, + "parent": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions", + "isExternal": false, + "name": [ + { + "lang": "csharp", + "value": "UseRelativeLinks" + }, + { + "lang": "vb", + "value": "UseRelativeLinks" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "syntax": { + "content": [ + { + "lang": "csharp", + "value": "public bool UseRelativeLinks { get; set; }" + }, + { + "lang": "vb", + "value": "Public Property UseRelativeLinks As Boolean" + } + ], + "parameters": [], + "return": null, + "propertyValue": { + "type": { + "uid": "System.Boolean", + "name": [ + { + "lang": "csharp", + "value": "bool" + }, + { + "lang": "vb", + "value": "Boolean" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "bool" + }, + { + "lang": "vb", + "value": "Boolean" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "bool" + }, + { + "lang": "vb", + "value": "Boolean" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ] + } + } + }, + "source": { + "remote": { + "path": "samples/seed/dotnet/project/Project/Inheritdoc.cs", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "id": "UseRelativeLinks", + "path": "dotnet/project/Project/Inheritdoc.cs", + "startLine": 144, + "endLine": 0 + }, + "assemblies": [ + "BuildFromProject" + ], + "namespace": "BuildFromProject", + "example": [ + "
options.UseRelativeLinks = true;
\n
{\n  \"type\": \"articles\",\n  \"id\": \"4309\",\n  \"relationships\": {\n     \"author\": {\n       \"links\": {\n         \"self\": \"/api/shopping/articles/4309/relationships/author\",\n         \"related\": \"/api/shopping/articles/4309/author\"\n       }\n     }\n  }\n}
\n" + ], + "overload": { + "uid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks*", + "name": [ + { + "lang": "csharp", + "value": "UseRelativeLinks" + }, + { + "lang": "vb", + "value": "UseRelativeLinks" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "id": "BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions_UseRelativeLinks_" + }, + "level": 0, + "implements": [ + { + "uid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks", + "name": [ + { + "lang": "csharp", + "value": "UseRelativeLinks" + }, + { + "lang": "vb", + "value": "UseRelativeLinks" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ] + } + ], + "type": "property", + "summary": "

Whether to use relative links for all resources. false by default.

\n", + "platform": null, + "docurl": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions_UseRelativeLinks.md&value=---%0Auid%3A%20BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A", + "sourceurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/project/Project/Inheritdoc.cs/#L145", + "description": "", + "remarks": "", + "conceptual": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions_UseRelativeLinks", + "hideTitleType": false, + "hideSubtitle": false + } + ] + } + ], + "langs": [ + "csharp", + "vb" + ], + "name": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions" + } + ], + "type": "class", + "source": { + "remote": { + "path": "samples/seed/dotnet/project/Project/Inheritdoc.cs", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "id": "JsonApiOptions", + "path": "dotnet/project/Project/Inheritdoc.cs", + "startLine": 141, + "endLine": 0 + }, + "assemblies": [ + "BuildFromProject" + ], + "namespace": { + "uid": "BuildFromProject", + "isEii": false, + "isExtensionMethod": false, + "href": "BuildFromProject.html", + "name": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0 + }, + "syntax": { + "content": [ + { + "lang": "csharp", + "value": "public sealed class Inheritdoc.Issue9736.JsonApiOptions : Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Public NotInheritable Class Inheritdoc.Issue9736.JsonApiOptions Implements Inheritdoc.Issue9736.IJsonApiOptions" + } + ] + }, + "inheritance": [ + { + "uid": "System.Object", + "isEii": false, + "isExtensionMethod": false, + "parent": "System", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object", + "name": [ + { + "lang": "csharp", + "value": "object" + }, + { + "lang": "vb", + "value": "Object" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object" + }, + { + "lang": "vb", + "value": "Object" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object" + }, + { + "lang": "vb", + "value": "Object" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0, + "index": 0 + } + ], + "level": 1, + "implements": [ + { + "uid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "name": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ] + } + ], + "inheritedMembers": [ + { + "uid": "System.Object.Equals(System.Object)", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)", + "name": [ + { + "lang": "csharp", + "value": "Equals(object)" + }, + { + "lang": "vb", + "value": "Equals(Object)" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.Equals(object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object)" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.Equals(object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object)" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Equals(object)" + }, + { + "lang": "vb", + "value": "Equals(Object)" + } + ], + "level": 0 + }, + { + "uid": "System.Object.Equals(System.Object,System.Object)", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)", + "name": [ + { + "lang": "csharp", + "value": "Equals(object, object)" + }, + { + "lang": "vb", + "value": "Equals(Object, Object)" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.Equals(object, object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object, Object)" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.Equals(object, object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object, Object)" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Equals(object, object)" + }, + { + "lang": "vb", + "value": "Equals(Object, Object)" + } + ], + "level": 0 + }, + { + "uid": "System.Object.GetHashCode", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode", + "name": [ + { + "lang": "csharp", + "value": "GetHashCode()" + }, + { + "lang": "vb", + "value": "GetHashCode()" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.GetHashCode()" + }, + { + "lang": "vb", + "value": "Object.GetHashCode()" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.GetHashCode()" + }, + { + "lang": "vb", + "value": "Object.GetHashCode()" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "GetHashCode()" + }, + { + "lang": "vb", + "value": "GetHashCode()" + } + ], + "level": 0 + }, + { + "uid": "System.Object.GetType", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.gettype", + "name": [ + { + "lang": "csharp", + "value": "GetType()" + }, + { + "lang": "vb", + "value": "GetType()" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.GetType()" + }, + { + "lang": "vb", + "value": "Object.GetType()" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.GetType()" + }, + { + "lang": "vb", + "value": "Object.GetType()" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "GetType()" + }, + { + "lang": "vb", + "value": "GetType()" + } + ], + "level": 0 + }, + { + "uid": "System.Object.ReferenceEquals(System.Object,System.Object)", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals", + "name": [ + { + "lang": "csharp", + "value": "ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "ReferenceEquals(Object, Object)" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "Object.ReferenceEquals(Object, Object)" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "Object.ReferenceEquals(Object, Object)" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "ReferenceEquals(Object, Object)" + } + ], + "level": 0 + }, + { + "uid": "System.Object.ToString", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.tostring", + "name": [ + { + "lang": "csharp", + "value": "ToString()" + }, + { + "lang": "vb", + "value": "ToString()" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.ToString()" + }, + { + "lang": "vb", + "value": "Object.ToString()" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.ToString()" + }, + { + "lang": "vb", + "value": "Object.ToString()" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "ToString()" + }, + { + "lang": "vb", + "value": "ToString()" + } + ], + "level": 0 + } + ], + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "_key": "obj/api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.yml", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "_rel": "../", + "_tocKey": "~/obj/api/toc.yml", + "_tocPath": "api/toc.html", + "_tocRel": "toc.html", + "yamlmime": "ManagedReference", + "docurl": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions.md&value=---%0Auid%3A%20BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A", + "sourceurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/project/Project/Inheritdoc.cs/#L142", + "summary": "", + "description": "", + "remarks": "", + "conceptual": "", + "example": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions", + "hideTitleType": false, + "hideSubtitle": false, + "isClass": true, + "inClass": true, + "_disableToc": false, + "_disableNextArticle": true +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json new file mode 100644 index 00000000000..6135a144323 --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json @@ -0,0 +1,590 @@ +{ + "uid": "BuildFromProject.Inheritdoc.Issue9736", + "isEii": false, + "isExtensionMethod": false, + "parent": { + "uid": "BuildFromProject", + "isEii": false, + "isExtensionMethod": false, + "href": "BuildFromProject.html", + "name": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0 + }, + "children": [], + "langs": [ + "csharp", + "vb" + ], + "name": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736" + } + ], + "type": "class", + "source": { + "remote": { + "path": "samples/seed/dotnet/project/Project/Inheritdoc.cs", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "id": "Issue9736", + "path": "dotnet/project/Project/Inheritdoc.cs", + "startLine": 112, + "endLine": 0 + }, + "assemblies": [ + "BuildFromProject" + ], + "namespace": { + "uid": "BuildFromProject", + "isEii": false, + "isExtensionMethod": false, + "href": "BuildFromProject.html", + "name": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject" + }, + { + "lang": "vb", + "value": "BuildFromProject" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0 + }, + "syntax": { + "content": [ + { + "lang": "csharp", + "value": "public class Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "Public Class Inheritdoc.Issue9736" + } + ] + }, + "inheritance": [ + { + "uid": "System.Object", + "isEii": false, + "isExtensionMethod": false, + "parent": "System", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object", + "name": [ + { + "lang": "csharp", + "value": "object" + }, + { + "lang": "vb", + "value": "Object" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object" + }, + { + "lang": "vb", + "value": "Object" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object" + }, + { + "lang": "vb", + "value": "Object" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "" + }, + { + "lang": "vb", + "value": "" + } + ], + "level": 0, + "index": 0 + } + ], + "level": 1, + "inheritedMembers": [ + { + "uid": "System.Object.Equals(System.Object)", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)", + "name": [ + { + "lang": "csharp", + "value": "Equals(object)" + }, + { + "lang": "vb", + "value": "Equals(Object)" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.Equals(object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object)" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.Equals(object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object)" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Equals(object)" + }, + { + "lang": "vb", + "value": "Equals(Object)" + } + ], + "level": 0 + }, + { + "uid": "System.Object.Equals(System.Object,System.Object)", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)", + "name": [ + { + "lang": "csharp", + "value": "Equals(object, object)" + }, + { + "lang": "vb", + "value": "Equals(Object, Object)" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.Equals(object, object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object, Object)" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.Equals(object, object)" + }, + { + "lang": "vb", + "value": "Object.Equals(Object, Object)" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Equals(object, object)" + }, + { + "lang": "vb", + "value": "Equals(Object, Object)" + } + ], + "level": 0 + }, + { + "uid": "System.Object.GetHashCode", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode", + "name": [ + { + "lang": "csharp", + "value": "GetHashCode()" + }, + { + "lang": "vb", + "value": "GetHashCode()" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.GetHashCode()" + }, + { + "lang": "vb", + "value": "Object.GetHashCode()" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.GetHashCode()" + }, + { + "lang": "vb", + "value": "Object.GetHashCode()" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "GetHashCode()" + }, + { + "lang": "vb", + "value": "GetHashCode()" + } + ], + "level": 0 + }, + { + "uid": "System.Object.GetType", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.gettype", + "name": [ + { + "lang": "csharp", + "value": "GetType()" + }, + { + "lang": "vb", + "value": "GetType()" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.GetType()" + }, + { + "lang": "vb", + "value": "Object.GetType()" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.GetType()" + }, + { + "lang": "vb", + "value": "Object.GetType()" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "GetType()" + }, + { + "lang": "vb", + "value": "GetType()" + } + ], + "level": 0 + }, + { + "uid": "System.Object.MemberwiseClone", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone", + "name": [ + { + "lang": "csharp", + "value": "MemberwiseClone()" + }, + { + "lang": "vb", + "value": "MemberwiseClone()" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.MemberwiseClone()" + }, + { + "lang": "vb", + "value": "Object.MemberwiseClone()" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.MemberwiseClone()" + }, + { + "lang": "vb", + "value": "Object.MemberwiseClone()" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "MemberwiseClone()" + }, + { + "lang": "vb", + "value": "MemberwiseClone()" + } + ], + "level": 0 + }, + { + "uid": "System.Object.ReferenceEquals(System.Object,System.Object)", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals", + "name": [ + { + "lang": "csharp", + "value": "ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "ReferenceEquals(Object, Object)" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "Object.ReferenceEquals(Object, Object)" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "Object.ReferenceEquals(Object, Object)" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "ReferenceEquals(object, object)" + }, + { + "lang": "vb", + "value": "ReferenceEquals(Object, Object)" + } + ], + "level": 0 + }, + { + "uid": "System.Object.ToString", + "isEii": false, + "isExtensionMethod": false, + "parent": "System.Object", + "isExternal": true, + "href": "https://learn.microsoft.com/dotnet/api/system.object.tostring", + "name": [ + { + "lang": "csharp", + "value": "ToString()" + }, + { + "lang": "vb", + "value": "ToString()" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "object.ToString()" + }, + { + "lang": "vb", + "value": "Object.ToString()" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "object.ToString()" + }, + { + "lang": "vb", + "value": "Object.ToString()" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "ToString()" + }, + { + "lang": "vb", + "value": "ToString()" + } + ], + "level": 0 + } + ], + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "_key": "obj/api/BuildFromProject.Inheritdoc.Issue9736.yml", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "api/BuildFromProject.Inheritdoc.Issue9736.html", + "_rel": "../", + "_tocKey": "~/obj/api/toc.yml", + "_tocPath": "api/toc.html", + "_tocRel": "toc.html", + "yamlmime": "ManagedReference", + "docurl": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=BuildFromProject_Inheritdoc_Issue9736.md&value=---%0Auid%3A%20BuildFromProject.Inheritdoc.Issue9736%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A", + "sourceurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/project/Project/Inheritdoc.cs/#L113", + "summary": "", + "description": "", + "remarks": "", + "conceptual": "", + "implements": "", + "example": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736", + "hideTitleType": false, + "hideSubtitle": false, + "isClass": true, + "inClass": true, + "_disableToc": false, + "_disableNextArticle": true +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.html.view.verified.json index 329625210cb..4817e7b3dc4 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/BuildFromProject.html.view.verified.json @@ -854,6 +854,130 @@ "hideTitleType": false, "hideSubtitle": false }, + { + "uid": "BuildFromProject.Inheritdoc.Issue9736", + "isExtensionMethod": false, + "href": "BuildFromProject.Inheritdoc.html", + "name": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736" + } + ], + "level": 0, + "summary": "", + "type": "class", + "platform": null, + "isEii": false, + "docurl": "", + "sourceurl": "", + "description": "", + "remarks": "", + "conceptual": "", + "syntax": "", + "implements": "", + "example": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736", + "hideTitleType": false, + "hideSubtitle": false + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions", + "isExtensionMethod": false, + "href": "BuildFromProject.Inheritdoc.html", + "name": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.JsonApiOptions" + } + ], + "level": 0, + "summary": "", + "type": "class", + "platform": null, + "isEii": false, + "docurl": "", + "sourceurl": "", + "description": "", + "remarks": "", + "conceptual": "", + "syntax": "", + "implements": "", + "example": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions", + "hideTitleType": false, + "hideSubtitle": false + }, { "uid": "BuildFromProject.Issue8725", "isExtensionMethod": false, @@ -1117,6 +1241,69 @@ "id": "BuildFromProject_IInheritdoc", "hideTitleType": false, "hideSubtitle": false + }, + { + "uid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "isExtensionMethod": false, + "parent": "BuildFromProject", + "href": "BuildFromProject.Inheritdoc.html", + "name": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "nameWithType": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "fullName": [ + { + "lang": "csharp", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "specName": [ + { + "lang": "csharp", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + }, + { + "lang": "vb", + "value": "Inheritdoc.Issue9736.IJsonApiOptions" + } + ], + "level": 0, + "summary": "", + "type": "interface", + "platform": null, + "isEii": false, + "docurl": "", + "sourceurl": "", + "description": "", + "remarks": "", + "conceptual": "", + "syntax": "", + "implements": "", + "example": "", + "seealso": [], + "id": "BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions", + "hideTitleType": false, + "hideSubtitle": false } ] }, diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.ICatExtension.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.ICatExtension.html.view.verified.json index f750baa946d..9c053f9081b 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.ICatExtension.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.ICatExtension.html.view.verified.json @@ -612,7 +612,7 @@ ], "level": 0 }, - "summary": "

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

Also it shouldn't be a geneic class

\n", + "summary": "

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

\n

Also it shouldn't be a geneic class

\n", "example": [], "syntax": { "content": [ @@ -1041,7 +1041,7 @@ "yamlmime": "ManagedReference", "docurl": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=CatLibrary_ICatExtension.md&value=---%0Auid%3A%20CatLibrary.ICatExtension%0Asummary%3A%20'*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax'%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A", "sourceurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/dotnet/solution/CatLibrary/Class1.cs/#L333", - "description": "It's the class that contains ICat interface's extension method. This class must be public and static.Also it shouldn't be a geneic class", + "description": "It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class", "remarks": "", "conceptual": "", "implements": "", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.html.view.verified.json index 2c984888109..94eb058cb00 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/CatLibrary.html.view.verified.json @@ -310,7 +310,7 @@ } ], "level": 0, - "summary": "

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

Also it shouldn't be a geneic class

\n", + "summary": "

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

\n

Also it shouldn't be a geneic class

\n", "type": "class", "platform": null, "isEii": false, diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.html.view.verified.json index 63d9153bd40..5e35a908255 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.html.view.verified.json @@ -305,6 +305,39 @@ "items": [], "leaf": true }, + { + "name": "Inheritdoc.Issue9736", + "href": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736", + "type": "Class", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "type": "Interface", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions", + "type": "Class", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, { "name": "Issue8725", "href": "BuildFromProject.Issue8725.html", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.json.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.json.view.verified.json index 89685ab92af..28e8e4ff916 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.json.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.json.view.verified.json @@ -1,3 +1,3 @@ { - "content": "{\"order\":100,\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"BuildFromAssembly.html\",\"topicHref\":\"BuildFromAssembly.html\",\"topicUid\":\"BuildFromAssembly\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Class1\",\"href\":\"BuildFromAssembly.Class1.html\",\"topicHref\":\"BuildFromAssembly.Class1.html\",\"topicUid\":\"BuildFromAssembly.Class1\",\"type\":\"Class\"},{\"name\":\"Issue5432\",\"href\":\"BuildFromAssembly.Issue5432.html\",\"topicHref\":\"BuildFromAssembly.Issue5432.html\",\"topicUid\":\"BuildFromAssembly.Issue5432\",\"type\":\"Struct\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"BuildFromCSharpSourceCode.html\",\"topicHref\":\"BuildFromCSharpSourceCode.html\",\"topicUid\":\"BuildFromCSharpSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"CSharp\",\"href\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicUid\":\"BuildFromCSharpSourceCode.CSharp\",\"type\":\"Class\"}]},{\"name\":\"BuildFromProject\",\"href\":\"BuildFromProject.html\",\"topicHref\":\"BuildFromProject.html\",\"topicUid\":\"BuildFromProject\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"BuildFromProject.Issue8540.html\",\"topicHref\":\"BuildFromProject.Issue8540.html\",\"topicUid\":\"BuildFromProject.Issue8540\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A.A\",\"type\":\"Class\"}]},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B\",\"type\":\"Namespace\",\"items\":[{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B.B\",\"type\":\"Class\"}]}]},{\"name\":\"Class1\",\"href\":\"BuildFromProject.Class1.html\",\"topicHref\":\"BuildFromProject.Class1.html\",\"topicUid\":\"BuildFromProject.Class1\",\"type\":\"Class\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicUid\":\"BuildFromProject.Class1.IIssue8948\",\"type\":\"Interface\"},{\"name\":\"Class1.Issue8665\",\"href\":\"BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8665.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8665\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8696Attribute\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8948\",\"href\":\"BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8948.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8948\",\"type\":\"Class\"},{\"name\":\"Class1.Issue9260\",\"href\":\"BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"BuildFromProject.Class1.Issue9260.html\",\"topicUid\":\"BuildFromProject.Class1.Issue9260\",\"type\":\"Enum\"},{\"name\":\"Class1.Test\",\"href\":\"BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"BuildFromProject.Class1.Test-1.html\",\"topicUid\":\"BuildFromProject.Class1.Test`1\",\"type\":\"Class\"},{\"name\":\"Dog\",\"href\":\"BuildFromProject.Dog.html\",\"topicHref\":\"BuildFromProject.Dog.html\",\"topicUid\":\"BuildFromProject.Dog\",\"type\":\"Class\"},{\"name\":\"IInheritdoc\",\"href\":\"BuildFromProject.IInheritdoc.html\",\"topicHref\":\"BuildFromProject.IInheritdoc.html\",\"topicUid\":\"BuildFromProject.IInheritdoc\",\"type\":\"Interface\"},{\"name\":\"Inheritdoc\",\"href\":\"BuildFromProject.Inheritdoc.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.html\",\"topicUid\":\"BuildFromProject.Inheritdoc\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class1`1\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class2\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7035\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7484\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8101\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8129\",\"type\":\"Struct\"},{\"name\":\"Issue8725\",\"href\":\"BuildFromProject.Issue8725.html\",\"topicHref\":\"BuildFromProject.Issue8725.html\",\"topicUid\":\"BuildFromProject.Issue8725\",\"type\":\"Class\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"BuildFromVBSourceCode.html\",\"topicHref\":\"BuildFromVBSourceCode.html\",\"topicUid\":\"BuildFromVBSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"BaseClass1\",\"href\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicUid\":\"BuildFromVBSourceCode.BaseClass1\",\"type\":\"Class\"},{\"name\":\"Class1\",\"href\":\"BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"BuildFromVBSourceCode.Class1.html\",\"topicUid\":\"BuildFromVBSourceCode.Class1\",\"type\":\"Class\"}]},{\"name\":\"CatLibrary\",\"href\":\"CatLibrary.html\",\"topicHref\":\"CatLibrary.html\",\"topicUid\":\"CatLibrary\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Core\",\"href\":\"CatLibrary.Core.html\",\"topicHref\":\"CatLibrary.Core.html\",\"topicUid\":\"CatLibrary.Core\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ContainersRefType\",\"href\":\"CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType\",\"type\":\"Struct\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ColorType\",\"type\":\"Enum\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild\",\"type\":\"Class\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface\",\"type\":\"Interface\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate\",\"type\":\"Delegate\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicUid\":\"CatLibrary.Core.ExplicitLayoutClass\",\"type\":\"Class\"},{\"name\":\"Issue231\",\"href\":\"CatLibrary.Core.Issue231.html\",\"topicHref\":\"CatLibrary.Core.Issue231.html\",\"topicUid\":\"CatLibrary.Core.Issue231\",\"type\":\"Class\"}]},{\"name\":\"CatException\",\"href\":\"CatLibrary.CatException-1.html\",\"topicHref\":\"CatLibrary.CatException-1.html\",\"topicUid\":\"CatLibrary.CatException`1\",\"type\":\"Class\"},{\"name\":\"Cat\",\"href\":\"CatLibrary.Cat-2.html\",\"topicHref\":\"CatLibrary.Cat-2.html\",\"topicUid\":\"CatLibrary.Cat`2\",\"type\":\"Class\"},{\"name\":\"Complex\",\"href\":\"CatLibrary.Complex-2.html\",\"topicHref\":\"CatLibrary.Complex-2.html\",\"topicUid\":\"CatLibrary.Complex`2\",\"type\":\"Class\"},{\"name\":\"FakeDelegate\",\"href\":\"CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"CatLibrary.FakeDelegate-1.html\",\"topicUid\":\"CatLibrary.FakeDelegate`1\",\"type\":\"Delegate\"},{\"name\":\"IAnimal\",\"href\":\"CatLibrary.IAnimal.html\",\"topicHref\":\"CatLibrary.IAnimal.html\",\"topicUid\":\"CatLibrary.IAnimal\",\"type\":\"Interface\"},{\"name\":\"ICat\",\"href\":\"CatLibrary.ICat.html\",\"topicHref\":\"CatLibrary.ICat.html\",\"topicUid\":\"CatLibrary.ICat\",\"type\":\"Interface\"},{\"name\":\"ICatExtension\",\"href\":\"CatLibrary.ICatExtension.html\",\"topicHref\":\"CatLibrary.ICatExtension.html\",\"topicUid\":\"CatLibrary.ICatExtension\",\"type\":\"Class\"},{\"name\":\"MRefDelegate\",\"href\":\"CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"CatLibrary.MRefDelegate-3.html\",\"topicUid\":\"CatLibrary.MRefDelegate`3\",\"type\":\"Delegate\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"CatLibrary.MRefNormalDelegate.html\",\"topicUid\":\"CatLibrary.MRefNormalDelegate\",\"type\":\"Delegate\"},{\"name\":\"Tom\",\"href\":\"CatLibrary.Tom.html\",\"topicHref\":\"CatLibrary.Tom.html\",\"topicUid\":\"CatLibrary.Tom\",\"type\":\"Class\"},{\"name\":\"TomFromBaseClass\",\"href\":\"CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"CatLibrary.TomFromBaseClass.html\",\"topicUid\":\"CatLibrary.TomFromBaseClass\",\"type\":\"Class\"}]},{\"name\":\"MRef.Demo.Enumeration\",\"href\":\"MRef.Demo.Enumeration.html\",\"topicHref\":\"MRef.Demo.Enumeration.html\",\"topicUid\":\"MRef.Demo.Enumeration\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ColorType\",\"href\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicUid\":\"MRef.Demo.Enumeration.ColorType\",\"type\":\"Enum\"}]}],\"memberLayout\":\"SamePage\",\"pdf\":true,\"pdfTocPage\":true}" + "content": "{\"order\":100,\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"BuildFromAssembly.html\",\"topicHref\":\"BuildFromAssembly.html\",\"topicUid\":\"BuildFromAssembly\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Class1\",\"href\":\"BuildFromAssembly.Class1.html\",\"topicHref\":\"BuildFromAssembly.Class1.html\",\"topicUid\":\"BuildFromAssembly.Class1\",\"type\":\"Class\"},{\"name\":\"Issue5432\",\"href\":\"BuildFromAssembly.Issue5432.html\",\"topicHref\":\"BuildFromAssembly.Issue5432.html\",\"topicUid\":\"BuildFromAssembly.Issue5432\",\"type\":\"Struct\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"BuildFromCSharpSourceCode.html\",\"topicHref\":\"BuildFromCSharpSourceCode.html\",\"topicUid\":\"BuildFromCSharpSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"CSharp\",\"href\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicUid\":\"BuildFromCSharpSourceCode.CSharp\",\"type\":\"Class\"}]},{\"name\":\"BuildFromProject\",\"href\":\"BuildFromProject.html\",\"topicHref\":\"BuildFromProject.html\",\"topicUid\":\"BuildFromProject\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"BuildFromProject.Issue8540.html\",\"topicHref\":\"BuildFromProject.Issue8540.html\",\"topicUid\":\"BuildFromProject.Issue8540\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A.A\",\"type\":\"Class\"}]},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B\",\"type\":\"Namespace\",\"items\":[{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B.B\",\"type\":\"Class\"}]}]},{\"name\":\"Class1\",\"href\":\"BuildFromProject.Class1.html\",\"topicHref\":\"BuildFromProject.Class1.html\",\"topicUid\":\"BuildFromProject.Class1\",\"type\":\"Class\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicUid\":\"BuildFromProject.Class1.IIssue8948\",\"type\":\"Interface\"},{\"name\":\"Class1.Issue8665\",\"href\":\"BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8665.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8665\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8696Attribute\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8948\",\"href\":\"BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8948.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8948\",\"type\":\"Class\"},{\"name\":\"Class1.Issue9260\",\"href\":\"BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"BuildFromProject.Class1.Issue9260.html\",\"topicUid\":\"BuildFromProject.Class1.Issue9260\",\"type\":\"Enum\"},{\"name\":\"Class1.Test\",\"href\":\"BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"BuildFromProject.Class1.Test-1.html\",\"topicUid\":\"BuildFromProject.Class1.Test`1\",\"type\":\"Class\"},{\"name\":\"Dog\",\"href\":\"BuildFromProject.Dog.html\",\"topicHref\":\"BuildFromProject.Dog.html\",\"topicUid\":\"BuildFromProject.Dog\",\"type\":\"Class\"},{\"name\":\"IInheritdoc\",\"href\":\"BuildFromProject.IInheritdoc.html\",\"topicHref\":\"BuildFromProject.IInheritdoc.html\",\"topicUid\":\"BuildFromProject.IInheritdoc\",\"type\":\"Interface\"},{\"name\":\"Inheritdoc\",\"href\":\"BuildFromProject.Inheritdoc.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.html\",\"topicUid\":\"BuildFromProject.Inheritdoc\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class1`1\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class2\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7035\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7484\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8101\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8129\",\"type\":\"Struct\"},{\"name\":\"Inheritdoc.Issue9736\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue9736\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue9736.IJsonApiOptions\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions\",\"type\":\"Interface\"},{\"name\":\"Inheritdoc.Issue9736.JsonApiOptions\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions\",\"type\":\"Class\"},{\"name\":\"Issue8725\",\"href\":\"BuildFromProject.Issue8725.html\",\"topicHref\":\"BuildFromProject.Issue8725.html\",\"topicUid\":\"BuildFromProject.Issue8725\",\"type\":\"Class\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"BuildFromVBSourceCode.html\",\"topicHref\":\"BuildFromVBSourceCode.html\",\"topicUid\":\"BuildFromVBSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"BaseClass1\",\"href\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicUid\":\"BuildFromVBSourceCode.BaseClass1\",\"type\":\"Class\"},{\"name\":\"Class1\",\"href\":\"BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"BuildFromVBSourceCode.Class1.html\",\"topicUid\":\"BuildFromVBSourceCode.Class1\",\"type\":\"Class\"}]},{\"name\":\"CatLibrary\",\"href\":\"CatLibrary.html\",\"topicHref\":\"CatLibrary.html\",\"topicUid\":\"CatLibrary\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Core\",\"href\":\"CatLibrary.Core.html\",\"topicHref\":\"CatLibrary.Core.html\",\"topicUid\":\"CatLibrary.Core\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ContainersRefType\",\"href\":\"CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType\",\"type\":\"Struct\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ColorType\",\"type\":\"Enum\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild\",\"type\":\"Class\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface\",\"type\":\"Interface\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate\",\"type\":\"Delegate\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicUid\":\"CatLibrary.Core.ExplicitLayoutClass\",\"type\":\"Class\"},{\"name\":\"Issue231\",\"href\":\"CatLibrary.Core.Issue231.html\",\"topicHref\":\"CatLibrary.Core.Issue231.html\",\"topicUid\":\"CatLibrary.Core.Issue231\",\"type\":\"Class\"}]},{\"name\":\"CatException\",\"href\":\"CatLibrary.CatException-1.html\",\"topicHref\":\"CatLibrary.CatException-1.html\",\"topicUid\":\"CatLibrary.CatException`1\",\"type\":\"Class\"},{\"name\":\"Cat\",\"href\":\"CatLibrary.Cat-2.html\",\"topicHref\":\"CatLibrary.Cat-2.html\",\"topicUid\":\"CatLibrary.Cat`2\",\"type\":\"Class\"},{\"name\":\"Complex\",\"href\":\"CatLibrary.Complex-2.html\",\"topicHref\":\"CatLibrary.Complex-2.html\",\"topicUid\":\"CatLibrary.Complex`2\",\"type\":\"Class\"},{\"name\":\"FakeDelegate\",\"href\":\"CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"CatLibrary.FakeDelegate-1.html\",\"topicUid\":\"CatLibrary.FakeDelegate`1\",\"type\":\"Delegate\"},{\"name\":\"IAnimal\",\"href\":\"CatLibrary.IAnimal.html\",\"topicHref\":\"CatLibrary.IAnimal.html\",\"topicUid\":\"CatLibrary.IAnimal\",\"type\":\"Interface\"},{\"name\":\"ICat\",\"href\":\"CatLibrary.ICat.html\",\"topicHref\":\"CatLibrary.ICat.html\",\"topicUid\":\"CatLibrary.ICat\",\"type\":\"Interface\"},{\"name\":\"ICatExtension\",\"href\":\"CatLibrary.ICatExtension.html\",\"topicHref\":\"CatLibrary.ICatExtension.html\",\"topicUid\":\"CatLibrary.ICatExtension\",\"type\":\"Class\"},{\"name\":\"MRefDelegate\",\"href\":\"CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"CatLibrary.MRefDelegate-3.html\",\"topicUid\":\"CatLibrary.MRefDelegate`3\",\"type\":\"Delegate\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"CatLibrary.MRefNormalDelegate.html\",\"topicUid\":\"CatLibrary.MRefNormalDelegate\",\"type\":\"Delegate\"},{\"name\":\"Tom\",\"href\":\"CatLibrary.Tom.html\",\"topicHref\":\"CatLibrary.Tom.html\",\"topicUid\":\"CatLibrary.Tom\",\"type\":\"Class\"},{\"name\":\"TomFromBaseClass\",\"href\":\"CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"CatLibrary.TomFromBaseClass.html\",\"topicUid\":\"CatLibrary.TomFromBaseClass\",\"type\":\"Class\"}]},{\"name\":\"MRef.Demo.Enumeration\",\"href\":\"MRef.Demo.Enumeration.html\",\"topicHref\":\"MRef.Demo.Enumeration.html\",\"topicUid\":\"MRef.Demo.Enumeration\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ColorType\",\"href\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicUid\":\"MRef.Demo.Enumeration.ColorType\",\"type\":\"Enum\"}]}],\"memberLayout\":\"SamePage\",\"pdf\":true,\"pdfTocPage\":true}" } \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.pdf.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.pdf.verified.json index 56a3f4af0e3..7316d18f5ee 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.pdf.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.pdf.verified.json @@ -1,9 +1,9 @@ { - "NumberOfPages": 84, + "NumberOfPages": 88, "Pages": [ { "Number": 1, - "Text": "Table of ContentsBuildFromAssembly3Class14Issue54325BuildFromCSharpSourceCode6CSharp7BuildFromProject8Issue854010A11A12B13B14Class115Class1.IIssue894820Class1.Issue866521Class1.Issue8696Attribute24Class1.Issue894826Class1.Issue926027Class1.Test28Dog29IInheritdoc31Inheritdoc32Inheritdoc.Issue636634Inheritdoc.Issue6366.Class135Inheritdoc.Issue6366.Class237Inheritdoc.Issue703538Inheritdoc.Issue748439Inheritdoc.Issue810141Inheritdoc.Issue812943Issue872544BuildFromVBSourceCode45BaseClass146Class147CatLibrary49Core51ContainersRefType52ContainersRefType.ColorType54ContainersRefType.ContainersRefTypeChild55ContainersRefType.ContainersRefTypeChildInterface56", + "Text": "Table of Contents\nBuildFromAssembly 3\nClass1 4\nIssue5432 5\nBuildFromCSharpSourceCode 6\nCSharp 7\nBuildFromProject 8\nIssue8540 10\nA 11\nA 12\nB 13\nB 14\nClass1 15\nClass1.IIssue8948 20\nClass1.Issue8665 21\nClass1.Issue8696Attribute 24\nClass1.Issue8948 26\nClass1.Issue9260 27\nClass1.Test 28\nDog 29\nIInheritdoc 31\nInheritdoc 32\nInheritdoc.Issue6366 34\nInheritdoc.Issue6366.Class1 35\nInheritdoc.Issue6366.Class2 37\nInheritdoc.Issue7035 38\nInheritdoc.Issue7484 39\nInheritdoc.Issue8101 41\nInheritdoc.Issue8129 43\nInheritdoc.Issue9736 44\nInheritdoc.Issue9736.IJsonApiOptions 45\nInheritdoc.Issue9736.JsonApiOptions 46\nIssue8725 48\nBuildFromVBSourceCode 49\nBaseClass1 50\nClass1 51\nCatLibrary 53\nCore 55\nContainersRefType 56", "Links": [ { "Goto": { @@ -286,7 +286,7 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -304,7 +304,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -313,7 +313,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -322,7 +322,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -351,11 +351,11 @@ }, { "Number": 2, - "Text": "ContainersRefType.ContainersRefTypeDelegate57ExplicitLayoutClass58Issue23159CatException60Cat61Complex70FakeDelegate71IAnimal72ICat75ICatExtension76MRefDelegate78MRefNormalDelegate79Tom80TomFromBaseClass82MRef.Demo.Enumeration83ColorType84", + "Text": "ContainersRefType.ColorType 58\nContainersRefType.ContainersRefTypeChild 59\nContainersRefType.ContainersRefTypeChildInterface 60\nContainersRefType.ContainersRefTypeDelegate 61\nExplicitLayoutClass 62\nIssue231 63\nCatException 64\nCat 65\nComplex 74\nFakeDelegate 75\nIAnimal 76\nICat 79\nICatExtension 80\nMRefDelegate 82\nMRefNormalDelegate 83\nTom 84\nTomFromBaseClass 86\nMRef.Demo.Enumeration 87\nColorType 88", "Links": [ { "Goto": { - "PageNumber": 57, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -364,7 +364,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -373,7 +373,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -382,7 +382,7 @@ }, { "Goto": { - "PageNumber": 60, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -391,7 +391,7 @@ }, { "Goto": { - "PageNumber": 61, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -400,7 +400,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -409,7 +409,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 64, "Type": 2, "Coordinates": { "Top": 0 @@ -418,7 +418,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -427,7 +427,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -436,7 +436,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -445,7 +445,7 @@ }, { "Goto": { - "PageNumber": 78, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -496,12 +496,39 @@ "Top": 0 } } + }, + { + "Goto": { + "PageNumber": 86, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 87, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 88, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } } ] }, { "Number": 3, - "Text": "3 / 84ClassesClass1This is a test class.StructsIssue5432Namespace BuildFromAssembly", + "Text": "3 / 88\nClasses\nClass1\nThis is a test class.\nStructs\nIssue5432\nNamespace BuildFromAssembly", "Links": [ { "Goto": { @@ -525,7 +552,7 @@ }, { "Number": 4, - "Text": "4 / 84Namespace:BuildFromAssemblyAssembly:BuildFromAssembly.dllThis is a test class.Inheritanceobject\uF1C5 Class1Inherited Membersobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ToString()\uF1C5 ,object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5 , object.GetHashCode()\uF1C5ConstructorsMethodsHello World.Class Class1public class Class1\uF12CClass1()public Class1()HelloWorld()public static void HelloWorld()", + "Text": "4 / 88\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nThis is a test class.\nInheritance\nobject\uF1C5 Class1\nInherited Members\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ToString()\uF1C5 ,\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.GetHashCode()\uF1C5\nConstructors\nMethods\nHello World.\nClass Class1\npublic class Class1\n\uF12C\nClass1()\npublic Class1()\nHelloWorld()\npublic static void HelloWorld()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -630,7 +657,7 @@ }, { "Number": 5, - "Text": "5 / 84Namespace:BuildFromAssemblyAssembly:BuildFromAssembly.dllInherited MembersValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,object.GetType()\uF1C5 , object.Equals(object, object)\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5PropertiesProperty Valuestring\uF1C5Struct Issue5432public struct Issue5432Namepublic string Name { get; }", + "Text": "5 / 88\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nInherited Members\nValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,\nobject.GetType()\uF1C5 , object.Equals(object, object)\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nProperties\nProperty Value\nstring\uF1C5\nStruct Issue5432\npublic struct Issue5432\nName\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.valuetype.equals" @@ -726,7 +753,7 @@ }, { "Number": 6, - "Text": "6 / 84ClassesCSharpNamespace BuildFromCSharpSourceCode", + "Text": "6 / 88\nClasses\nCSharp\nNamespace BuildFromCSharpSourceCode", "Links": [ { "Goto": { @@ -741,7 +768,7 @@ }, { "Number": 7, - "Text": "7 / 84Namespace:BuildFromCSharpSourceCodeInheritanceobject\uF1C5 CSharpInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsParametersargs string\uF1C5[]Class CSharppublic class CSharp\uF12CMain(string[])public static void Main(string[] args)", + "Text": "7 / 88\nNamespace: BuildFromCSharpSourceCode\nInheritance\nobject\uF1C5 CSharp\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nParameters\nargs string\uF1C5 []\nClass CSharp\npublic class CSharp\n\uF12C\nMain(string[])\npublic static void Main(string[] args)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -873,7 +900,7 @@ }, { "Number": 8, - "Text": "8 / 84NamespacesBuildFromProject.Issue8540ClassesClass1Class1.Issue8665Class1.Issue8696AttributeClass1.Issue8948Class1.TestDogClass representing a dog.InheritdocInheritdoc.Issue6366Inheritdoc.Issue6366.Class1Inheritdoc.Issue6366.Class2Inheritdoc.Issue7035Inheritdoc.Issue7484This is a test class to have something for DocFX to document.Inheritdoc.Issue8101Issue8725A nice classStructsInheritdoc.Issue8129InterfacesClass1.IIssue8948IInheritdocNamespace BuildFromProject", + "Text": "8 / 88\nNamespaces\nBuildFromProject.Issue8540\nClasses\nClass1\nClass1.Issue8665\nClass1.Issue8696Attribute\nClass1.Issue8948\nClass1.Test\nDog\nClass representing a dog.\nInheritdoc\nInheritdoc.Issue6366\nInheritdoc.Issue6366.Class1\nInheritdoc.Issue6366.Class2\nInheritdoc.Issue7035\nInheritdoc.Issue7484\nThis is a test class to have something for DocFX to document.\nInheritdoc.Issue8101\nInheritdoc.Issue9736\nInheritdoc.Issue9736.JsonApiOptions\nIssue8725\nA nice class\nStructs\nInheritdoc.Issue8129\nNamespace BuildFromProject", "Links": [ { "Goto": { @@ -1129,7 +1156,7 @@ }, { "Goto": { - "PageNumber": 43, + "PageNumber": 44, "Type": 2, "Coordinates": { "Top": 0 @@ -1138,7 +1165,7 @@ }, { "Goto": { - "PageNumber": 43, + "PageNumber": 46, "Type": 2, "Coordinates": { "Top": 0 @@ -1147,7 +1174,7 @@ }, { "Goto": { - "PageNumber": 20, + "PageNumber": 46, "Type": 2, "Coordinates": { "Top": 0 @@ -1156,7 +1183,7 @@ }, { "Goto": { - "PageNumber": 20, + "PageNumber": 46, "Type": 2, "Coordinates": { "Top": 0 @@ -1165,7 +1192,43 @@ }, { "Goto": { - "PageNumber": 31, + "PageNumber": 46, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 46, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 43, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 43, "Type": 2, "Coordinates": { "Top": 0 @@ -1176,8 +1239,80 @@ }, { "Number": 9, - "Text": "9 / 84EnumsClass1.Issue9260", + "Text": "9 / 88\nInterfaces\nClass1.IIssue8948\nIInheritdoc\nInheritdoc.Issue9736.IJsonApiOptions\nEnums\nClass1.Issue9260", "Links": [ + { + "Goto": { + "PageNumber": 20, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 20, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 31, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 45, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 45, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 45, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 45, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 45, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, { "Goto": { "PageNumber": 27, @@ -1200,7 +1335,7 @@ }, { "Number": 10, - "Text": "10 / 84NamespacesBuildFromProject.Issue8540.ABuildFromProject.Issue8540.BNamespace BuildFromProject.Issue8540", + "Text": "10 / 88\nNamespaces\nBuildFromProject.Issue8540.A\nBuildFromProject.Issue8540.B\nNamespace BuildFromProject.Issue8540", "Links": [ { "Goto": { @@ -1296,7 +1431,7 @@ }, { "Number": 11, - "Text": "11 / 84ClassesANamespace BuildFromProject.Issue8540.A", + "Text": "11 / 88\nClasses\nA\nNamespace BuildFromProject.Issue8540.A", "Links": [ { "Goto": { @@ -1311,7 +1446,7 @@ }, { "Number": 12, - "Text": "12 / 84Namespace:BuildFromProject.Issue8540.AAssembly:BuildFromProject.dllInheritanceobject\uF1C5 AInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Apublic class A\uF12C", + "Text": "12 / 88\nNamespace: BuildFromProject.Issue8540.A\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 A\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass A\npublic class A\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1434,7 +1569,7 @@ }, { "Number": 13, - "Text": "13 / 84ClassesBNamespace BuildFromProject.Issue8540.B", + "Text": "13 / 88\nClasses\nB\nNamespace BuildFromProject.Issue8540.B", "Links": [ { "Goto": { @@ -1449,7 +1584,7 @@ }, { "Number": 14, - "Text": "14 / 84Namespace:BuildFromProject.Issue8540.BAssembly:BuildFromProject.dllInheritanceobject\uF1C5 BInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Bpublic class B\uF12C", + "Text": "14 / 88\nNamespace: BuildFromProject.Issue8540.B\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 B\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass B\npublic class B\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1572,7 +1707,7 @@ }, { "Number": 15, - "Text": "15 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1ImplementsIClass1Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsPricing models are used to calculate theoretical option values1-Black Scholes2-Black763-Black76Fut4-Equity Tree5-Variance Swap6-Dividend ForecastIConfiguration related helper and extension routines.Class Class1public class Class1 : IClass1\uF12CIssue1651()public void Issue1651()Issue1887()", + "Text": "15 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1\nImplements\nIClass1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nPricing models are used to calculate theoretical option values\n1 - Black Scholes\n2 - Black76\n3 - Black76Fut\n4 - Equity Tree\n5 - Variance Swap\n6 - Dividend Forecast\nIConfiguration related helper and extension routines.\nClass Class1\npublic class Class1 : IClass1\n\uF12C\nIssue1651()\npublic void Issue1651()\nIssue1887()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1677,12 +1812,12 @@ }, { "Number": 16, - "Text": "16 / 84ExamplesRemarksFor example:Remarkspublic void Issue1887()Issue2623()public void Issue2623()MyClass myClass = new MyClass();void Update(){ myClass.Execute();}MyClass myClass = new MyClass();void Update(){ myClass.Execute();}Issue2723()public void Issue2723()NOTEThis is a . & \" '\uF431", + "Text": "16 / 88\nExamples\nRemarks\nFor example:\nRemarks\npublic void Issue1887()\nIssue2623()\npublic void Issue2623()\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\nIssue2723()\npublic void Issue2723()\nNOTE\nThis is a . & \" '\n\uF431", "Links": [] }, { "Number": 17, - "Text": "17 / 84Inline .link\uF1C5ExamplesRemarksfor (var i = 0; i > 10; i++) // & \" 'var range = new Range { Min = 0, Max = 10 };var range = new Range { Min = 0, Max = 10 };Issue4017()public void Issue4017()public void HookMessageDeleted(BaseSocketClient client){ client.MessageDeleted += HandleMessageDelete;}public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel){ // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask;}void Update(){", + "Text": "17 / 88\nInline .\nlink\uF1C5\nExamples\nRemarks\nfor (var i = 0; i > 10; i++) // & \" '\nvar range = new Range { Min = 0, Max = 10 };\nvar range = new Range { Min = 0, Max = 10 };\nIssue4017()\npublic void Issue4017()\npublic void HookMessageDeleted(BaseSocketClient client)\n{ \nclient.MessageDeleted += HandleMessageDelete;\n}\npublic Task HandleMessageDelete(Cacheable cachedMessage,\nISocketMessageChannel channel)\n{ \n// check if the message exists in cache; if not, we cannot report what\nwas removed\nif (!cachedMessage.HasValue) return;\nvar message = cachedMessage.Value;\nConsole.WriteLine($\"A message ({message.Id}) from {message.Author} was removed\nfrom the channel {channel.Name} ({channel.Id}):\"\n+ Environment.NewLine\n+ message.Content);\nreturn Task.CompletedTask;\n}\nvoid Update()\n{", "Links": [ { "Uri": "https://www.github.com/" @@ -1697,12 +1832,12 @@ }, { "Number": 18, - "Text": "18 / 84Remarks@\"\\\\?\\\" @\"\\\\?\\\"RemarksThere's really no reason to not believe that this class can test things.TermDescriptionA TermA DescriptionBee TermBee DescriptionType ParametersT myClass.Execute();}Issue4392()public void Issue4392()Issue7484()public void Issue7484()Issue8764()public void Issue8764() where T : unmanagedIssue896()", + "Text": "18 / 88\nRemarks\n@\"\\\\?\\\" @\"\\\\?\\\"\nRemarks\nThere's really no reason to not believe that this class can test things.\nTerm Description\nA Term A Description\nBee Term Bee Description\nType Parameters\nT \nmyClass.Execute();\n}\nIssue4392()\npublic void Issue4392()\nIssue7484()\npublic void Issue7484()\nIssue8764()\npublic void Issue8764() where T : unmanaged\nIssue896()", "Links": [] }, { "Number": 19, - "Text": "19 / 84TestSee AlsoClass1.Test, Class1Calculates the determinant of a 3-dimensional matrix:Returns the smallest value:Returnsdouble\uF1C5This method should do something...RemarksThis is remarks.public void Issue896()Issue9216()public static double Issue9216()XmlCommentIncludeTag()public void XmlCommentIncludeTag()", + "Text": "19 / 88\nTest\nSee Also\nClass1.Test, Class1\nCalculates the determinant of a 3-dimensional matrix:\nReturns the smallest value:\nReturns\ndouble\uF1C5\nThis method should do something...\nRemarks\nThis is remarks.\npublic void Issue896()\nIssue9216()\npublic static double Issue9216()\nXmlCommentIncludeTag()\npublic void XmlCommentIncludeTag()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.double" @@ -1744,7 +1879,7 @@ }, { "Number": 20, - "Text": "20 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllMethodsDoes nothing with generic type T.Type ParametersTA generic type.Interface Class1.IIssue8948public interface Class1.IIssue8948DoNothing()void DoNothing()", + "Text": "20 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\nInterface Class1.IIssue8948\npublic interface Class1.IIssue8948\nDoNothing()\nvoid DoNothing()", "Links": [ { "Goto": { @@ -1777,7 +1912,7 @@ }, { "Number": 21, - "Text": "21 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1.Issue8665Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ConstructorsParametersfoo int\uF1C5Class Class1.Issue8665public class Class1.Issue8665\uF12CIssue8665()public Issue8665()Issue8665(int)public Issue8665(int foo)Issue8665(int, char)public Issue8665(int foo, char bar)", + "Text": "21 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1.Issue8665\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nParameters\nfoo int\uF1C5\nClass Class1.Issue8665\npublic class Class1.Issue8665\n\uF12C\nIssue8665()\npublic Issue8665()\nIssue8665(int)\npublic Issue8665(int foo)\nIssue8665(int, char)\npublic Issue8665(int foo, char bar)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1891,7 +2026,7 @@ }, { "Number": 22, - "Text": "22 / 84Parametersfoo int\uF1C5bar char\uF1C5Parametersfoo int\uF1C5bar char\uF1C5baz string\uF1C5PropertiesProperty Valuechar\uF1C5Property Valuestring\uF1C5Issue8665(int, char, string)public Issue8665(int foo, char bar, string baz)Barpublic char Bar { get; }Bazpublic string Baz { get; }", + "Text": "22 / 88\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nbaz string\uF1C5\nProperties\nProperty Value\nchar\uF1C5\nProperty Value\nstring\uF1C5\nIssue8665(int, char, string)\npublic Issue8665(int foo, char bar, string baz)\nBar\npublic char Bar { get; }\nBaz\npublic string Baz { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -1960,7 +2095,7 @@ }, { "Number": 23, - "Text": "23 / 84Property Valueint\uF1C5Foopublic int Foo { get; }", + "Text": "23 / 88\nProperty Value\nint\uF1C5\nFoo\npublic int Foo { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -1975,7 +2110,7 @@ }, { "Number": 24, - "Text": "24 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Attribute\uF1C5 Class1.Issue8696AttributeInherited MembersAttribute.Equals(object)\uF1C5 , Attribute.GetCustomAttribute(Assembly, Type)\uF1C5 ,Attribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(MemberInfo, Type)\uF1C5 ,Attribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(Module, Type)\uF1C5 ,Attribute.GetCustomAttribute(Module, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5 ,Attribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(Assembly)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, bool)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, Type)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, bool)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, Type)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(Module)\uF1C5 , Attribute.GetCustomAttributes(Module, bool)\uF1C5 ,Attribute.GetCustomAttributes(Module, Type)\uF1C5 ,Attribute.GetCustomAttributes(Module, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5 , Attribute.GetHashCode()\uF1C5 ,Attribute.IsDefaultAttribute()\uF1C5 , Attribute.IsDefined(Assembly, Type)\uF1C5 ,Attribute.IsDefined(Assembly, Type, bool)\uF1C5 , Attribute.IsDefined(MemberInfo, Type)\uF1C5 ,Attribute.IsDefined(MemberInfo, Type, bool)\uF1C5 , Attribute.IsDefined(Module, Type)\uF1C5 ,Attribute.IsDefined(Module, Type, bool)\uF1C5 , Attribute.IsDefined(ParameterInfo, Type)\uF1C5 ,Attribute.IsDefined(ParameterInfo, Type, bool)\uF1C5 , Attribute.Match(object)\uF1C5 ,Class Class1.Issue8696Attributepublic class Class1.Issue8696Attribute : Attribute\uF12C\uF12C", + "Text": "24 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Attribute\uF1C5 Class1.Issue8696Attribute\nInherited Members\nAttribute.Equals(object)\uF1C5 , Attribute.GetCustomAttribute(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(Module, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(Module, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module)\uF1C5 , Attribute.GetCustomAttributes(Module, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(Module, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5 , Attribute.GetHashCode()\uF1C5 ,\nAttribute.IsDefaultAttribute()\uF1C5 , Attribute.IsDefined(Assembly, Type)\uF1C5 ,\nAttribute.IsDefined(Assembly, Type, bool)\uF1C5 , Attribute.IsDefined(MemberInfo, Type)\uF1C5 ,\nAttribute.IsDefined(MemberInfo, Type, bool)\uF1C5 , Attribute.IsDefined(Module, Type)\uF1C5 ,\nAttribute.IsDefined(Module, Type, bool)\uF1C5 , Attribute.IsDefined(ParameterInfo, Type)\uF1C5 ,\nAttribute.IsDefined(ParameterInfo, Type, bool)\uF1C5 , Attribute.Match(object)\uF1C5 ,\nClass Class1.Issue8696Attribute\npublic class Class1.Issue8696Attribute : Attribute\n\uF12C \uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2350,7 +2485,7 @@ }, { "Number": 25, - "Text": "25 / 84Attribute.TypeId\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5ConstructorsParametersdescription string\uF1C5boundsMin int\uF1C5boundsMax int\uF1C5validGameModes string\uF1C5[]hasMultipleSelections bool\uF1C5enumType Type\uF1C5Issue8696Attribute(string?, int, int, string[]?, bool,Type?)[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)]public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null)", + "Text": "25 / 88\nAttribute.TypeId\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nConstructors\nParameters\ndescription string\uF1C5\nboundsMin int\uF1C5\nboundsMax int\uF1C5\nvalidGameModes string\uF1C5 []\nhasMultipleSelections bool\uF1C5\nenumType Type\uF1C5\nIssue8696Attribute(string?, int, int, string[]?, bool,\nType?)\n[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null,\nfalse, null)]\npublic Issue8696Attribute(string? description = null, int boundsMin = 0, int\nboundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false,\nType? enumType = null)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.attribute.typeid" @@ -2464,7 +2599,7 @@ }, { "Number": 26, - "Text": "26 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1.Issue8948ImplementsClass1.IIssue8948Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsDoes nothing with generic type T.Type ParametersTA generic type.Class Class1.Issue8948public class Class1.Issue8948 : Class1.IIssue8948\uF12CDoNothing()public void DoNothing()", + "Text": "26 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1.Issue8948\nImplements\nClass1.IIssue8948\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\nClass Class1.Issue8948\npublic class Class1.Issue8948 : Class1.IIssue8948\n\uF12C\nDoNothing()\npublic void DoNothing()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2587,7 +2722,7 @@ }, { "Number": 27, - "Text": "27 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllFieldsValue = 0This is a regular enum value.[Obsolete] OldAndUnusedValue = 1This is old and unused. You shouldn't use it anymore.[Obsolete(\"Use Value\")] OldAndUnusedValue2 = 2This is old and unused. You shouldn't use it anymore.Enum Class1.Issue9260public enum Class1.Issue9260", + "Text": "27 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nFields\nValue = 0\nThis is a regular enum value.\nThis is a remarks section. Very important remarks about Value go here.\n[Obsolete] OldAndUnusedValue = 1\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\n[Obsolete(\"Use Value\")] OldAndUnusedValue2 = 2\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\nEnum Class1.Issue9260\npublic enum Class1.Issue9260", "Links": [ { "Goto": { @@ -2620,7 +2755,7 @@ }, { "Number": 28, - "Text": "28 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 Class1.TestInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Class1.Testpublic class Class1.Test\uF12C", + "Text": "28 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Class1.Test\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Class1.Test\npublic class Class1.Test\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2725,7 +2860,7 @@ }, { "Number": 29, - "Text": "29 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllClass representing a dog.Inheritanceobject\uF1C5 DogInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ConstructorsConstructor.Parametersname string\uF1C5Name of the dog.age int\uF1C5Age of the dog.PropertiesClass Dogpublic class Dog\uF12CDog(string, int)public Dog(string name, int age)", + "Text": "29 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nClass representing a dog.\nInheritance\nobject\uF1C5 Dog\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nConstructor.\nParameters\nname string\uF1C5\nName of the dog.\nage int\uF1C5\nAge of the dog.\nProperties\nClass Dog\npublic class Dog\n\uF12C\nDog(string, int)\npublic Dog(string name, int age)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2848,7 +2983,7 @@ }, { "Number": 30, - "Text": "30 / 84Age of the dog.Property Valueint\uF1C5Name of the dog.Property Valuestring\uF1C5Agepublic int Age { get; }Namepublic string Name { get; }", + "Text": "30 / 88\nAge of the dog.\nProperty Value\nint\uF1C5\nName of the dog.\nProperty Value\nstring\uF1C5\nAge\npublic int Age { get; }\nName\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -2872,7 +3007,7 @@ }, { "Number": 31, - "Text": "31 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllMethodsThis method should do something...Interface IInheritdocpublic interface IInheritdocIssue7629()void Issue7629()", + "Text": "31 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nThis method should do something...\nInterface IInheritdoc\npublic interface IInheritdoc\nIssue7629()\nvoid Issue7629()", "Links": [ { "Goto": { @@ -2905,7 +3040,7 @@ }, { "Number": 32, - "Text": "32 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 InheritdocImplementsIInheritdoc, IDisposable\uF1C5Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsPerforms application-defined tasks associated with freeing, releasing, or resettingunmanaged resources.This method should do something...Class Inheritdocpublic class Inheritdoc : IInheritdoc, IDisposable\uF12CDispose()public void Dispose()Issue7628()public void Issue7628()Issue7629()", + "Text": "32 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc\nImplements\nIInheritdoc, IDisposable\uF1C5\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nPerforms application-defined tasks associated with freeing, releasing, or resetting\nunmanaged resources.\nThis method should do something...\nClass Inheritdoc\npublic class Inheritdoc : IInheritdoc, IDisposable\n\uF12C\nDispose()\npublic void Dispose()\nIssue7628()\npublic void Issue7628()\nIssue7629()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3028,12 +3163,12 @@ }, { "Number": 33, - "Text": "33 / 84This method should do something...public void Issue7629()", + "Text": "33 / 88\nThis method should do something...\npublic void Issue7629()", "Links": [] }, { "Number": 34, - "Text": "34 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue6366Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Inheritdoc.Issue6366public class Inheritdoc.Issue6366\uF12C", + "Text": "34 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Inheritdoc.Issue6366\npublic class Inheritdoc.Issue6366\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3138,7 +3273,7 @@ }, { "Number": 35, - "Text": "35 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 Inheritdoc.Issue6366.Class1DerivedInheritdoc.Issue6366.Class2Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsThis text inherited.Parametersparm1 TThis text NOT inherited.parm2 int\uF1C5This text inherited.Class Inheritdoc.Issue6366.Class1public abstract class Inheritdoc.Issue6366.Class1\uF12CTestMethod1(T, int)public abstract T TestMethod1(T parm1, int parm2)", + "Text": "35 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366.Class1\nDerived\nInheritdoc.Issue6366.Class2\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nThis text inherited.\nParameters\nparm1 T\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nClass Inheritdoc.Issue6366.Class1\npublic abstract class Inheritdoc.Issue6366.Class1\n\uF12C\nTestMethod1(T, int)\npublic abstract T TestMethod1(T parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3279,12 +3414,12 @@ }, { "Number": 36, - "Text": "36 / 84ReturnsTThis text inherited.", + "Text": "36 / 88\nReturns\nT\nThis text inherited.", "Links": [] }, { "Number": 37, - "Text": "37 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsThis text inherited.Parametersparm1 bool\uF1C5This text NOT inherited.parm2 int\uF1C5This text inherited.Returnsbool\uF1C5This text inherited.Class Inheritdoc.Issue6366.Class2public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1\uF12C\uF12CTestMethod1(bool, int)public override bool TestMethod1(bool parm1, int parm2)", + "Text": "37 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nThis text inherited.\nParameters\nparm1 bool\uF1C5\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nReturns\nbool\uF1C5\nThis text inherited.\nClass Inheritdoc.Issue6366.Class2\npublic class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1\n\uF12C \uF12C\nTestMethod1(bool, int)\npublic override bool TestMethod1(bool parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3452,7 +3587,7 @@ }, { "Number": 38, - "Text": "38 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue7035Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsClass Inheritdoc.Issue7035public class Inheritdoc.Issue7035\uF12CA()public void A()B()public void B()", + "Text": "38 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue7035\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nClass Inheritdoc.Issue7035\npublic class Inheritdoc.Issue7035\n\uF12C\nA()\npublic void A()\nB()\npublic void B()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3557,7 +3692,7 @@ }, { "Number": 39, - "Text": "39 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllThis is a test class to have something for DocFX to document.Inheritanceobject\uF1C5 Inheritdoc.Issue7484Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5RemarksWe're going to talk about things now.BoolReturningMethod(bool)Simple method to generate docs for.DoDadA string that could have something.ConstructorsThis is a constructor to document.PropertiesClass Inheritdoc.Issue7484public class Inheritdoc.Issue7484\uF12CIssue7484()public Issue7484()DoDad", + "Text": "39 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nThis is a test class to have something for DocFX to document.\nInheritance\nobject\uF1C5 Inheritdoc.Issue7484\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nRemarks\nWe're going to talk about things now.\nBoolReturningMethod(bool) Simple method to generate docs for.\nDoDad A string that could have something.\nConstructors\nThis is a constructor to document.\nProperties\nClass Inheritdoc.Issue7484\npublic class Inheritdoc.Issue7484\n\uF12C\nIssue7484()\npublic Issue7484()\nDoDad", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3707,7 +3842,7 @@ }, { "Number": 40, - "Text": "40 / 84A string that could have something.Property Valuestring\uF1C5MethodsSimple method to generate docs for.Parameterssource bool\uF1C5A meaningless boolean value, much like most questions in the world.Returnsbool\uF1C5An exactly equivalently meaningless boolean value, much like most answers in the world.RemarksI'd like to take a moment to thank all of those who helped me get to a place where I canwrite documentation like this.public string DoDad { get; }BoolReturningMethod(bool)public bool BoolReturningMethod(bool source)", + "Text": "40 / 88\nA string that could have something.\nProperty Value\nstring\uF1C5\nMethods\nSimple method to generate docs for.\nParameters\nsource bool\uF1C5\nA meaningless boolean value, much like most questions in the world.\nReturns\nbool\uF1C5\nAn exactly equivalently meaningless boolean value, much like most answers in the world.\nRemarks\nI'd like to take a moment to thank all of those who helped me get to a place where I can\nwrite documentation like this.\npublic string DoDad { get; }\nBoolReturningMethod(bool)\npublic bool BoolReturningMethod(bool source)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -3740,7 +3875,7 @@ }, { "Number": 41, - "Text": "41 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue8101Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsCreate a new tween.Parametersfrom int\uF1C5The starting value.to int\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.onChange Action\uF1C5Class Inheritdoc.Issue8101public class Inheritdoc.Issue8101\uF12CTween(int, int, float, Action)public static object Tween(int from, int to, float duration, Action onChange)", + "Text": "41 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue8101\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nCreate a new tween.\nParameters\nfrom int\uF1C5\nThe starting value.\nto int\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nonChange Action\uF1C5 \nClass Inheritdoc.Issue8101\npublic class Inheritdoc.Issue8101\n\uF12C\nTween(int, int, float, Action)\npublic static object Tween(int from, int to, float duration, Action onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3890,7 +4025,7 @@ }, { "Number": 42, - "Text": "42 / 84A callback that will be invoked every time the tween value changes.Returnsobject\uF1C5The newly created tween instance.Create a new tween.Parametersfrom float\uF1C5The starting value.to float\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.onChange Action\uF1C5<float\uF1C5>A callback that will be invoked every time the tween value changes.Returnsobject\uF1C5The newly created tween instance.Tween(float, float, float, Action<float>)public static object Tween(float from, float to, float duration, Action onChange)", + "Text": "42 / 88\nA callback that will be invoked every time the tween value changes.\nReturns\nobject\uF1C5\nThe newly created tween instance.\nCreate a new tween.\nParameters\nfrom float\uF1C5\nThe starting value.\nto float\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nonChange Action\uF1C5 \nA callback that will be invoked every time the tween value changes.\nReturns\nobject\uF1C5\nThe newly created tween instance.\nTween(float, float, float, Action)\npublic static object Tween(float from, float to, float duration,\nAction onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3959,7 +4094,7 @@ }, { "Number": 43, - "Text": "43 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllInherited MembersValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5ConstructorsParametersfoo string\uF1C5Struct Inheritdoc.Issue8129public struct Inheritdoc.Issue8129Issue8129(string)public Issue8129(string foo)", + "Text": "43 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInherited Members\nValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,\nobject.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nConstructors\nParameters\nfoo string\uF1C5\nStruct Inheritdoc.Issue8129\npublic struct Inheritdoc.Issue8129\nIssue8129(string)\npublic Issue8129(string foo)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.valuetype.equals" @@ -4055,7 +4190,7 @@ }, { "Number": 44, - "Text": "44 / 84Namespace:BuildFromProjectAssembly:BuildFromProject.dllA nice classInheritanceobject\uF1C5 Issue8725Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsAnother nice operationA nice operationSee AlsoClass1Class Issue8725public class Issue8725\uF12CMoreOperations()public void MoreOperations()MyOperation()public void MyOperation()", + "Text": "44 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue9736\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Inheritdoc.Issue9736\npublic class Inheritdoc.Issue9736\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4155,25 +4290,25 @@ "Top": 0 } } - }, - { - "Goto": { - "PageNumber": 15, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } } ] }, { "Number": 45, - "Text": "45 / 84ClassesBaseClass1This is the BaseClassClass1This is summary from vb class...Namespace BuildFromVBSourceCode", + "Text": "45 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nProperties\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\nInterface\nInheritdoc.Issue9736.IJsonApiOptions\npublic interface Inheritdoc.Issue9736.IJsonApiOptions\nUseRelativeLinks\nbool UseRelativeLinks { get; }\noptions.UseRelativeLinks = true;\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, { "Goto": { - "PageNumber": 46, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4182,7 +4317,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4191,7 +4326,7 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4202,7 +4337,7 @@ }, { "Number": 46, - "Text": "46 / 84Namespace:BuildFromVBSourceCodeThis is the BaseClassInheritanceobject\uF1C5 BaseClass1DerivedClass1Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5MethodsParameterskeyword Class1ReturnsDateTime\uF1C5Class BaseClass1public abstract class BaseClass1\uF12CWithDeclarationKeyword(Class1)public abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Text": "46 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue9736.JsonApiOptions\nImplements\nInheritdoc.Issue9736.IJsonApiOptions\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nProperties\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\nClass Inheritdoc.Issue9736.JsonApiOptions\npublic sealed class Inheritdoc.Issue9736.JsonApiOptions :\nInheritdoc.Issue9736.IJsonApiOptions\n\uF12C\nUseRelativeLinks\npublic bool UseRelativeLinks { get; set; }\noptions.UseRelativeLinks = true;\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4231,15 +4366,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -4258,15 +4384,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" }, @@ -4286,17 +4403,17 @@ "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { "Goto": { - "PageNumber": 45, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4305,7 +4422,7 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4314,7 +4431,25 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 32, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 44, "Type": 2, "Coordinates": { "Top": 0 @@ -4332,7 +4467,7 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -4341,7 +4476,7 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -4352,7 +4487,12 @@ }, { "Number": 47, - "Text": "47 / 84Namespace:BuildFromVBSourceCodeThis is summary from vb class...Inheritanceobject\uF1C5 BaseClass1 Class1Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5FieldsThis is a Value typeField ValueClass1PropertiesProperty ValueClass Class1public class Class1 : BaseClass1\uF12C\uF12CValueClasspublic Class1 ValueClassKeyword[Obsolete(\"This member is obsolete.\", true)]public Class1 Keyword { get; }", + "Text": "47 / 88\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", + "Links": [] + }, + { + "Number": 48, + "Text": "48 / 88\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nA nice class\nInheritance\nobject\uF1C5 Issue8725\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nAnother nice operation\nA nice operation\nSee Also\nClass1\nClass Issue8725\npublic class Issue8725\n\uF12C\nMoreOperations()\npublic void MoreOperations()\nMyOperation()\npublic void MyOperation()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4381,15 +4521,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -4437,7 +4568,7 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4446,7 +4577,7 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4455,7 +4586,7 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -4464,16 +4595,22 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 15, "Type": 2, "Coordinates": { "Top": 0 } } - }, + } + ] + }, + { + "Number": 49, + "Text": "49 / 88\nClasses\nBaseClass1\nThis is the BaseClass\nClass1\nThis is summary from vb class...\nNamespace BuildFromVBSourceCode", + "Links": [ { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -4482,7 +4619,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -4491,7 +4628,7 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -4501,8 +4638,308 @@ ] }, { - "Number": 48, - "Text": "48 / 84Class1MethodsThis is a FunctionParametersname string\uF1C5Name as the String valueReturnsint\uF1C5Returns AhoooWhat is Sub?Parameterskeyword Class1ReturnsDateTime\uF1C5Value(string)public int Value(string name)WithDeclarationKeyword(Class1)public override DateTime WithDeclarationKeyword(Class1 keyword)", + "Number": 50, + "Text": "50 / 88\nNamespace: BuildFromVBSourceCode\nThis is the BaseClass\nInheritance\nobject\uF1C5 BaseClass1\nDerived\nClass1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nMethods\nParameters\nkeyword Class1\nReturns\nDateTime\uF1C5\nClass BaseClass1\npublic abstract class BaseClass1\n\uF12C\nWithDeclarationKeyword(Class1)\npublic abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 51, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 51, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 51, + "Text": "51 / 88\nNamespace: BuildFromVBSourceCode\nThis is summary from vb class...\nInheritance\nobject\uF1C5 BaseClass1 Class1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nFields\nThis is a Value type\nField Value\nClass1\nProperties\nProperty Value\nClass Class1\npublic class Class1 : BaseClass1\n\uF12C \uF12C\nValueClass\npublic Class1 ValueClass\nKeyword\n[Obsolete(\"This member is obsolete.\", true)]\npublic Class1 Keyword { get; }", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 50, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 50, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 51, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 52, + "Text": "52 / 88\nClass1\nMethods\nThis is a Function\nParameters\nname string\uF1C5\nName as the String value\nReturns\nint\uF1C5\nReturns Ahooo\nWhat is Sub?\nParameters\nkeyword Class1\nReturns\nDateTime\uF1C5\nValue(string)\npublic int Value(string name)\nWithDeclarationKeyword(Class1)\npublic override DateTime WithDeclarationKeyword(Class1 keyword)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -4533,7 +4970,7 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -4542,7 +4979,7 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -4552,12 +4989,12 @@ ] }, { - "Number": 49, - "Text": "49 / 84NamespacesCatLibrary.CoreClassesCatExceptionCatHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classComplexICatExtensionIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classTomTom class is only inherit from Object. Not any member inside itself.TomFromBaseClassTomFromBaseClass inherits from @InterfacesIAnimalThis is basic interface of all animal.ICatCat's interfaceDelegatesFakeDelegateFake delegateNamespace CatLibrary", + "Number": 53, + "Text": "53 / 88\nNamespaces\nCatLibrary.Core\nClasses\nCatException\nCat\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nComplex\nICatExtension\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nTom\nTom class is only inherit from Object. Not any member inside itself.\nTomFromBaseClass\nTomFromBaseClass inherits from @\nInterfaces\nIAnimal\nThis is basic interface of all animal.\nICat\nCat's interface\nDelegates\nFakeDelegate\nFake delegate\nNamespace CatLibrary", "Links": [ { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -4566,7 +5003,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -4575,7 +5012,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -4584,7 +5021,7 @@ }, { "Goto": { - "PageNumber": 60, + "PageNumber": 64, "Type": 2, "Coordinates": { "Top": 0 @@ -4593,7 +5030,7 @@ }, { "Goto": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -4602,7 +5039,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -4611,7 +5048,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -4620,7 +5057,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -4629,7 +5066,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -4638,7 +5075,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -4647,7 +5084,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -4656,7 +5093,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -4665,7 +5102,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -4674,7 +5111,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -4683,7 +5120,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -4692,7 +5129,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -4701,7 +5138,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -4710,7 +5147,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -4720,12 +5157,12 @@ ] }, { - "Number": 50, - "Text": "50 / 84MRefDelegateGeneric delegate with many constrains.MRefNormalDelegateDelegate in the namespace", + "Number": 54, + "Text": "54 / 88\nMRefDelegate\nGeneric delegate with many constrains.\nMRefNormalDelegate\nDelegate in the namespace", "Links": [ { "Goto": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -4734,7 +5171,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -4743,7 +5180,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -4752,7 +5189,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -4762,12 +5199,12 @@ ] }, { - "Number": 51, - "Text": "51 / 84ClassesContainersRefType.ContainersRefTypeChildExplicitLayoutClassIssue231StructsContainersRefTypeStruct ContainersRefTypeInterfacesContainersRefType.ContainersRefTypeChildInterfaceEnumsContainersRefType.ColorTypeEnumeration ColorTypeDelegatesContainersRefType.ContainersRefTypeDelegateDelegate ContainersRefTypeDelegateNamespace CatLibrary.Core", + "Number": 55, + "Text": "55 / 88\nClasses\nContainersRefType.ContainersRefTypeChild\nExplicitLayoutClass\nIssue231\nStructs\nContainersRefType\nStruct ContainersRefType\nInterfaces\nContainersRefType.ContainersRefTypeChildInterface\nEnums\nContainersRefType.ColorType\nEnumeration ColorType\nDelegates\nContainersRefType.ContainersRefTypeDelegate\nDelegate ContainersRefTypeDelegate\nNamespace CatLibrary.Core", "Links": [ { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4776,7 +5213,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4785,7 +5222,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4794,7 +5231,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4803,7 +5240,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4812,7 +5249,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4821,7 +5258,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4830,7 +5267,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4839,7 +5276,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4848,7 +5285,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4857,7 +5294,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -4866,7 +5303,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -4875,7 +5312,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -4884,7 +5321,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -4893,7 +5330,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4902,7 +5339,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4911,7 +5348,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4920,7 +5357,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4929,7 +5366,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4938,7 +5375,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4947,7 +5384,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4956,7 +5393,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4965,7 +5402,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -4974,7 +5411,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -4983,7 +5420,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -4992,7 +5429,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -5001,7 +5438,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -5010,7 +5447,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5019,7 +5456,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5028,7 +5465,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5037,7 +5474,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5046,7 +5483,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5055,7 +5492,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5064,7 +5501,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5074,8 +5511,8 @@ ] }, { - "Number": 52, - "Text": "52 / 84Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllStruct ContainersRefTypeInherited MembersValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5Extension MethodsIssue231.Bar(ContainersRefType) , Issue231.Foo(ContainersRefType)FieldsColorCountField Valuelong\uF1C5PropertiesGetColorCountStruct ContainersRefTypepublic struct ContainersRefTypeColorCountpublic long ColorCountGetColorCountpublic long GetColorCount { get; }", + "Number": 56, + "Text": "56 / 88\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nStruct ContainersRefType\nInherited Members\nValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,\nobject.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nExtension Methods\nIssue231.Bar(ContainersRefType) , Issue231.Foo(ContainersRefType)\nFields\nColorCount\nField Value\nlong\uF1C5\nProperties\nGetColorCount\nStruct ContainersRefType\npublic struct ContainersRefType\nColorCount\npublic long ColorCount\nGetColorCount\npublic long GetColorCount { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.valuetype.equals" @@ -5142,7 +5579,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5151,7 +5588,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5160,7 +5597,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -5169,7 +5606,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5178,7 +5615,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5187,7 +5624,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5196,7 +5633,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5205,7 +5642,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5214,7 +5651,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5223,7 +5660,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5232,7 +5669,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5242,8 +5679,8 @@ ] }, { - "Number": 53, - "Text": "53 / 84Property Valuelong\uF1C5MethodsContainersRefTypeNonRefMethodarrayParametersparmsArray object\uF1C5[]Returnsint\uF1C5EventsEvent TypeEventHandler\uF1C5ContainersRefTypeNonRefMethod(params object[])public static int ContainersRefTypeNonRefMethod(params object[] parmsArray)ContainersRefTypeEventHandlerpublic event EventHandler ContainersRefTypeEventHandler", + "Number": 57, + "Text": "57 / 88\nProperty Value\nlong\uF1C5\nMethods\nContainersRefTypeNonRefMethod\narray\nParameters\nparmsArray object\uF1C5 []\nReturns\nint\uF1C5\nEvents\nEvent Type\nEventHandler\uF1C5\nContainersRefTypeNonRefMethod(params object[])\npublic static int ContainersRefTypeNonRefMethod(params object[] parmsArray)\nContainersRefTypeEventHandler\npublic event EventHandler ContainersRefTypeEventHandler", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -5284,12 +5721,12 @@ ] }, { - "Number": 54, - "Text": "54 / 84Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllEnumeration ColorTypeFieldsRed = 0redBlue = 1blueYellow = 2yellowEnum ContainersRefType.ColorTypepublic enum ContainersRefType.ColorType", + "Number": 58, + "Text": "58 / 88\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nEnumeration ColorType\nFields\nRed = 0\nred\nBlue = 1\nblue\nYellow = 2\nyellow\nEnum ContainersRefType.ColorType\npublic enum ContainersRefType.ColorType", "Links": [ { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5298,7 +5735,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5307,7 +5744,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -5317,8 +5754,8 @@ ] }, { - "Number": 55, - "Text": "55 / 84Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInheritanceobject\uF1C5 ContainersRefType.ContainersRefTypeChildInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ClassContainersRefType.ContainersRefTypeChildpublic class ContainersRefType.ContainersRefTypeChild\uF12C", + "Number": 59, + "Text": "59 / 88\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ContainersRefType.ContainersRefTypeChild\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass\nContainersRefType.ContainersRefTypeChild\npublic class ContainersRefType.ContainersRefTypeChild\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5394,7 +5831,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5403,7 +5840,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5412,7 +5849,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -5422,12 +5859,12 @@ ] }, { - "Number": 56, - "Text": "56 / 84Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInterfaceContainersRefType.ContainersRefTypeChildInterfacepublic interface ContainersRefType.ContainersRefTypeChildInterface", + "Number": 60, + "Text": "60 / 88\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInterface\nContainersRefType.ContainersRefTypeChild\nInterface\npublic interface ContainersRefType.ContainersRefTypeChildInterface", "Links": [ { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5436,7 +5873,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5445,7 +5882,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -5455,12 +5892,12 @@ ] }, { - "Number": 57, - "Text": "57 / 84Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllDelegate ContainersRefTypeDelegateDelegateContainersRefType.ContainersRefTypeDelegatepublic delegate void ContainersRefType.ContainersRefTypeDelegate()", + "Number": 61, + "Text": "61 / 88\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nDelegate ContainersRefTypeDelegate\nDelegate\nContainersRefType.ContainersRefTypeDele\ngate\npublic delegate void ContainersRefType.ContainersRefTypeDelegate()", "Links": [ { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5469,7 +5906,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5478,7 +5915,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -5488,8 +5925,8 @@ ] }, { - "Number": 58, - "Text": "58 / 84Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInheritanceobject\uF1C5 ExplicitLayoutClassInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class ExplicitLayoutClasspublic class ExplicitLayoutClass\uF12C", + "Number": 62, + "Text": "62 / 88\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ExplicitLayoutClass\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass ExplicitLayoutClass\npublic class ExplicitLayoutClass\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5565,7 +6002,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5574,7 +6011,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5583,7 +6020,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -5593,8 +6030,8 @@ ] }, { - "Number": 59, - "Text": "59 / 84Namespace:CatLibrary.CoreAssembly:CatLibrary.dllInheritanceobject\uF1C5 Issue231Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsParametersc ContainersRefTypeParametersc ContainersRefTypeClass Issue231public static class Issue231\uF12CBar(ContainersRefType)public static void Bar(this ContainersRefType c)Foo(ContainersRefType)public static void Foo(this ContainersRefType c)", + "Number": 63, + "Text": "63 / 88\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.dll\nInheritance\nobject\uF1C5 Issue231\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nParameters\nc ContainersRefType\nParameters\nc ContainersRefType\nClass Issue231\npublic static class Issue231\n\uF12C\nBar(ContainersRefType)\npublic static void Bar(this ContainersRefType c)\nFoo(ContainersRefType)\npublic static void Foo(this ContainersRefType c)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5670,7 +6107,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5679,7 +6116,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5688,7 +6125,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -5697,7 +6134,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -5706,7 +6143,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -5715,7 +6152,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -5724,7 +6161,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -5733,7 +6170,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -5742,7 +6179,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -5752,8 +6189,8 @@ ] }, { - "Number": 60, - "Text": "60 / 84Namespace:CatLibraryAssembly:CatLibrary.dllType ParametersTInheritanceobject\uF1C5 Exception\uF1C5 CatExceptionImplementsISerializable\uF1C5Inherited MembersException.GetBaseException()\uF1C5 , Exception.GetType()\uF1C5 , Exception.ToString()\uF1C5 ,Exception.Data\uF1C5 , Exception.HelpLink\uF1C5 , Exception.HResult\uF1C5 , Exception.InnerException\uF1C5 ,Exception.Message\uF1C5 , Exception.Source\uF1C5 , Exception.StackTrace\uF1C5 , Exception.TargetSite\uF1C5 ,Exception.SerializeObjectState\uF1C5 , object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,object.GetHashCode()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5Class CatExceptionpublic class CatException : Exception, ISerializable\uF12C\uF12C", + "Number": 64, + "Text": "64 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Exception\uF1C5 CatException\nImplements\nISerializable\uF1C5\nInherited Members\nException.GetBaseException()\uF1C5 , Exception.GetType()\uF1C5 , Exception.ToString()\uF1C5 ,\nException.Data\uF1C5 , Exception.HelpLink\uF1C5 , Exception.HResult\uF1C5 , Exception.InnerException\uF1C5 ,\nException.Message\uF1C5 , Exception.Source\uF1C5 , Exception.StackTrace\uF1C5 , Exception.TargetSite\uF1C5 ,\nException.SerializeObjectState\uF1C5 , object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nClass CatException\npublic class CatException : Exception, ISerializable\n\uF12C \uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5937,7 +6374,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5946,7 +6383,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5956,8 +6393,8 @@ ] }, { - "Number": 61, - "Text": "61 / 84Namespace:CatLibraryAssembly:CatLibrary.dllHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classThis is a class talking about CAT\uF1C5.NOTE This is a CAT classRefer to IAnimal to see other animals.Type ParametersTThis type should be class and can new instance.KThis type is a struct type, class type can't be used for this parameter.Inheritanceobject\uF1C5 CatImplementsICat, IAnimalInherited MembersClass Cat[Serializable][Obsolete]public class Cat : ICat, IAnimal where T : class, new() where K : struct\uF12C", + "Number": 65, + "Text": "65 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nThis is a class talking about CAT\uF1C5 .\nNOTE This is a CAT class\nRefer to IAnimal to see other animals.\nType Parameters\nT\nThis type should be class and can new instance.\nK\nThis type is a struct type, class type can't be used for this parameter.\nInheritance\nobject\uF1C5 Cat\nImplements\nICat, IAnimal\nInherited Members\nClass Cat\n[Serializable]\n[Obsolete]\npublic class Cat : ICat, IAnimal where T : class, new() where K : struct\n\uF12C", "Links": [ { "Uri": "https://en.wikipedia.org/wiki/Cat" @@ -5979,7 +6416,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5988,7 +6425,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -5997,7 +6434,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -6006,7 +6443,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -6015,7 +6452,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -6024,7 +6461,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -6033,7 +6470,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -6043,8 +6480,8 @@ ] }, { - "Number": 62, - "Text": "62 / 84object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5Extension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)ExamplesHere's example of how to create an instance of this class. As T is limited with class and K islimited with struct.As you see, here we bring in pointer so we need to add unsafe keyword.RemarksTHIS is remarks overridden in MARKDWON fileConstructorsDefault constructor.It's a complex constructor. The parameter will have some attributes.Parametersvar a = new Cat(object, int)();int catNumber = new int();unsafe{ a.GetFeetLength(catNumber);}Cat()public Cat()Cat(string, out int, string, bool)public Cat(string nickName, out int age, string realName, bool isHealthy)", + "Number": 66, + "Text": "66 / 88\nobject.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)\nExamples\nHere's example of how to create an instance of this class. As T is limited with class and K is\nlimited with struct.\nAs you see, here we bring in pointer so we need to add unsafe keyword.\nRemarks\nTHIS is remarks overridden in MARKDWON file\nConstructors\nDefault constructor.\nIt's a complex constructor. The parameter will have some attributes.\nParameters\nvar a = new Cat(object, int)();\nint catNumber = new int();\nunsafe\n{ \na.GetFeetLength(catNumber);\n}\nCat()\npublic Cat()\nCat(string, out int, string, bool)\npublic Cat(string nickName, out int age, string realName, bool isHealthy)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" @@ -6102,7 +6539,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6111,7 +6548,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6120,7 +6557,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6129,7 +6566,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6138,7 +6575,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6147,7 +6584,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6156,7 +6593,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6165,7 +6602,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6174,7 +6611,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6183,7 +6620,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6192,7 +6629,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6201,7 +6638,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6211,8 +6648,8 @@ ] }, { - "Number": 63, - "Text": "63 / 84nickName string\uF1C5it's string type.age int\uF1C5It's an out and ref parameter.realName string\uF1C5It's an out paramter.isHealthy bool\uF1C5It's an in parameter.Constructor with one generic parameter.ParametersownType TThis parameter type defined by class.FieldsField with attribute.Field ValueCat(T)public Cat(T ownType)isHealthy[ContextStatic][NonSerialized][Obsolete]public bool isHealthy", + "Number": 67, + "Text": "67 / 88\nnickName string\uF1C5\nit's string type.\nage int\uF1C5\nIt's an out and ref parameter.\nrealName string\uF1C5\nIt's an out paramter.\nisHealthy bool\uF1C5\nIt's an in parameter.\nConstructor with one generic parameter.\nParameters\nownType T\nThis parameter type defined by class.\nFields\nField with attribute.\nField Value\nCat(T)\npublic Cat(T ownType)\nisHealthy\n[ContextStatic]\n[NonSerialized]\n[Obsolete]\npublic bool isHealthy", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -6253,8 +6690,8 @@ ] }, { - "Number": 64, - "Text": "64 / 84bool\uF1C5PropertiesHint cat's age.Property Valueint\uF1C5This is index property of Cat. You can see that the visibility is different between get and setmethod.Parametersa string\uF1C5Cat's name.Property Valueint\uF1C5Cat's number.EII property.Age[Obsolete]protected int Age { get; set; }this[string]public int this[string a] { protected get; set; }Name", + "Number": 68, + "Text": "68 / 88\nbool\uF1C5\nProperties\nHint cat's age.\nProperty Value\nint\uF1C5\nThis is index property of Cat. You can see that the visibility is different between get and set\nmethod.\nParameters\na string\uF1C5\nCat's name.\nProperty Value\nint\uF1C5\nCat's number.\nEII property.\nAge\n[Obsolete]\nprotected int Age { get; set; }\nthis[string]\npublic int this[string a] { protected get; set; }\nName", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" @@ -6295,8 +6732,8 @@ ] }, { - "Number": 65, - "Text": "65 / 84Property Valuestring\uF1C5MethodsIt's an overridden summary in markdown formatThis is overriding methods. You can override parameter descriptions for methods, you caneven add exceptions to methods. Check the intermediate obj folder to see the data modelof the generated method/class. Override Yaml header should follow the data structure.Parametersdate DateTime\uF1C5This is overridden description for a parameter. id must be specified.ReturnsDictionary\uF1C5>It's overridden description for return. type must be specified.ExceptionsArgumentException\uF1C5This is an overridden argument exception. you can add additional exception by addingdifferent exception type.public string Name { get; }Override CalculateFood Namepublic Dictionary> CalculateFood(DateTime date)Equals(object)", + "Number": 69, + "Text": "69 / 88\nProperty Value\nstring\uF1C5\nMethods\nIt's an overridden summary in markdown format\nThis is overriding methods. You can override parameter descriptions for methods, you can\neven add exceptions to methods. Check the intermediate obj folder to see the data model\nof the generated method/class. Override Yaml header should follow the data structure.\nParameters\ndate DateTime\uF1C5\nThis is overridden description for a parameter. id must be specified.\nReturns\nDictionary\uF1C5 >\nIt's overridden description for return. type must be specified.\nExceptions\nArgumentException\uF1C5\nThis is an overridden argument exception. you can add additional exception by adding\ndifferent exception type.\npublic string Name { get; }\nOverride CalculateFood Name\npublic Dictionary> CalculateFood(DateTime date)\nEquals(object)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -6364,8 +6801,8 @@ ] }, { - "Number": 66, - "Text": "66 / 84Override the method of Object.Equals(object obj).Parametersobj object\uF1C5Can pass any class type.Returnsbool\uF1C5The return value tell you whehter the compare operation is successful.It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.ParameterscatName int\uF1C5*Thie represent for cat name length.parameters object\uF1C5[]Optional parameters.Returnslong\uF1C5Return cat tail's length.public override bool Equals(object obj)GetTailLength(int*, params object[])public long GetTailLength(int* catName, params object[] parameters)Jump(T, K, ref bool)", + "Number": 70, + "Text": "70 / 88\nOverride the method of Object.Equals(object obj).\nParameters\nobj object\uF1C5\nCan pass any class type.\nReturns\nbool\uF1C5\nThe return value tell you whehter the compare operation is successful.\nIt's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.\nParameters\ncatName int\uF1C5 *\nThie represent for cat name length.\nparameters object\uF1C5 []\nOptional parameters.\nReturns\nlong\uF1C5\nReturn cat tail's length.\npublic override bool Equals(object obj)\nGetTailLength(int*, params object[])\npublic long GetTailLength(int* catName, params object[] parameters)\nJump(T, K, ref bool)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -6415,8 +6852,8 @@ ] }, { - "Number": 67, - "Text": "67 / 84This method have attribute above it.ParametersownType TType come from class define.anotherOwnType KType come from class define.cheat bool\uF1C5Hint whether this cat has cheat mode.ExceptionsArgumentException\uF1C5This is an argument exceptionEventsEat event of this catEvent TypeEventHandler\uF1C5Operators[Conditional(\"Debug\")]public void Jump(T ownType, K anotherOwnType, ref bool cheat)ownEat[Obsolete(\"This _event handler_ is deprecated.\")]public event EventHandler ownEat", + "Number": 71, + "Text": "71 / 88\nThis method have attribute above it.\nParameters\nownType T\nType come from class define.\nanotherOwnType K\nType come from class define.\ncheat bool\uF1C5\nHint whether this cat has cheat mode.\nExceptions\nArgumentException\uF1C5\nThis is an argument exception\nEvents\nEat event of this cat\nEvent Type\nEventHandler\uF1C5\nOperators\n[Conditional(\"Debug\")]\npublic void Jump(T ownType, K anotherOwnType, ref bool cheat)\nownEat\n[Obsolete(\"This _event handler_ is deprecated.\")]\npublic event EventHandler ownEat", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" @@ -6448,8 +6885,8 @@ ] }, { - "Number": 68, - "Text": "68 / 84Addition operator of this class.Parameterslsr Cat..rsr int\uF1C5~~Returnsint\uF1C5Result with int type.Expilicit operator of this class.It means this cat can evolve to change to Tom. Tom and Jerry.Parameterssrc CatInstance of this class.ReturnsTomAdvanced class type of cat.operator +(Cat, int)public static int operator +(Cat lsr, int rsr)explicit operator Tom(Cat)public static explicit operator Tom(Cat src)", + "Number": 72, + "Text": "72 / 88\nAddition operator of this class.\nParameters\nlsr Cat\n..\nrsr int\uF1C5\n~~\nReturns\nint\uF1C5\nResult with int type.\nExpilicit operator of this class.\nIt means this cat can evolve to change to Tom. Tom and Jerry.\nParameters\nsrc Cat\nInstance of this class.\nReturns\nTom\nAdvanced class type of cat.\noperator +(Cat, int)\npublic static int operator +(Cat lsr, int rsr)\nexplicit operator Tom(Cat)\npublic static explicit operator Tom(Cat src)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -6471,7 +6908,7 @@ }, { "Goto": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -6480,7 +6917,7 @@ }, { "Goto": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -6489,7 +6926,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -6499,8 +6936,8 @@ ] }, { - "Number": 69, - "Text": "69 / 84Similar with operaotr +, refer to that topic.Parameterslsr Catrsr int\uF1C5Returnsint\uF1C5operator -(Cat, int)public static int operator -(Cat lsr, int rsr)", + "Number": 73, + "Text": "73 / 88\nSimilar with operaotr +, refer to that topic.\nParameters\nlsr Cat\nrsr int\uF1C5\nReturns\nint\uF1C5\noperator -(Cat, int)\npublic static int operator -(Cat lsr, int rsr)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -6522,7 +6959,7 @@ }, { "Goto": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -6532,8 +6969,8 @@ ] }, { - "Number": 70, - "Text": "70 / 84Namespace:CatLibraryAssembly:CatLibrary.dllType ParametersTJInheritanceobject\uF1C5 ComplexInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Complexpublic class Complex\uF12C", + "Number": 74, + "Text": "74 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nJ\nInheritance\nobject\uF1C5 Complex\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Complex\npublic class Complex\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -6609,7 +7046,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6618,7 +7055,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6628,8 +7065,8 @@ ] }, { - "Number": 71, - "Text": "71 / 84Namespace:CatLibraryAssembly:CatLibrary.dllFake delegateParametersnum long\uF1C5Fake paraname string\uF1C5Fake parascores object\uF1C5[]Optional Parameter.Returnsint\uF1C5Return a fake number to confuse you.Type ParametersTFake paraDelegate FakeDelegatepublic delegate int FakeDelegate(long num, string name, params object[] scores)", + "Number": 75, + "Text": "75 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nFake delegate\nParameters\nnum long\uF1C5\nFake para\nname string\uF1C5\nFake para\nscores object\uF1C5 []\nOptional Parameter.\nReturns\nint\uF1C5\nReturn a fake number to confuse you.\nType Parameters\nT\nFake para\nDelegate FakeDelegate\npublic delegate int FakeDelegate(long num, string name, params object[] scores)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -6669,7 +7106,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6678,7 +7115,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6688,8 +7125,8 @@ ] }, { - "Number": 72, - "Text": "72 / 84Namespace:CatLibraryAssembly:CatLibrary.dllThis is basic interface of all animal.Welcome to the Animal world!RemarksTHIS is remarks overridden in MARKDWON filePropertiesReturn specific number animal's name.Parametersindex int\uF1C5Animal number.Property Valuestring\uF1C5Animal name.Name of Animal.Interface IAnimalpublic interface IAnimalthis[int]string this[int index] { get; }Name", + "Number": 76, + "Text": "76 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nThis is basic interface of all animal.\nWelcome to the Animal world!\nRemarks\nTHIS is remarks overridden in MARKDWON file\nProperties\nReturn specific number animal's name.\nParameters\nindex int\uF1C5\nAnimal number.\nProperty Value\nstring\uF1C5\nAnimal name.\nName of Animal.\nInterface IAnimal\npublic interface IAnimal\nthis[int]\nstring this[int index] { get; }\nName", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -6711,7 +7148,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6720,7 +7157,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6730,8 +7167,8 @@ ] }, { - "Number": 73, - "Text": "73 / 84Property Valuestring\uF1C5MethodsAnimal's eat method.Feed the animal with some foodParametersfood string\uF1C5Food to eatOverload method of eat. This define the animal eat by which tool.Parameterstool Toolstring Name { get; }Eat()void Eat()Eat(string)void Eat(string food)Eat(Tool)void Eat(Tool tool) where Tool : class", + "Number": 77, + "Text": "77 / 88\nProperty Value\nstring\uF1C5\nMethods\nAnimal's eat method.\nFeed the animal with some food\nParameters\nfood string\uF1C5\nFood to eat\nOverload method of eat. This define the animal eat by which tool.\nParameters\ntool Tool\nstring Name { get; }\nEat()\nvoid Eat()\nEat(string)\nvoid Eat(string food)\nEat(Tool)\nvoid Eat(Tool tool) where Tool : class", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -6754,13 +7191,13 @@ ] }, { - "Number": 74, - "Text": "74 / 84Tool name.Type ParametersToolIt's a class type.", + "Number": 78, + "Text": "78 / 88\nTool name.\nType Parameters\nTool\nIt's a class type.", "Links": [] }, { - "Number": 75, - "Text": "75 / 84Namespace:CatLibraryAssembly:CatLibrary.dllCat's interfaceInherited MembersIAnimal.Name , IAnimal.this[int] , IAnimal.Eat() , IAnimal.Eat(Tool) ,IAnimal.Eat(string)Extension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)Eventseat event of cat. Every cat must implement this event.Event TypeEventHandler\uF1C5Interface ICatpublic interface ICat : IAnimaleatevent EventHandler eat", + "Number": 79, + "Text": "79 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nCat's interface\nInherited Members\nIAnimal.Name , IAnimal.this[int] , IAnimal.Eat() , IAnimal.Eat(Tool) ,\nIAnimal.Eat(string)\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)\nEvents\neat event of cat. Every cat must implement this event.\nEvent Type\nEventHandler\uF1C5\nInterface ICat\npublic interface ICat : IAnimal\neat\nevent EventHandler eat", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.eventhandler" @@ -6773,7 +7210,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6782,7 +7219,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6791,7 +7228,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Coordinates": { "Left": 0, "Top": 118.5 @@ -6800,7 +7237,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Coordinates": { "Left": 0, "Top": 118.5 @@ -6809,7 +7246,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Coordinates": { "Left": 0, "Top": 453.75 @@ -6818,7 +7255,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Coordinates": { "Left": 0, "Top": 453.75 @@ -6827,7 +7264,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Coordinates": { "Left": 0, "Top": 612.75 @@ -6836,7 +7273,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Coordinates": { "Left": 0, "Top": 612.75 @@ -6845,7 +7282,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Coordinates": { "Left": 0, "Top": 242.25 @@ -6854,7 +7291,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Coordinates": { "Left": 0, "Top": 477.75 @@ -6863,7 +7300,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Coordinates": { "Left": 0, "Top": 477.75 @@ -6872,7 +7309,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6881,7 +7318,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6890,7 +7327,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6899,7 +7336,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6908,7 +7345,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6917,7 +7354,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6926,7 +7363,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6935,7 +7372,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6944,7 +7381,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6953,7 +7390,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6962,7 +7399,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6971,7 +7408,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 792 @@ -6981,8 +7418,8 @@ ] }, { - "Number": 76, - "Text": "76 / 84Namespace:CatLibraryAssembly:CatLibrary.dllIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classInheritanceobject\uF1C5 ICatExtensionInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsExtension method to let cat playParametersicat ICatCattoy ContainersRefType.ColorTypeSomething to playClass ICatExtensionpublic static class ICatExtension\uF12CPlay(ICat, ColorType)public static void Play(this ICat icat, ContainersRefType.ColorType toy)", + "Number": 80, + "Text": "80 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nInheritance\nobject\uF1C5 ICatExtension\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nExtension method to let cat play\nParameters\nicat ICat\nCat\ntoy ContainersRefType.ColorType\nSomething to play\nClass ICatExtension\npublic static class ICatExtension\n\uF12C\nPlay(ICat, ColorType)\npublic static void Play(this ICat icat, ContainersRefType.ColorType toy)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -7058,7 +7495,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7067,7 +7504,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7076,7 +7513,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -7085,7 +7522,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -7094,7 +7531,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -7103,7 +7540,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -7112,7 +7549,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -7121,7 +7558,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -7131,8 +7568,8 @@ ] }, { - "Number": 77, - "Text": "77 / 84Extension method hint that how long the cat can sleep.Parametersicat ICatThe type will be extended.hours long\uF1C5The length of sleep.Sleep(ICat, long)public static void Sleep(this ICat icat, long hours)", + "Number": 81, + "Text": "81 / 88\nExtension method hint that how long the cat can sleep.\nParameters\nicat ICat\nThe type will be extended.\nhours long\uF1C5\nThe length of sleep.\nSleep(ICat, long)\npublic static void Sleep(this ICat icat, long hours)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -7145,7 +7582,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -7155,12 +7592,12 @@ ] }, { - "Number": 78, - "Text": "78 / 84Namespace:CatLibraryAssembly:CatLibrary.dllGeneric delegate with many constrains.Parametersk KType K.t TType T.l LType L.Type ParametersKGeneric K.TGeneric T.LGeneric L.Delegate MRefDelegatepublic delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable", + "Number": 82, + "Text": "82 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nGeneric delegate with many constrains.\nParameters\nk K\nType K.\nt T\nType T.\nl L\nType L.\nType Parameters\nK\nGeneric K.\nT\nGeneric T.\nL\nGeneric L.\nDelegate MRefDelegate\npublic delegate void MRefDelegate(K k, T t, L l) where K : class,\nIComparable where T : struct where L : Tom, IEnumerable", "Links": [ { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7169,7 +7606,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7179,8 +7616,8 @@ ] }, { - "Number": 79, - "Text": "79 / 84Namespace:CatLibraryAssembly:CatLibrary.dllDelegate in the namespaceParameterspics List\uF1C5a name list of pictures.name string\uF1C5give out the needed name.Delegate MRefNormalDelegatepublic delegate void MRefNormalDelegate(List pics, out string name)", + "Number": 83, + "Text": "83 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nDelegate in the namespace\nParameters\npics List\uF1C5 \na name list of pictures.\nname string\uF1C5\ngive out the needed name.\nDelegate MRefNormalDelegate\npublic delegate void MRefNormalDelegate(List pics, out string name)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1" @@ -7211,7 +7648,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7220,7 +7657,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7230,8 +7667,8 @@ ] }, { - "Number": 80, - "Text": "80 / 84Namespace:CatLibraryAssembly:CatLibrary.dllTom class is only inherit from Object. Not any member inside itself.Inheritanceobject\uF1C5 TomDerivedTomFromBaseClassInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsThis is a Tom Method with complex type as returnParametersa ComplexA complex inputb Tuple\uF1C5Another complex inputClass Tompublic class Tom\uF12CTomMethod(Complex, Tuple)public Complex TomMethod(Complex a, Tuple b)", + "Number": 84, + "Text": "84 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTom class is only inherit from Object. Not any member inside itself.\nInheritance\nobject\uF1C5 Tom\nDerived\nTomFromBaseClass\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nThis is a Tom Method with complex type as return\nParameters\na Complex\nA complex input\nb Tuple\uF1C5 \nAnother complex input\nClass Tom\npublic class Tom\n\uF12C\nTomMethod(Complex, Tuple)\npublic Complex TomMethod(Complex a, Tuple b)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -7325,7 +7762,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7334,7 +7771,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7343,7 +7780,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7352,7 +7789,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7361,7 +7798,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7370,7 +7807,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7379,7 +7816,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -7388,7 +7825,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7397,7 +7834,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7406,7 +7843,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7415,7 +7852,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7424,7 +7861,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7433,7 +7870,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7442,7 +7879,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7451,7 +7888,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7460,7 +7897,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -7470,8 +7907,8 @@ ] }, { - "Number": 81, - "Text": "81 / 84ReturnsComplexComplex TomFromBaseClassExceptionsNotImplementedException\uF1C5This is not implementedArgumentException\uF1C5This is the exception to be thrown when implementedCatExceptionThis is the exception in current documentation", + "Number": 85, + "Text": "85 / 88\nReturns\nComplex\nComplex TomFromBaseClass\nExceptions\nNotImplementedException\uF1C5\nThis is not implemented\nArgumentException\uF1C5\nThis is the exception to be thrown when implemented\nCatException\nThis is the exception in current documentation", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -7502,7 +7939,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -7511,7 +7948,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7520,7 +7957,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7529,7 +7966,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7538,7 +7975,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7547,7 +7984,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7556,7 +7993,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7565,7 +8002,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7574,7 +8011,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -7583,7 +8020,7 @@ }, { "Goto": { - "PageNumber": 60, + "PageNumber": 64, "Type": 2, "Coordinates": { "Top": 0 @@ -7592,7 +8029,7 @@ }, { "Goto": { - "PageNumber": 60, + "PageNumber": 64, "Type": 2, "Coordinates": { "Top": 0 @@ -7602,8 +8039,8 @@ ] }, { - "Number": 82, - "Text": "82 / 84Namespace:CatLibraryAssembly:CatLibrary.dllTomFromBaseClass inherits from @Inheritanceobject\uF1C5 Tom TomFromBaseClassInherited MembersTom.TomMethod(Complex, Tuple) ,object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ConstructorsThis is a #ctor with parameterParametersk int\uF1C5Class TomFromBaseClasspublic class TomFromBaseClass : Tom\uF12C\uF12CTomFromBaseClass(int)public TomFromBaseClass(int k)", + "Number": 86, + "Text": "86 / 88\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTomFromBaseClass inherits from @\nInheritance\nobject\uF1C5 Tom TomFromBaseClass\nInherited Members\nTom.TomMethod(Complex, Tuple) ,\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nThis is a #ctor with parameter\nParameters\nk int\uF1C5\nClass TomFromBaseClass\npublic class TomFromBaseClass : Tom\n\uF12C \uF12C\nTomFromBaseClass(int)\npublic TomFromBaseClass(int k)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -7688,7 +8125,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7697,7 +8134,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -7706,7 +8143,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -7715,7 +8152,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Coordinates": { "Left": 0, "Top": 360.75 @@ -7725,12 +8162,12 @@ ] }, { - "Number": 83, - "Text": "83 / 84EnumsColorTypeEnumeration ColorTypeNamespace MRef.Demo.Enumeration", + "Number": 87, + "Text": "87 / 88\nEnums\nColorType\nEnumeration ColorType\nNamespace MRef.Demo.Enumeration", "Links": [ { "Goto": { - "PageNumber": 84, + "PageNumber": 88, "Type": 2, "Coordinates": { "Top": 0 @@ -7739,7 +8176,7 @@ }, { "Goto": { - "PageNumber": 84, + "PageNumber": 88, "Type": 2, "Coordinates": { "Top": 0 @@ -7749,8 +8186,8 @@ ] }, { - "Number": 84, - "Text": "84 / 84Namespace:MRef.Demo.EnumerationAssembly:CatLibrary.dllEnumeration ColorTypeFieldsRed = 0this color is redBlue = 1blue like riverYellow = 2yellow comes from desertRemarksRed/Blue/Yellow can become all color you want.See Alsoobject\uF1C5Enum ColorTypepublic enum ColorType", + "Number": 88, + "Text": "88 / 88\nNamespace: MRef.Demo.Enumeration\nAssembly: CatLibrary.dll\nEnumeration ColorType\nFields\nRed = 0\nthis color is red\nBlue = 1\nblue like river\nYellow = 2\nyellow comes from desert\nRemarks\nRed/Blue/Yellow can become all color you want.\nSee Also\nobject\uF1C5\nEnum ColorType\npublic enum ColorType", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -7769,7 +8206,7 @@ }, { "Goto": { - "PageNumber": 83, + "PageNumber": 87, "Type": 2, "Coordinates": { "Top": 0 @@ -8086,7 +8523,7 @@ } }, { - "Title": "Issue8725", + "Title": "Inheritdoc.Issue9736", "Children": [], "Destination": { "PageNumber": 44, @@ -8095,6 +8532,39 @@ "Top": 0 } } + }, + { + "Title": "Inheritdoc.Issue9736.IJsonApiOptions", + "Children": [], + "Destination": { + "PageNumber": 45, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Inheritdoc.Issue9736.JsonApiOptions", + "Children": [], + "Destination": { + "PageNumber": 46, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Issue8725", + "Children": [], + "Destination": { + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } } ], "Destination": { @@ -8112,7 +8582,7 @@ "Title": "BaseClass1", "Children": [], "Destination": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -8123,7 +8593,7 @@ "Title": "Class1", "Children": [], "Destination": { - "PageNumber": 47, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -8132,7 +8602,7 @@ } ], "Destination": { - "PageNumber": 45, + "PageNumber": 49, "Type": 2, "Coordinates": { "Top": 0 @@ -8149,7 +8619,7 @@ "Title": "ContainersRefType", "Children": [], "Destination": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -8160,7 +8630,7 @@ "Title": "ContainersRefType.ColorType", "Children": [], "Destination": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -8171,7 +8641,7 @@ "Title": "ContainersRefType.ContainersRefTypeChild", "Children": [], "Destination": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -8182,7 +8652,7 @@ "Title": "ContainersRefType.ContainersRefTypeChildInterface", "Children": [], "Destination": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -8193,7 +8663,7 @@ "Title": "ContainersRefType.ContainersRefTypeDelegate", "Children": [], "Destination": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -8204,7 +8674,7 @@ "Title": "ExplicitLayoutClass", "Children": [], "Destination": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -8215,7 +8685,7 @@ "Title": "Issue231", "Children": [], "Destination": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -8224,7 +8694,7 @@ } ], "Destination": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -8235,7 +8705,7 @@ "Title": "CatException", "Children": [], "Destination": { - "PageNumber": 60, + "PageNumber": 64, "Type": 2, "Coordinates": { "Top": 0 @@ -8246,7 +8716,7 @@ "Title": "Cat", "Children": [], "Destination": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -8257,7 +8727,7 @@ "Title": "Complex", "Children": [], "Destination": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -8268,7 +8738,7 @@ "Title": "FakeDelegate", "Children": [], "Destination": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -8279,7 +8749,7 @@ "Title": "IAnimal", "Children": [], "Destination": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -8290,7 +8760,7 @@ "Title": "ICat", "Children": [], "Destination": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -8301,7 +8771,7 @@ "Title": "ICatExtension", "Children": [], "Destination": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -8312,7 +8782,7 @@ "Title": "MRefDelegate", "Children": [], "Destination": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -8323,7 +8793,7 @@ "Title": "MRefNormalDelegate", "Children": [], "Destination": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -8334,7 +8804,7 @@ "Title": "Tom", "Children": [], "Destination": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -8345,7 +8815,7 @@ "Title": "TomFromBaseClass", "Children": [], "Destination": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -8354,7 +8824,7 @@ } ], "Destination": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -8368,7 +8838,7 @@ "Title": "ColorType", "Children": [], "Destination": { - "PageNumber": 84, + "PageNumber": 88, "Type": 2, "Coordinates": { "Top": 0 @@ -8377,7 +8847,7 @@ } ], "Destination": { - "PageNumber": 83, + "PageNumber": 87, "Type": 2, "Coordinates": { "Top": 0 diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.verified.json index 7712e245639..aca0c1bd910 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/api/toc.verified.json @@ -207,6 +207,27 @@ "topicUid": "BuildFromProject.Inheritdoc.Issue8129", "type": "Struct" }, + { + "name": "Inheritdoc.Issue9736", + "href": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736", + "type": "Class" + }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "type": "Interface" + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions", + "type": "Class" + }, { "name": "Issue8725", "href": "BuildFromProject.Issue8725.html", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json new file mode 100644 index 00000000000..c42d83eadce --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json @@ -0,0 +1,20 @@ +{ + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "title": "Interface Inheritdoc.Issue9736.IJsonApiOptions", + "content": "

Interface Inheritdoc.Issue9736.IJsonApiOptions

\r\n
\r\n
Namespace
BuildFromProject
Assembly
BuildFromProject.dll
\r\n
public interface Inheritdoc.Issue9736.IJsonApiOptions

Properties

\r\n

Whether to use relative links for all resources. false by default.

\n
bool UseRelativeLinks { get; }

Property Value

bool
\r\n
\r\n\r\n\r\n\r\n

Examples

options.UseRelativeLinks = true;
\n
{\n  \"type\": \"articles\",\n  \"id\": \"4309\",\n  \"relationships\": {\n     \"author\": {\n       \"links\": {\n         \"self\": \"/api/shopping/articles/4309/relationships/author\",\n         \"related\": \"/api/shopping/articles/4309/author\"\n       }\n     }\n  }\n}
\n", + "yamlmime": "ApiPage", + "_disableNextArticle": true, + "_key": "obj/apipage/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.yml", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "apipage/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "_rel": "../", + "_tocKey": "~/obj/apipage/toc.yml", + "_tocPath": "apipage/toc.html", + "_tocRel": "toc.html" +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json new file mode 100644 index 00000000000..a27af6becd0 --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json @@ -0,0 +1,20 @@ +{ + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "title": "Class Inheritdoc.Issue9736.JsonApiOptions", + "content": "

Class Inheritdoc.Issue9736.JsonApiOptions

\r\n
\r\n
Namespace
BuildFromProject
Assembly
BuildFromProject.dll
\r\n
public sealed class Inheritdoc.Issue9736.JsonApiOptions : Inheritdoc.Issue9736.IJsonApiOptions

Inheritance

\r\n
\nobject\n
\n\n\r\n

Implements

\r\n\n\r\n

Inherited Members

\r\n\n\n\n\n\n\n\r\n

Properties

\r\n

Whether to use relative links for all resources. false by default.

\n
public bool UseRelativeLinks { get; set; }

Property Value

bool
\r\n
\r\n\r\n\r\n\r\n

Examples

options.UseRelativeLinks = true;
\n
{\n  \"type\": \"articles\",\n  \"id\": \"4309\",\n  \"relationships\": {\n     \"author\": {\n       \"links\": {\n         \"self\": \"/api/shopping/articles/4309/relationships/author\",\n         \"related\": \"/api/shopping/articles/4309/author\"\n       }\n     }\n  }\n}
\n", + "yamlmime": "ApiPage", + "_disableNextArticle": true, + "_key": "obj/apipage/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.yml", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "apipage/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "_rel": "../", + "_tocKey": "~/obj/apipage/toc.yml", + "_tocPath": "apipage/toc.html", + "_tocRel": "toc.html" +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json new file mode 100644 index 00000000000..d08faf8781c --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json @@ -0,0 +1,20 @@ +{ + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "title": "Class Inheritdoc.Issue9736", + "content": "

Class Inheritdoc.Issue9736

\r\n
\r\n
Namespace
BuildFromProject
Assembly
BuildFromProject.dll
\r\n
public class Inheritdoc.Issue9736

Inheritance

\r\n
\nobject\n
\n\n\r\n

Inherited Members

\r\n\n\n\n\n\n\n\n\r\n
", + "yamlmime": "ApiPage", + "_disableNextArticle": true, + "_key": "obj/apipage/BuildFromProject.Inheritdoc.Issue9736.yml", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "apipage/BuildFromProject.Inheritdoc.Issue9736.html", + "_rel": "../", + "_tocKey": "~/obj/apipage/toc.yml", + "_tocPath": "apipage/toc.html", + "_tocRel": "toc.html" +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.html.view.verified.json index 2c466f39f71..e0ec7686572 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/BuildFromProject.html.view.verified.json @@ -5,7 +5,7 @@ "pdf": true, "pdfTocPage": true, "title": "Namespace BuildFromProject", - "content": "

Namespace BuildFromProject

\r\n

Namespaces

BuildFromProject.Issue8540
\r\n
\r\n\r\n\r\n\r\n

Classes

Inheritdoc.Issue6366.Class1<T>
\r\n
\r\n\r\n\r\n\r\n
Class1
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue6366.Class2
\r\n
\r\n\r\n\r\n\r\n
Dog
\r\n
\r\n\r\n\r\n

Class representing a dog.

\n\r\n
Inheritdoc
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue6366
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue7035
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue7484
\r\n
\r\n\r\n\r\n

This is a test class to have something for DocFX to document.

\n\r\n
Inheritdoc.Issue8101
\r\n
\r\n\r\n\r\n\r\n
Class1.Issue8665
\r\n
\r\n\r\n\r\n\r\n
Class1.Issue8696Attribute
\r\n
\r\n\r\n\r\n\r\n
Issue8725
\r\n
\r\n\r\n\r\n

A nice class

\n\r\n
Class1.Issue8948
\r\n
\r\n\r\n\r\n\r\n
Class1.Test<T>
\r\n
\r\n\r\n\r\n\r\n

Structs

Inheritdoc.Issue8129
\r\n
\r\n\r\n\r\n\r\n

Interfaces

IInheritdoc
\r\n
\r\n\r\n\r\n\r\n
Class1.IIssue8948
\r\n
\r\n\r\n\r\n\r\n

Enums

Class1.Issue9260
\r\n
\r\n\r\n\r\n\r\n
", + "content": "

Namespace BuildFromProject

\r\n

Namespaces

BuildFromProject.Issue8540
\r\n
\r\n\r\n\r\n\r\n

Classes

Inheritdoc.Issue6366.Class1<T>
\r\n
\r\n\r\n\r\n\r\n
Class1
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue6366.Class2
\r\n
\r\n\r\n\r\n\r\n
Dog
\r\n
\r\n\r\n\r\n

Class representing a dog.

\n\r\n
Inheritdoc
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue6366
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue7035
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue7484
\r\n
\r\n\r\n\r\n

This is a test class to have something for DocFX to document.

\n\r\n
Inheritdoc.Issue8101
\r\n
\r\n\r\n\r\n\r\n
Class1.Issue8665
\r\n
\r\n\r\n\r\n\r\n
Class1.Issue8696Attribute
\r\n
\r\n\r\n\r\n\r\n
Issue8725
\r\n
\r\n\r\n\r\n

A nice class

\n\r\n
Class1.Issue8948
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue9736
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue9736.JsonApiOptions
\r\n
\r\n\r\n\r\n\r\n
Class1.Test<T>
\r\n
\r\n\r\n\r\n\r\n

Structs

Inheritdoc.Issue8129
\r\n
\r\n\r\n\r\n\r\n

Interfaces

IInheritdoc
\r\n
\r\n\r\n\r\n\r\n
Class1.IIssue8948
\r\n
\r\n\r\n\r\n\r\n
Inheritdoc.Issue9736.IJsonApiOptions
\r\n
\r\n\r\n\r\n\r\n

Enums

Class1.Issue9260
\r\n
\r\n\r\n\r\n\r\n
", "yamlmime": "ApiPage", "_disableNextArticle": true, "_key": "obj/apipage/BuildFromProject.yml", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.ICatExtension.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.ICatExtension.html.view.verified.json index d3b7872bdda..9df7f45bb92 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.ICatExtension.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.ICatExtension.html.view.verified.json @@ -4,9 +4,9 @@ "_enableSearch": true, "pdf": true, "pdfTocPage": true, - "description": "It's the class that contains ICat interface's extension method.\nThis class must be public and static.Also it shouldn't be a geneic class", + "description": "It's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class", "title": "Class ICatExtension", - "content": "

Class ICatExtension

\r\n
\r\n
Namespace
CatLibrary
Assembly
CatLibrary.dll
\r\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

Also it shouldn't be a geneic class

\n
public static class ICatExtension

Inheritance

\r\n
\nobject\n
\n\n\r\n

Inherited Members

\r\n\n\n\n\n\n\n\n\r\n

Methods

Play(ICat, ColorType)

\r\n

Extension method to let cat play

\n
public static void Play(this ICat icat, ContainersRefType.ColorType toy)

Parameters

icat ICat
\r\n
\r\n\r\n\r\n

Cat

\n\r\n
toy ContainersRefType.ColorType
\r\n
\r\n\r\n\r\n

Something to play

\n\r\n

Sleep(ICat, long)

\r\n

Extension method hint that how long the cat can sleep.

\n
public static void Sleep(this ICat icat, long hours)

Parameters

icat ICat
\r\n
\r\n\r\n\r\n

The type will be extended.

\n\r\n
hours long
\r\n
\r\n\r\n\r\n

The length of sleep.

\n\r\n
", + "content": "

Class ICatExtension

\r\n
\r\n
Namespace
CatLibrary
Assembly
CatLibrary.dll
\r\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

\n

Also it shouldn't be a geneic class

\n
public static class ICatExtension

Inheritance

\r\n
\nobject\n
\n\n\r\n

Inherited Members

\r\n\n\n\n\n\n\n\n\r\n

Methods

Play(ICat, ColorType)

\r\n

Extension method to let cat play

\n
public static void Play(this ICat icat, ContainersRefType.ColorType toy)

Parameters

icat ICat
\r\n
\r\n\r\n\r\n

Cat

\n\r\n
toy ContainersRefType.ColorType
\r\n
\r\n\r\n\r\n

Something to play

\n\r\n

Sleep(ICat, long)

\r\n

Extension method hint that how long the cat can sleep.

\n
public static void Sleep(this ICat icat, long hours)

Parameters

icat ICat
\r\n
\r\n\r\n\r\n

The type will be extended.

\n\r\n
hours long
\r\n
\r\n\r\n\r\n

The length of sleep.

\n\r\n
", "yamlmime": "ApiPage", "_disableNextArticle": true, "_key": "obj/apipage/CatLibrary.ICatExtension.yml", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.html.view.verified.json index ea4ba3fcd50..b499ec11a90 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/CatLibrary.html.view.verified.json @@ -5,7 +5,7 @@ "pdf": true, "pdfTocPage": true, "title": "Namespace CatLibrary", - "content": "

Namespace CatLibrary

\r\n

Namespaces

CatLibrary.Core
\r\n
\r\n\r\n\r\n\r\n

Classes

Cat<T, K>
\r\n
\r\n\r\n\r\n

Here's main class of this Demo.

\n

You can see mostly type of article within this class and you for more detail, please see the remarks.

\n

\n

this class is a template class. It has two Generic parameter. they are: T and K.

\n

The extension method of this class can refer to class

\n\r\n
CatException<T>
\r\n
\r\n\r\n\r\n\r\n
Complex<T, J>
\r\n
\r\n\r\n\r\n\r\n
ICatExtension
\r\n
\r\n\r\n\r\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

Also it shouldn't be a geneic class

\n\r\n
Tom
\r\n
\r\n\r\n\r\n

Tom class is only inherit from Object. Not any member inside itself.

\n\r\n
TomFromBaseClass
\r\n
\r\n\r\n\r\n

TomFromBaseClass inherits from @

\n\r\n

Interfaces

IAnimal
\r\n
\r\n\r\n\r\n

This is basic interface of all animal.

\n\r\n
ICat
\r\n
\r\n\r\n\r\n

Cat's interface

\n\r\n

Delegates

FakeDelegate<T>
\r\n
\r\n\r\n\r\n

Fake delegate

\n\r\n
MRefDelegate<K, T, L>
\r\n
\r\n\r\n\r\n

Generic delegate with many constrains.

\n\r\n
MRefNormalDelegate
\r\n
\r\n\r\n\r\n

Delegate in the namespace

\n\r\n
", + "content": "

Namespace CatLibrary

\r\n

Namespaces

CatLibrary.Core
\r\n
\r\n\r\n\r\n\r\n

Classes

Cat<T, K>
\r\n
\r\n\r\n\r\n

Here's main class of this Demo.

\n

You can see mostly type of article within this class and you for more detail, please see the remarks.

\n

\n

this class is a template class. It has two Generic parameter. they are: T and K.

\n

The extension method of this class can refer to class

\n\r\n
CatException<T>
\r\n
\r\n\r\n\r\n\r\n
Complex<T, J>
\r\n
\r\n\r\n\r\n\r\n
ICatExtension
\r\n
\r\n\r\n\r\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

\n

Also it shouldn't be a geneic class

\n\r\n
Tom
\r\n
\r\n\r\n\r\n

Tom class is only inherit from Object. Not any member inside itself.

\n\r\n
TomFromBaseClass
\r\n
\r\n\r\n\r\n

TomFromBaseClass inherits from @

\n\r\n

Interfaces

IAnimal
\r\n
\r\n\r\n\r\n

This is basic interface of all animal.

\n\r\n
ICat
\r\n
\r\n\r\n\r\n

Cat's interface

\n\r\n

Delegates

FakeDelegate<T>
\r\n
\r\n\r\n\r\n

Fake delegate

\n\r\n
MRefDelegate<K, T, L>
\r\n
\r\n\r\n\r\n

Generic delegate with many constrains.

\n\r\n
MRefNormalDelegate
\r\n
\r\n\r\n\r\n

Delegate in the namespace

\n\r\n
", "yamlmime": "ApiPage", "_disableNextArticle": true, "_key": "obj/apipage/CatLibrary.yml", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.html.view.verified.json index 6f57af38f61..bdd79f7c926 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.html.view.verified.json @@ -260,6 +260,24 @@ "items": [], "leaf": true }, + { + "name": "Inheritdoc.Issue9736", + "href": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.html", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, { "name": "Issue8725", "href": "BuildFromProject.Issue8725.html", @@ -312,6 +330,15 @@ "items": [], "leaf": true }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, { "name": "Enums", "topicHref": null, diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.json.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.json.view.verified.json index 769ecbab285..bfdc7d78b39 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.json.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.json.view.verified.json @@ -1,3 +1,3 @@ { - "content": "{\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"BuildFromAssembly.html\",\"topicHref\":\"BuildFromAssembly.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromAssembly.Class1.html\",\"topicHref\":\"BuildFromAssembly.Class1.html\"},{\"name\":\"Structs\"},{\"name\":\"Issue5432\",\"href\":\"BuildFromAssembly.Issue5432.html\",\"topicHref\":\"BuildFromAssembly.Issue5432.html\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"BuildFromCSharpSourceCode.html\",\"topicHref\":\"BuildFromCSharpSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"CSharp\",\"href\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"BuildFromCSharpSourceCode.CSharp.html\"}]},{\"name\":\"BuildFromProject\",\"href\":\"BuildFromProject.html\",\"topicHref\":\"BuildFromProject.html\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"BuildFromProject.Issue8540.html\",\"topicHref\":\"BuildFromProject.Issue8540.html\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.A.html\"}]},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.B.html\"}]}]},{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromProject.Class1.html\",\"topicHref\":\"BuildFromProject.Class1.html\"},{\"name\":\"Class1.Issue8665\",\"href\":\"BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8665.html\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8696Attribute.html\"},{\"name\":\"Class1.Issue8948\",\"href\":\"BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8948.html\"},{\"name\":\"Class1.Test\",\"href\":\"BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"BuildFromProject.Class1.Test-1.html\"},{\"name\":\"Dog\",\"href\":\"BuildFromProject.Dog.html\",\"topicHref\":\"BuildFromProject.Dog.html\"},{\"name\":\"Inheritdoc\",\"href\":\"BuildFromProject.Inheritdoc.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.html\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.html\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7035.html\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7484.html\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8101.html\"},{\"name\":\"Issue8725\",\"href\":\"BuildFromProject.Issue8725.html\",\"topicHref\":\"BuildFromProject.Issue8725.html\"},{\"name\":\"Structs\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8129.html\"},{\"name\":\"Interfaces\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"BuildFromProject.Class1.IIssue8948.html\"},{\"name\":\"IInheritdoc\",\"href\":\"BuildFromProject.IInheritdoc.html\",\"topicHref\":\"BuildFromProject.IInheritdoc.html\"},{\"name\":\"Enums\"},{\"name\":\"Class1.Issue9260\",\"href\":\"BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"BuildFromProject.Class1.Issue9260.html\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"BuildFromVBSourceCode.html\",\"topicHref\":\"BuildFromVBSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"BaseClass1\",\"href\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"BuildFromVBSourceCode.BaseClass1.html\"},{\"name\":\"Class1\",\"href\":\"BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"BuildFromVBSourceCode.Class1.html\"}]},{\"name\":\"CatLibrary\",\"href\":\"CatLibrary.html\",\"topicHref\":\"CatLibrary.html\",\"items\":[{\"name\":\"Core\",\"href\":\"CatLibrary.Core.html\",\"topicHref\":\"CatLibrary.Core.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"CatLibrary.Core.ExplicitLayoutClass.html\"},{\"name\":\"Issue231\",\"href\":\"CatLibrary.Core.Issue231.html\",\"topicHref\":\"CatLibrary.Core.Issue231.html\"},{\"name\":\"Structs\"},{\"name\":\"ContainersRefType\",\"href\":\"CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.html\"},{\"name\":\"Interfaces\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\"},{\"name\":\"Enums\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ColorType.html\"},{\"name\":\"Delegates\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\"}]},{\"name\":\"Classes\"},{\"name\":\"Cat\",\"href\":\"CatLibrary.Cat-2.html\",\"topicHref\":\"CatLibrary.Cat-2.html\"},{\"name\":\"CatException\",\"href\":\"CatLibrary.CatException-1.html\",\"topicHref\":\"CatLibrary.CatException-1.html\"},{\"name\":\"Complex\",\"href\":\"CatLibrary.Complex-2.html\",\"topicHref\":\"CatLibrary.Complex-2.html\"},{\"name\":\"ICatExtension\",\"href\":\"CatLibrary.ICatExtension.html\",\"topicHref\":\"CatLibrary.ICatExtension.html\"},{\"name\":\"Tom\",\"href\":\"CatLibrary.Tom.html\",\"topicHref\":\"CatLibrary.Tom.html\"},{\"name\":\"TomFromBaseClass\",\"href\":\"CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"CatLibrary.TomFromBaseClass.html\"},{\"name\":\"Interfaces\"},{\"name\":\"IAnimal\",\"href\":\"CatLibrary.IAnimal.html\",\"topicHref\":\"CatLibrary.IAnimal.html\"},{\"name\":\"ICat\",\"href\":\"CatLibrary.ICat.html\",\"topicHref\":\"CatLibrary.ICat.html\"},{\"name\":\"Delegates\"},{\"name\":\"FakeDelegate\",\"href\":\"CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"CatLibrary.FakeDelegate-1.html\"},{\"name\":\"MRefDelegate\",\"href\":\"CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"CatLibrary.MRefDelegate-3.html\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"CatLibrary.MRefNormalDelegate.html\"}]},{\"name\":\"MRef\",\"href\":\"MRef.html\",\"topicHref\":\"MRef.html\",\"items\":[{\"name\":\"Demo\",\"href\":\"MRef.Demo.html\",\"topicHref\":\"MRef.Demo.html\",\"items\":[{\"name\":\"Enumeration\",\"href\":\"MRef.Demo.Enumeration.html\",\"topicHref\":\"MRef.Demo.Enumeration.html\",\"items\":[{\"name\":\"Enums\"},{\"name\":\"ColorType\",\"href\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"MRef.Demo.Enumeration.ColorType.html\"}]}]}]}],\"pdf\":true,\"pdfTocPage\":true}" + "content": "{\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"BuildFromAssembly.html\",\"topicHref\":\"BuildFromAssembly.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromAssembly.Class1.html\",\"topicHref\":\"BuildFromAssembly.Class1.html\"},{\"name\":\"Structs\"},{\"name\":\"Issue5432\",\"href\":\"BuildFromAssembly.Issue5432.html\",\"topicHref\":\"BuildFromAssembly.Issue5432.html\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"BuildFromCSharpSourceCode.html\",\"topicHref\":\"BuildFromCSharpSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"CSharp\",\"href\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"BuildFromCSharpSourceCode.CSharp.html\"}]},{\"name\":\"BuildFromProject\",\"href\":\"BuildFromProject.html\",\"topicHref\":\"BuildFromProject.html\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"BuildFromProject.Issue8540.html\",\"topicHref\":\"BuildFromProject.Issue8540.html\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.A.html\"}]},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.B.html\"}]}]},{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromProject.Class1.html\",\"topicHref\":\"BuildFromProject.Class1.html\"},{\"name\":\"Class1.Issue8665\",\"href\":\"BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8665.html\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8696Attribute.html\"},{\"name\":\"Class1.Issue8948\",\"href\":\"BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8948.html\"},{\"name\":\"Class1.Test\",\"href\":\"BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"BuildFromProject.Class1.Test-1.html\"},{\"name\":\"Dog\",\"href\":\"BuildFromProject.Dog.html\",\"topicHref\":\"BuildFromProject.Dog.html\"},{\"name\":\"Inheritdoc\",\"href\":\"BuildFromProject.Inheritdoc.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.html\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.html\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7035.html\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7484.html\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8101.html\"},{\"name\":\"Inheritdoc.Issue9736\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.html\"},{\"name\":\"Inheritdoc.Issue9736.JsonApiOptions\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\"},{\"name\":\"Issue8725\",\"href\":\"BuildFromProject.Issue8725.html\",\"topicHref\":\"BuildFromProject.Issue8725.html\"},{\"name\":\"Structs\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8129.html\"},{\"name\":\"Interfaces\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"BuildFromProject.Class1.IIssue8948.html\"},{\"name\":\"IInheritdoc\",\"href\":\"BuildFromProject.IInheritdoc.html\",\"topicHref\":\"BuildFromProject.IInheritdoc.html\"},{\"name\":\"Inheritdoc.Issue9736.IJsonApiOptions\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\"},{\"name\":\"Enums\"},{\"name\":\"Class1.Issue9260\",\"href\":\"BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"BuildFromProject.Class1.Issue9260.html\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"BuildFromVBSourceCode.html\",\"topicHref\":\"BuildFromVBSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"BaseClass1\",\"href\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"BuildFromVBSourceCode.BaseClass1.html\"},{\"name\":\"Class1\",\"href\":\"BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"BuildFromVBSourceCode.Class1.html\"}]},{\"name\":\"CatLibrary\",\"href\":\"CatLibrary.html\",\"topicHref\":\"CatLibrary.html\",\"items\":[{\"name\":\"Core\",\"href\":\"CatLibrary.Core.html\",\"topicHref\":\"CatLibrary.Core.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"CatLibrary.Core.ExplicitLayoutClass.html\"},{\"name\":\"Issue231\",\"href\":\"CatLibrary.Core.Issue231.html\",\"topicHref\":\"CatLibrary.Core.Issue231.html\"},{\"name\":\"Structs\"},{\"name\":\"ContainersRefType\",\"href\":\"CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.html\"},{\"name\":\"Interfaces\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\"},{\"name\":\"Enums\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ColorType.html\"},{\"name\":\"Delegates\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\"}]},{\"name\":\"Classes\"},{\"name\":\"Cat\",\"href\":\"CatLibrary.Cat-2.html\",\"topicHref\":\"CatLibrary.Cat-2.html\"},{\"name\":\"CatException\",\"href\":\"CatLibrary.CatException-1.html\",\"topicHref\":\"CatLibrary.CatException-1.html\"},{\"name\":\"Complex\",\"href\":\"CatLibrary.Complex-2.html\",\"topicHref\":\"CatLibrary.Complex-2.html\"},{\"name\":\"ICatExtension\",\"href\":\"CatLibrary.ICatExtension.html\",\"topicHref\":\"CatLibrary.ICatExtension.html\"},{\"name\":\"Tom\",\"href\":\"CatLibrary.Tom.html\",\"topicHref\":\"CatLibrary.Tom.html\"},{\"name\":\"TomFromBaseClass\",\"href\":\"CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"CatLibrary.TomFromBaseClass.html\"},{\"name\":\"Interfaces\"},{\"name\":\"IAnimal\",\"href\":\"CatLibrary.IAnimal.html\",\"topicHref\":\"CatLibrary.IAnimal.html\"},{\"name\":\"ICat\",\"href\":\"CatLibrary.ICat.html\",\"topicHref\":\"CatLibrary.ICat.html\"},{\"name\":\"Delegates\"},{\"name\":\"FakeDelegate\",\"href\":\"CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"CatLibrary.FakeDelegate-1.html\"},{\"name\":\"MRefDelegate\",\"href\":\"CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"CatLibrary.MRefDelegate-3.html\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"CatLibrary.MRefNormalDelegate.html\"}]},{\"name\":\"MRef\",\"href\":\"MRef.html\",\"topicHref\":\"MRef.html\",\"items\":[{\"name\":\"Demo\",\"href\":\"MRef.Demo.html\",\"topicHref\":\"MRef.Demo.html\",\"items\":[{\"name\":\"Enumeration\",\"href\":\"MRef.Demo.Enumeration.html\",\"topicHref\":\"MRef.Demo.Enumeration.html\",\"items\":[{\"name\":\"Enums\"},{\"name\":\"ColorType\",\"href\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"MRef.Demo.Enumeration.ColorType.html\"}]}]}]}],\"pdf\":true,\"pdfTocPage\":true}" } \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.pdf.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.pdf.verified.json index b7acde4a6ec..227d67cd40f 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.pdf.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.pdf.verified.json @@ -1,9 +1,9 @@ { - "NumberOfPages": 89, + "NumberOfPages": 93, "Pages": [ { "Number": 1, - "Text": "Table of ContentsBuildFromAssembly3ClassesClass14StructsIssue54325BuildFromCSharpSourceCode6ClassesCSharp7BuildFromProject8Issue854010A11ClassesA12B13ClassesB14ClassesClass115Class1.Issue866521Class1.Issue8696Attribute24Class1.Issue894826Class1.Test27Dog28Inheritdoc30Inheritdoc.Issue636632Inheritdoc.Issue6366.Class133Inheritdoc.Issue6366.Class235Inheritdoc.Issue703537Inheritdoc.Issue748438Inheritdoc.Issue810140Issue872542StructsInheritdoc.Issue812944InterfacesClass1.IIssue894845IInheritdoc46EnumsClass1.Issue926047", + "Text": "Table of Contents\nBuildFromAssembly 3\nClasses\nClass1 4\nStructs\nIssue5432 5\nBuildFromCSharpSourceCode 6\nClasses\nCSharp 7\nBuildFromProject 8\nIssue8540 10\nA 11\nClasses\nA 12\nB 13\nClasses\nB 14\nClasses\nClass1 15\nClass1.Issue8665 21\nClass1.Issue8696Attribute 24\nClass1.Issue8948 26\nClass1.Test 27\nDog 28\nInheritdoc 30\nInheritdoc.Issue6366 32\nInheritdoc.Issue6366.Class1 33\nInheritdoc.Issue6366.Class2 35\nInheritdoc.Issue7035 37\nInheritdoc.Issue7484 38\nInheritdoc.Issue8101 40\nInheritdoc.Issue9736 42\nInheritdoc.Issue9736.JsonApiOptions 43\nIssue8725 45\nStructs\nInheritdoc.Issue8129 47\nInterfaces\nClass1.IIssue8948 48\nIInheritdoc 49", "Links": [ { "Goto": { @@ -232,7 +232,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 43, "Type": 2, "Coordinates": { "Top": 0 @@ -250,7 +250,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -259,7 +259,16 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, "Type": 2, "Coordinates": { "Top": 0 @@ -270,11 +279,11 @@ }, { "Number": 2, - "Text": "BuildFromVBSourceCode48ClassesBaseClass149Class150CatLibrary53Core55ClassesContainersRefType.ContainersRefTypeChild56ExplicitLayoutClass57Issue23158StructsContainersRefType59InterfacesContainersRefType.ContainersRefTypeChildInterface61EnumsContainersRefType.ColorType62DelegatesContainersRefType.ContainersRefTypeDelegate63ClassesCat64CatException73Complex74ICatExtension75Tom77TomFromBaseClass79InterfacesIAnimal80ICat82DelegatesFakeDelegate83MRefDelegate84MRefNormalDelegate85MRef86Demo87Enumeration88EnumsColorType89", + "Text": "Inheritdoc.Issue9736.IJsonApiOptions 50\nEnums\nClass1.Issue9260 51\nBuildFromVBSourceCode 52\nClasses\nBaseClass1 53\nClass1 54\nCatLibrary 57\nCore 59\nClasses\nContainersRefType.ContainersRefTypeChild 60\nExplicitLayoutClass 61\nIssue231 62\nStructs\nContainersRefType 63\nInterfaces\nContainersRefType.ContainersRefTypeChildInterface 65\nEnums\nContainersRefType.ColorType 66\nDelegates\nContainersRefType.ContainersRefTypeDelegate 67\nClasses\nCat 68\nCatException 77\nComplex 78\nICatExtension 79\nTom 81\nTomFromBaseClass 83\nInterfaces\nIAnimal 84\nICat 86\nDelegates\nFakeDelegate 87\nMRefDelegate 88\nMRefNormalDelegate 89\nMRef 90\nDemo 91\nEnumeration 92\nEnums\nColorType 93", "Links": [ { "Goto": { - "PageNumber": 48, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -283,7 +292,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -292,7 +301,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -310,7 +319,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -319,7 +328,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -328,7 +337,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -337,7 +346,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -346,7 +355,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -355,7 +364,7 @@ }, { "Goto": { - "PageNumber": 61, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -364,7 +373,7 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -373,7 +382,7 @@ }, { "Goto": { - "PageNumber": 63, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -382,7 +391,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 66, "Type": 2, "Coordinates": { "Top": 0 @@ -391,7 +400,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -400,7 +409,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -409,7 +418,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -418,7 +427,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -436,7 +445,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -445,7 +454,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -454,7 +463,7 @@ }, { "Goto": { - "PageNumber": 83, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -463,7 +472,7 @@ }, { "Goto": { - "PageNumber": 84, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -472,7 +481,7 @@ }, { "Goto": { - "PageNumber": 85, + "PageNumber": 87, "Type": 2, "Coordinates": { "Top": 0 @@ -481,7 +490,7 @@ }, { "Goto": { - "PageNumber": 86, + "PageNumber": 88, "Type": 2, "Coordinates": { "Top": 0 @@ -490,7 +499,7 @@ }, { "Goto": { - "PageNumber": 87, + "PageNumber": 89, "Type": 2, "Coordinates": { "Top": 0 @@ -499,7 +508,7 @@ }, { "Goto": { - "PageNumber": 88, + "PageNumber": 90, "Type": 2, "Coordinates": { "Top": 0 @@ -508,7 +517,25 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 91, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 92, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -519,7 +546,7 @@ }, { "Number": 3, - "Text": "3 / 89ClassesClass1This is a test class.StructsIssue5432Namespace BuildFromAssembly", + "Text": "3 / 93\nClasses\nClass1\nThis is a test class.\nStructs\nIssue5432\nNamespace BuildFromAssembly", "Links": [ { "Goto": { @@ -543,7 +570,7 @@ }, { "Number": 4, - "Text": "4 / 89Namespace:BuildFromAssemblyAssembly:BuildFromAssembly.dllThis is a test class.Inheritanceobject\uF1C5 Class1Inherited Membersobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ToString()\uF1C5 ,object.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5ConstructorsMethodsHello World.Class Class1public class Class1\uF12CClass1()public Class1()HelloWorld()public static void HelloWorld()", + "Text": "4 / 93\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nThis is a test class.\nInheritance\nobject\uF1C5 Class1\nInherited Members\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ToString()\uF1C5 ,\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5\nConstructors\nMethods\nHello World.\nClass Class1\npublic class Class1\n\uF12C\nClass1()\npublic Class1()\nHelloWorld()\npublic static void HelloWorld()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -639,7 +666,7 @@ }, { "Number": 5, - "Text": "5 / 89Namespace:BuildFromAssemblyAssembly:BuildFromAssembly.dllInherited Membersobject.GetType()\uF1C5 , object.ToString()\uF1C5 , object.Equals(object?)\uF1C5 ,object.Equals(object?, object?)\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,object.GetHashCode()\uF1C5PropertiesProperty Valuestring\uF1C5Struct Issue5432public struct Issue5432Namepublic string Name { get; }", + "Text": "5 / 93\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nInherited Members\nobject.GetType()\uF1C5 , object.ToString()\uF1C5 , object.Equals(object?)\uF1C5 ,\nobject.Equals(object?, object?)\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.GetHashCode()\uF1C5\nProperties\nProperty Value\nstring\uF1C5\nStruct Issue5432\npublic struct Issue5432\nName\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" @@ -717,7 +744,7 @@ }, { "Number": 6, - "Text": "6 / 89ClassesCSharpNamespace BuildFromCSharpSourceCode", + "Text": "6 / 93\nClasses\nCSharp\nNamespace BuildFromCSharpSourceCode", "Links": [ { "Goto": { @@ -732,7 +759,7 @@ }, { "Number": 7, - "Text": "7 / 89Namespace:BuildFromCSharpSourceCodeInheritanceobject\uF1C5 CSharpInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsParametersargs string\uF1C5[]Class CSharppublic class CSharp\uF12CMain(string[])public static void Main(string[] args)", + "Text": "7 / 93\nNamespace: BuildFromCSharpSourceCode\nInheritance\nobject\uF1C5 CSharp\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nParameters\nargs string\uF1C5 []\nClass CSharp\npublic class CSharp\n\uF12C\nMain(string[])\npublic static void Main(string[] args)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -837,7 +864,7 @@ }, { "Number": 8, - "Text": "8 / 89NamespacesBuildFromProject.Issue8540ClassesInheritdoc.Issue6366.Class1Class1Inheritdoc.Issue6366.Class2DogClass representing a dog.InheritdocInheritdoc.Issue6366Inheritdoc.Issue7035Inheritdoc.Issue7484This is a test class to have something for DocFX to document.Inheritdoc.Issue8101Class1.Issue8665Class1.Issue8696AttributeIssue8725A nice classClass1.Issue8948Class1.TestStructsInheritdoc.Issue8129InterfacesNamespace BuildFromProject", + "Text": "8 / 93\nNamespaces\nBuildFromProject.Issue8540\nClasses\nInheritdoc.Issue6366.Class1\nClass1\nInheritdoc.Issue6366.Class2\nDog\nClass representing a dog.\nInheritdoc\nInheritdoc.Issue6366\nInheritdoc.Issue7035\nInheritdoc.Issue7484\nThis is a test class to have something for DocFX to document.\nInheritdoc.Issue8101\nClass1.Issue8665\nClass1.Issue8696Attribute\nIssue8725\nA nice class\nClass1.Issue8948\nInheritdoc.Issue9736\nInheritdoc.Issue9736.JsonApiOptions\nClass1.Test\nStructs\nNamespace BuildFromProject", "Links": [ { "Goto": { @@ -949,7 +976,7 @@ }, { "Goto": { - "PageNumber": 42, + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -967,7 +994,16 @@ }, { "Goto": { - "PageNumber": 27, + "PageNumber": 42, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 43, "Type": 2, "Coordinates": { "Top": 0 @@ -976,7 +1012,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 27, "Type": 2, "Coordinates": { "Top": 0 @@ -987,11 +1023,11 @@ }, { "Number": 9, - "Text": "9 / 89IInheritdocClass1.IIssue8948EnumsClass1.Issue9260", + "Text": "9 / 93\nInheritdoc.Issue8129\nInterfaces\nIInheritdoc\nClass1.IIssue8948\nInheritdoc.Issue9736.IJsonApiOptions\nEnums\nClass1.Issue9260", "Links": [ { "Goto": { - "PageNumber": 46, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -1000,7 +1036,7 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 49, "Type": 2, "Coordinates": { "Top": 0 @@ -1009,7 +1045,25 @@ }, { "Goto": { - "PageNumber": 47, + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 50, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -1020,7 +1074,7 @@ }, { "Number": 10, - "Text": "10 / 89NamespacesBuildFromProject.Issue8540.ABuildFromProject.Issue8540.BNamespace BuildFromProject.Issue8540", + "Text": "10 / 93\nNamespaces\nBuildFromProject.Issue8540.A\nBuildFromProject.Issue8540.B\nNamespace BuildFromProject.Issue8540", "Links": [ { "Goto": { @@ -1044,7 +1098,7 @@ }, { "Number": 11, - "Text": "11 / 89ClassesANamespace BuildFromProject.Issue8540.A", + "Text": "11 / 93\nClasses\nA\nNamespace BuildFromProject.Issue8540.A", "Links": [ { "Goto": { @@ -1059,7 +1113,7 @@ }, { "Number": 12, - "Text": "12 / 89Namespace:BuildFromProject.Issue8540.AAssembly:BuildFromProject.dllInheritanceobject\uF1C5 AInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Class Apublic class A\uF12C", + "Text": "12 / 93\nNamespace: BuildFromProject.Issue8540.A\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 A\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass A\npublic class A\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1155,7 +1209,7 @@ }, { "Number": 13, - "Text": "13 / 89ClassesBNamespace BuildFromProject.Issue8540.B", + "Text": "13 / 93\nClasses\nB\nNamespace BuildFromProject.Issue8540.B", "Links": [ { "Goto": { @@ -1170,7 +1224,7 @@ }, { "Number": 14, - "Text": "14 / 89Namespace:BuildFromProject.Issue8540.BAssembly:BuildFromProject.dllInheritanceobject\uF1C5 BInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Class Bpublic class B\uF12C", + "Text": "14 / 93\nNamespace: BuildFromProject.Issue8540.B\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 B\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass B\npublic class B\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1266,7 +1320,7 @@ }, { "Number": 15, - "Text": "15 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1ImplementsIClass1Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsPricing models are used to calculate theoretical option values1-Black Scholes2-Black763-Black76Fut4-Equity Tree5-Variance Swap6-Dividend ForecastClass Class1 PreviewDOCFX001\uF1C5: 'BuildFromProject.Class1' is for evaluation purposes only and is subject tochange or removal in future updates.public class Class1 : IClass1\uF12CIssue1651()public void Issue1651()", + "Text": "15 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1\nImplements\nIClass1\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nPricing models are used to calculate theoretical option values\n1 - Black Scholes\n2 - Black76\n3 - Black76Fut\n4 - Equity Tree\n5 - Variance Swap\n6 - Dividend Forecast\nClass Class1 Preview\nDOCFX001\uF1C5 : 'BuildFromProject.Class1' is for evaluation purposes only and is subject to\nchange or removal in future updates.\npublic class Class1 : IClass1\n\uF12C\nIssue1651()\npublic void Issue1651()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1371,12 +1425,12 @@ }, { "Number": 16, - "Text": "16 / 89IConfiguration related helper and extension routines.ExamplesRemarksFor example:Issue1887() Preview'BuildFromProject.Class1.Issue1887()' is for evaluation purposes only and is subject tochange or removal in future updates.public void Issue1887()Issue2623()public void Issue2623()MyClass myClass = new MyClass();void Update(){ myClass.Execute();}MyClass myClass = new MyClass();void Update(){ myClass.Execute();}Issue2723()", + "Text": "16 / 93\nIConfiguration related helper and extension routines.\nExamples\nRemarks\nFor example:\nIssue1887() Preview\n'BuildFromProject.Class1.Issue1887()' is for evaluation purposes only and is subject to\nchange or removal in future updates.\npublic void Issue1887()\nIssue2623()\npublic void Issue2623()\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\nIssue2723()", "Links": [] }, { "Number": 17, - "Text": "17 / 89RemarksInline .link\uF1C5Examplespublic void Issue2723()NOTEThis is a . & \" '\uF431for (var i = 0; i > 10; i++) // & \" 'var range = new Range { Min = 0, Max = 10 };var range = new Range { Min = 0, Max = 10 };Issue4017()public void Issue4017()public void HookMessageDeleted(BaseSocketClient client){ client.MessageDeleted += HandleMessageDelete;}public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel){ // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine", + "Text": "17 / 93\nRemarks\nInline .\nlink\uF1C5\nExamples\npublic void Issue2723()\nNOTE\nThis is a . & \" '\n\uF431\nfor (var i = 0; i > 10; i++) // & \" '\nvar range = new Range { Min = 0, Max = 10 };\nvar range = new Range { Min = 0, Max = 10 };\nIssue4017()\npublic void Issue4017()\npublic void HookMessageDeleted(BaseSocketClient client)\n{ \nclient.MessageDeleted += HandleMessageDelete;\n}\npublic Task HandleMessageDelete(Cacheable cachedMessage,\nISocketMessageChannel channel)\n{ \n// check if the message exists in cache; if not, we cannot report what\nwas removed\nif (!cachedMessage.HasValue) return;\nvar message = cachedMessage.Value;\nConsole.WriteLine($\"A message ({message.Id}) from {message.Author} was removed\nfrom the channel {channel.Name} ({channel.Id}):\"\n+ Environment.NewLine", "Links": [ { "Uri": "https://www.github.com/" @@ -1391,12 +1445,12 @@ }, { "Number": 18, - "Text": "18 / 89RemarksRemarks@\"\\\\?\\\" @\"\\\\?\\\"RemarksThere's really no reason to not believe that this class can test things.TermDescriptionA TermA DescriptionBee TermBee Description + message.Content); return Task.CompletedTask;}void Update(){ myClass.Execute();}Issue4392()public void Issue4392()Issue7484()public void Issue7484()Issue8764()", + "Text": "18 / 93\nRemarks\nRemarks\n@\"\\\\?\\\" @\"\\\\?\\\"\nRemarks\nThere's really no reason to not believe that this class can test things.\nTerm Description\nA Term A Description\nBee Term Bee Description\n+ message.Content);\nreturn Task.CompletedTask;\n}\nvoid Update()\n{ \nmyClass.Execute();\n}\nIssue4392()\npublic void Issue4392()\nIssue7484()\npublic void Issue7484()\nIssue8764()", "Links": [] }, { "Number": 19, - "Text": "19 / 89Type ParametersTTestSee AlsoClass1.Test , Class1Calculates the determinant of a 3-dimensional matrix:Returns the smallest value:Returnsdouble\uF1C5public void Issue8764() where T : unmanagedIssue896()public void Issue896()Issue9216()public static double Issue9216()XmlCommentIncludeTag()", + "Text": "19 / 93\nType Parameters\nT\nTest\nSee Also\nClass1.Test , Class1\nCalculates the determinant of a 3-dimensional matrix:\nReturns the smallest value:\nReturns\ndouble\uF1C5\npublic void Issue8764() where T : unmanaged\nIssue896()\npublic void Issue896()\nIssue9216()\npublic static double Issue9216()\nXmlCommentIncludeTag()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.double" @@ -1438,12 +1492,12 @@ }, { "Number": 20, - "Text": "20 / 89This method should do something...RemarksThis is remarks.public void XmlCommentIncludeTag()", + "Text": "20 / 93\nThis method should do something...\nRemarks\nThis is remarks.\npublic void XmlCommentIncludeTag()", "Links": [] }, { "Number": 21, - "Text": "21 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1.Issue8665Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5ConstructorsParametersfoo int\uF1C5Class Class1.Issue8665 PreviewDOCFX001\uF1C5: 'BuildFromProject.Class1.Issue8665' is for evaluation purposes only and issubject to change or removal in future updates.public class Class1.Issue8665\uF12CIssue8665()public Issue8665()Issue8665(int)public Issue8665(int foo)", + "Text": "21 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1.Issue8665\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nConstructors\nParameters\nfoo int\uF1C5\nClass Class1.Issue8665 Preview\nDOCFX001\uF1C5 : 'BuildFromProject.Class1.Issue8665' is for evaluation purposes only and is\nsubject to change or removal in future updates.\npublic class Class1.Issue8665\n\uF12C\nIssue8665()\npublic Issue8665()\nIssue8665(int)\npublic Issue8665(int foo)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1557,7 +1611,7 @@ }, { "Number": 22, - "Text": "22 / 89Parametersfoo int\uF1C5bar char\uF1C5Parametersfoo int\uF1C5bar char\uF1C5baz string\uF1C5PropertiesProperty Valuechar\uF1C5Issue8665(int, char)public Issue8665(int foo, char bar)Issue8665(int, char, string)public Issue8665(int foo, char bar, string baz)Barpublic char Bar { get; }Bazpublic string Baz { get; }", + "Text": "22 / 93\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nbaz string\uF1C5\nProperties\nProperty Value\nchar\uF1C5\nIssue8665(int, char)\npublic Issue8665(int foo, char bar)\nIssue8665(int, char, string)\npublic Issue8665(int foo, char bar, string baz)\nBar\npublic char Bar { get; }\nBaz\npublic string Baz { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -1617,7 +1671,7 @@ }, { "Number": 23, - "Text": "23 / 89Property Valuestring\uF1C5Property Valueint\uF1C5Foopublic int Foo { get; }", + "Text": "23 / 93\nProperty Value\nstring\uF1C5\nProperty Value\nint\uF1C5\nFoo\npublic int Foo { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -1641,7 +1695,7 @@ }, { "Number": 24, - "Text": "24 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Attribute\uF1C5 Class1.Issue8696AttributeInherited MembersAttribute.Equals(object?)\uF1C5 , Attribute.GetCustomAttribute(Assembly, Type)\uF1C5 ,Attribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(MemberInfo, Type)\uF1C5 ,Attribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(Module, Type)\uF1C5 ,Attribute.GetCustomAttribute(Module, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5 ,Attribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(Assembly)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, bool)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, Type)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, bool)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, Type)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(Module)\uF1C5 , Attribute.GetCustomAttributes(Module, bool)\uF1C5 ,Attribute.GetCustomAttributes(Module, Type)\uF1C5 ,Attribute.GetCustomAttributes(Module, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5 ,Class Class1.Issue8696Attribute PreviewDOCFX001\uF1C5: 'BuildFromProject.Class1.Issue8696Attribute' is for evaluation purposesonly and is subject to change or removal in future updates.public class Class1.Issue8696Attribute : Attribute\uF12C\uF12C", + "Text": "24 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Attribute\uF1C5 Class1.Issue8696Attribute\nInherited Members\nAttribute.Equals(object?)\uF1C5 , Attribute.GetCustomAttribute(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(Module, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(Module, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module)\uF1C5 , Attribute.GetCustomAttributes(Module, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(Module, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5 ,\nClass Class1.Issue8696Attribute Preview\nDOCFX001\uF1C5 : 'BuildFromProject.Class1.Issue8696Attribute' is for evaluation purposes\nonly and is subject to change or removal in future updates.\npublic class Class1.Issue8696Attribute : Attribute\n\uF12C \uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1908,7 +1962,7 @@ }, { "Number": 25, - "Text": "25 / 89Attribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5 , Attribute.GetHashCode()\uF1C5 ,Attribute.IsDefaultAttribute()\uF1C5 , Attribute.IsDefined(Assembly, Type)\uF1C5 ,Attribute.IsDefined(Assembly, Type, bool)\uF1C5 , Attribute.IsDefined(MemberInfo, Type)\uF1C5 ,Attribute.IsDefined(MemberInfo, Type, bool)\uF1C5 , Attribute.IsDefined(Module, Type)\uF1C5 ,Attribute.IsDefined(Module, Type, bool)\uF1C5 , Attribute.IsDefined(ParameterInfo, Type)\uF1C5 ,Attribute.IsDefined(ParameterInfo, Type, bool)\uF1C5 , Attribute.Match(object?)\uF1C5 ,Attribute.TypeId\uF1C5 , object.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 ,object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5ConstructorsParametersdescription string\uF1C5?boundsMin int\uF1C5boundsMax int\uF1C5validGameModes string\uF1C5[]?hasMultipleSelections bool\uF1C5enumType Type\uF1C5?Issue8696Attribute(string?, int, int, string[]?, bool,Type?)[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)]public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null)", + "Text": "25 / 93\nAttribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5 , Attribute.GetHashCode()\uF1C5 ,\nAttribute.IsDefaultAttribute()\uF1C5 , Attribute.IsDefined(Assembly, Type)\uF1C5 ,\nAttribute.IsDefined(Assembly, Type, bool)\uF1C5 , Attribute.IsDefined(MemberInfo, Type)\uF1C5 ,\nAttribute.IsDefined(MemberInfo, Type, bool)\uF1C5 , Attribute.IsDefined(Module, Type)\uF1C5 ,\nAttribute.IsDefined(Module, Type, bool)\uF1C5 , Attribute.IsDefined(ParameterInfo, Type)\uF1C5 ,\nAttribute.IsDefined(ParameterInfo, Type, bool)\uF1C5 , Attribute.Match(object?)\uF1C5 ,\nAttribute.TypeId\uF1C5 , object.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nConstructors\nParameters\ndescription string\uF1C5 ?\nboundsMin int\uF1C5\nboundsMax int\uF1C5\nvalidGameModes string\uF1C5 []?\nhasMultipleSelections bool\uF1C5\nenumType Type\uF1C5 ?\nIssue8696Attribute(string?, int, int, string[]?, bool,\nType?)\n[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null,\nfalse, null)]\npublic Issue8696Attribute(string? description = null, int boundsMin = 0, int\nboundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false,\nType? enumType = null)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.attribute.getcustomattributes#system-attribute-getcustomattributes(system-reflection-parameterinfo-system-type-system-boolean)" @@ -2148,7 +2202,7 @@ }, { "Number": 26, - "Text": "26 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1.Issue8948ImplementsClass1.IIssue8948Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsDoes nothing with generic type T.Type ParametersTA generic type.Class Class1.Issue8948 PreviewDOCFX001\uF1C5: 'BuildFromProject.Class1.Issue8948' is for evaluation purposes only and issubject to change or removal in future updates.public class Class1.Issue8948 : Class1.IIssue8948\uF12CDoNothing()public void DoNothing()", + "Text": "26 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1.Issue8948\nImplements\nClass1.IIssue8948\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\nClass Class1.Issue8948 Preview\nDOCFX001\uF1C5 : 'BuildFromProject.Class1.Issue8948' is for evaluation purposes only and is\nsubject to change or removal in future updates.\npublic class Class1.Issue8948 : Class1.IIssue8948\n\uF12C\nDoNothing()\npublic void DoNothing()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2251,7 +2305,7 @@ }, { "Goto": { - "PageNumber": 45, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -2262,7 +2316,7 @@ }, { "Number": 27, - "Text": "27 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 Class1.TestInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Class Class1.Test PreviewDOCFX001\uF1C5: 'BuildFromProject.Class1.Test' is for evaluation purposes only and issubject to change or removal in future updates.public class Class1.Test\uF12C", + "Text": "27 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Class1.Test\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass Class1.Test Preview\nDOCFX001\uF1C5 : 'BuildFromProject.Class1.Test' is for evaluation purposes only and is\nsubject to change or removal in future updates.\npublic class Class1.Test\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2367,7 +2421,7 @@ }, { "Number": 28, - "Text": "28 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllClass representing a dog.Inheritanceobject\uF1C5 DogInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5ConstructorsConstructor.Parametersname string\uF1C5Name of the dog.age int\uF1C5Age of the dog.Class Dogpublic class Dog\uF12CDog(string, int)public Dog(string name, int age)", + "Text": "28 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nClass representing a dog.\nInheritance\nobject\uF1C5 Dog\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nConstructors\nConstructor.\nParameters\nname string\uF1C5\nName of the dog.\nage int\uF1C5\nAge of the dog.\nClass Dog\npublic class Dog\n\uF12C\nDog(string, int)\npublic Dog(string name, int age)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2481,7 +2535,7 @@ }, { "Number": 29, - "Text": "29 / 89PropertiesAge of the dog.Property Valueint\uF1C5Name of the dog.Property Valuestring\uF1C5Agepublic int Age { get; }Namepublic string Name { get; }", + "Text": "29 / 93\nProperties\nAge of the dog.\nProperty Value\nint\uF1C5\nName of the dog.\nProperty Value\nstring\uF1C5\nAge\npublic int Age { get; }\nName\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -2505,7 +2559,7 @@ }, { "Number": 30, - "Text": "30 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 InheritdocImplementsIInheritdoc , IDisposable\uF1C5Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsPerforms application-defined tasks associated with freeing, releasing, or resettingunmanaged resources.This method should do something...Class Inheritdocpublic class Inheritdoc : IInheritdoc, IDisposable\uF12CDispose()public void Dispose()Issue7628()public void Issue7628()", + "Text": "30 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc\nImplements\nIInheritdoc , IDisposable\uF1C5\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nPerforms application-defined tasks associated with freeing, releasing, or resetting\nunmanaged resources.\nThis method should do something...\nClass Inheritdoc\npublic class Inheritdoc : IInheritdoc, IDisposable\n\uF12C\nDispose()\npublic void Dispose()\nIssue7628()\npublic void Issue7628()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2608,7 +2662,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 49, "Type": 2, "Coordinates": { "Top": 0 @@ -2619,12 +2673,12 @@ }, { "Number": 31, - "Text": "31 / 89This method should do something...Issue7629()public void Issue7629()", + "Text": "31 / 93\nThis method should do something...\nIssue7629()\npublic void Issue7629()", "Links": [] }, { "Number": 32, - "Text": "32 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue6366Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Class Inheritdoc.Issue6366public class Inheritdoc.Issue6366\uF12C", + "Text": "32 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass Inheritdoc.Issue6366\npublic class Inheritdoc.Issue6366\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2720,7 +2774,7 @@ }, { "Number": 33, - "Text": "33 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 Inheritdoc.Issue6366.Class1Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsThis text inherited.Parametersparm1 TThis text NOT inherited.parm2 int\uF1C5This text inherited.Class Inheritdoc.Issue6366.Class1public abstract class Inheritdoc.Issue6366.Class1\uF12CTestMethod1(T, int)public abstract T TestMethod1(T parm1, int parm2)", + "Text": "33 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366.Class1\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nThis text inherited.\nParameters\nparm1 T\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nClass Inheritdoc.Issue6366.Class1\npublic abstract class Inheritdoc.Issue6366.Class1\n\uF12C\nTestMethod1(T, int)\npublic abstract T TestMethod1(T parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2825,12 +2879,12 @@ }, { "Number": 34, - "Text": "34 / 89ReturnsTThis text inherited.", + "Text": "34 / 93\nReturns\nT\nThis text inherited.", "Links": [] }, { "Number": 35, - "Text": "35 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2Inherited MembersInheritdoc.Issue6366.Class1.TestMethod1(bool, int) , object.Equals(object?)\uF1C5 ,object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,object.ToString()\uF1C5MethodsThis text inherited.Parametersparm1 bool\uF1C5This text NOT inherited.parm2 int\uF1C5This text inherited.Returnsbool\uF1C5Class Inheritdoc.Issue6366.Class2public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1\uF12C\uF12CTestMethod1(bool, int)public override bool TestMethod1(bool parm1, int parm2)", + "Text": "35 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2\nInherited Members\nInheritdoc.Issue6366.Class1.TestMethod1(bool, int) , object.Equals(object?)\uF1C5 ,\nobject.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nThis text inherited.\nParameters\nparm1 bool\uF1C5\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nReturns\nbool\uF1C5\nClass Inheritdoc.Issue6366.Class2\npublic class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1\n\uF12C \uF12C\nTestMethod1(bool, int)\npublic override bool TestMethod1(bool parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2971,12 +3025,12 @@ }, { "Number": 36, - "Text": "36 / 89This text inherited.", + "Text": "36 / 93\nThis text inherited.", "Links": [] }, { "Number": 37, - "Text": "37 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue7035Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsClass Inheritdoc.Issue7035public class Inheritdoc.Issue7035\uF12CA()public void A()B()public void B()", + "Text": "37 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue7035\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nClass Inheritdoc.Issue7035\npublic class Inheritdoc.Issue7035\n\uF12C\nA()\npublic void A()\nB()\npublic void B()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3072,7 +3126,7 @@ }, { "Number": 38, - "Text": "38 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllThis is a test class to have something for DocFX to document.Inheritanceobject\uF1C5 Inheritdoc.Issue7484Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5RemarksWe're going to talk about things now.BoolReturningMethod(bool)Simple method to generate docs for.DoDadA string that could have something.ConstructorsThis is a constructor to document.Class Inheritdoc.Issue7484public class Inheritdoc.Issue7484\uF12CIssue7484()public Issue7484()", + "Text": "38 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nThis is a test class to have something for DocFX to document.\nInheritance\nobject\uF1C5 Inheritdoc.Issue7484\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nRemarks\nWe're going to talk about things now.\nBoolReturningMethod(bool) Simple method to generate docs for.\nDoDad A string that could have something.\nConstructors\nThis is a constructor to document.\nClass Inheritdoc.Issue7484\npublic class Inheritdoc.Issue7484\n\uF12C\nIssue7484()\npublic Issue7484()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3183,7 +3237,7 @@ }, { "Number": 39, - "Text": "39 / 89PropertiesA string that could have something.Property Valuestring\uF1C5MethodsSimple method to generate docs for.Parameterssource bool\uF1C5A meaningless boolean value, much like most questions in the world.Returnsbool\uF1C5An exactly equivalently meaningless boolean value, much like most answers in the world.RemarksI'd like to take a moment to thank all of those who helped me get to a place where I canwrite documentation like this.DoDadpublic string DoDad { get; }BoolReturningMethod(bool)public bool BoolReturningMethod(bool source)", + "Text": "39 / 93\nProperties\nA string that could have something.\nProperty Value\nstring\uF1C5\nMethods\nSimple method to generate docs for.\nParameters\nsource bool\uF1C5\nA meaningless boolean value, much like most questions in the world.\nReturns\nbool\uF1C5\nAn exactly equivalently meaningless boolean value, much like most answers in the world.\nRemarks\nI'd like to take a moment to thank all of those who helped me get to a place where I can\nwrite documentation like this.\nDoDad\npublic string DoDad { get; }\nBoolReturningMethod(bool)\npublic bool BoolReturningMethod(bool source)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -3216,7 +3270,7 @@ }, { "Number": 40, - "Text": "40 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue8101Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsCreate a new tween.Parametersfrom float\uF1C5The starting value.to float\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.Class Inheritdoc.Issue8101public class Inheritdoc.Issue8101\uF12CTween(float, float, float, Action<float>)public static object Tween(float from, float to, float duration, Action onChange)", + "Text": "40 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue8101\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nCreate a new tween.\nParameters\nfrom float\uF1C5\nThe starting value.\nto float\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nClass Inheritdoc.Issue8101\npublic class Inheritdoc.Issue8101\n\uF12C\nTween(float, float, float, Action)\npublic static object Tween(float from, float to, float duration,\nAction onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3339,7 +3393,7 @@ }, { "Number": 41, - "Text": "41 / 89onChange Action\uF1C5<float\uF1C5>A callback that will be invoked every time the tween value changes.Returnsobject\uF1C5The newly created tween instance.Create a new tween.Parametersfrom int\uF1C5The starting value.to int\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.onChange Action\uF1C5A callback that will be invoked every time the tween value changes.Returnsobject\uF1C5The newly created tween instance.Tween(int, int, float, Action)public static object Tween(int from, int to, float duration, Action onChange)", + "Text": "41 / 93\nonChange Action\uF1C5 \nA callback that will be invoked every time the tween value changes.\nReturns\nobject\uF1C5\nThe newly created tween instance.\nCreate a new tween.\nParameters\nfrom int\uF1C5\nThe starting value.\nto int\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nonChange Action\uF1C5 \nA callback that will be invoked every time the tween value changes.\nReturns\nobject\uF1C5\nThe newly created tween instance.\nTween(int, int, float, Action)\npublic static object Tween(int from, int to, float duration, Action onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.action-1" @@ -3426,7 +3480,7 @@ }, { "Number": 42, - "Text": "42 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllA nice classInheritanceobject\uF1C5 Issue8725Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsAnother nice operationA nice operationSee AlsoClass1Class Issue8725public class Issue8725\uF12CMoreOperations()public void MoreOperations()MyOperation()public void MyOperation()", + "Text": "42 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue9736\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass Inheritdoc.Issue9736\npublic class Inheritdoc.Issue9736\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3517,27 +3571,22 @@ "Top": 0 } } - }, - { - "Goto": { - "PageNumber": 15, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } } ] }, { "Number": 43, - "Text": "43 / 89", - "Links": [] - }, - { - "Number": 44, - "Text": "44 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5ConstructorsParametersfoo string\uF1C5Struct Inheritdoc.Issue8129public struct Inheritdoc.Issue8129Issue8129(string)public Issue8129(string foo)", + "Text": "43 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue9736.JsonApiOptions\nImplements\nInheritdoc.Issue9736.IJsonApiOptions\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nProperties\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\nClass Inheritdoc.Issue9736.JsonApiOptions\npublic sealed class Inheritdoc.Issue9736.JsonApiOptions :\nInheritdoc.Issue9736.IJsonApiOptions\n\uF12C\nUseRelativeLinks\npublic bool UseRelativeLinks { get; set; }\noptions.UseRelativeLinks = true;", "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" }, @@ -3593,13 +3642,13 @@ "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { "Goto": { @@ -3609,64 +3658,19 @@ "Top": 0 } } - } - ] - }, - { - "Number": 45, - "Text": "45 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllMethodsDoes nothing with generic type T.Type ParametersTA generic type.Interface Class1.IIssue8948 PreviewDOCFX001\uF1C5: 'BuildFromProject.Class1.IIssue8948' is for evaluation purposes only andis subject to change or removal in future updates.public interface Class1.IIssue8948DoNothing()void DoNothing()", - "Links": [ - { - "Uri": "https://example.org/DOCFX001" - }, - { - "Uri": "https://example.org/DOCFX001" - }, - { - "Uri": "https://example.org/DOCFX001" }, { "Goto": { - "PageNumber": 8, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - } - ] - }, - { - "Number": 46, - "Text": "46 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllMethodsThis method should do something...Interface IInheritdocpublic interface IInheritdocIssue7629()void Issue7629()", - "Links": [ - { - "Goto": { - "PageNumber": 8, + "PageNumber": 43, "Type": 2, "Coordinates": { "Top": 0 } } - } - ] - }, - { - "Number": 47, - "Text": "47 / 89Namespace:BuildFromProjectAssembly:BuildFromProject.dllFieldsValue = 0This is a regular enum value.This is a remarks section. Very important remarks about Value go here.OldAndUnusedValue = 1 DeprecatedThis is old and unused. You shouldn't use it anymore.Don't use this, seriously! Use Value instead.OldAndUnusedValue2 = 2 DeprecatedThis is old and unused. You shouldn't use it anymore.Don't use this, seriously! Use Value instead.Enum Class1.Issue9260 PreviewDOCFX001\uF1C5: 'BuildFromProject.Class1.Issue9260' is for evaluation purposes only and issubject to change or removal in future updates.public enum Class1.Issue9260Use Value", - "Links": [ - { - "Uri": "https://example.org/DOCFX001" - }, - { - "Uri": "https://example.org/DOCFX001" - }, - { - "Uri": "https://example.org/DOCFX001" }, { "Goto": { - "PageNumber": 8, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -3676,32 +3680,13 @@ ] }, { - "Number": 48, - "Text": "48 / 89ClassesBaseClass1This is the BaseClassClass1This is summary from vb class...Namespace BuildFromVBSourceCode", - "Links": [ - { - "Goto": { - "PageNumber": 49, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - }, - { - "Goto": { - "PageNumber": 50, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - } - ] + "Number": 44, + "Text": "44 / 93\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", + "Links": [] }, { - "Number": 49, - "Text": "49 / 89Namespace:BuildFromVBSourceCodeThis is the BaseClassInheritanceobject\uF1C5 BaseClass1DerivedClass1Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5MethodsParameterskeyword Class1ReturnsDateTime\uF1C5Class BaseClass1public abstract class BaseClass1\uF12CWithDeclarationKeyword(Class1)public abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Number": 45, + "Text": "45 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nA nice class\nInheritance\nobject\uF1C5 Issue8725\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nAnother nice operation\nA nice operation\nSee Also\nClass1\nClass Issue8725\npublic class Issue8725\n\uF12C\nMoreOperations()\npublic void MoreOperations()\nMyOperation()\npublic void MyOperation()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3730,15 +3715,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -3784,27 +3760,9 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" - }, - { - "Goto": { - "PageNumber": 48, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - }, { "Goto": { - "PageNumber": 49, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -3813,7 +3771,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -3822,7 +3780,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 15, "Type": 2, "Coordinates": { "Top": 0 @@ -3832,18 +3790,14 @@ ] }, { - "Number": 50, - "Text": "50 / 89Namespace:BuildFromVBSourceCodeThis is summary from vb class...Inheritanceobject\uF1C5 BaseClass1 Class1Inherited MembersBaseClass1.WithDeclarationKeyword(Class1) , object.Equals(object)\uF1C5 ,object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5FieldsThis is a Value typeField ValueClass1PropertiesClass Class1public class Class1 : BaseClass1\uF12C\uF12CValueClasspublic Class1 ValueClassKeyword DeprecatedThis member is obsolete.", + "Number": 46, + "Text": "46 / 93", + "Links": [] + }, + { + "Number": 47, + "Text": "47 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nConstructors\nParameters\nfoo string\uF1C5\nStruct Inheritdoc.Issue8129\npublic struct Inheritdoc.Issue8129\nIssue8129(string)\npublic Issue8129(string foo)", "Links": [ - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" }, @@ -3862,15 +3816,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -3890,13 +3835,352 @@ "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + }, + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 48, + "Text": "48 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\nInterface Class1.IIssue8948 Preview\nDOCFX001\uF1C5 : 'BuildFromProject.Class1.IIssue8948' is for evaluation purposes only and\nis subject to change or removal in future updates.\npublic interface Class1.IIssue8948\nDoNothing()\nvoid DoNothing()", + "Links": [ + { + "Uri": "https://example.org/DOCFX001" + }, + { + "Uri": "https://example.org/DOCFX001" + }, + { + "Uri": "https://example.org/DOCFX001" + }, + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 49, + "Text": "49 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nThis method should do something...\nInterface IInheritdoc\npublic interface IInheritdoc\nIssue7629()\nvoid Issue7629()", + "Links": [ + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 50, + "Text": "50 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nProperties\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\nInterface\nInheritdoc.Issue9736.IJsonApiOptions\npublic interface Inheritdoc.Issue9736.IJsonApiOptions\nUseRelativeLinks\nbool UseRelativeLinks { get; }\noptions.UseRelativeLinks = true;\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 51, + "Text": "51 / 93\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nFields\nValue = 0\nThis is a regular enum value.\nThis is a remarks section. Very important remarks about Value go here.\nOldAndUnusedValue = 1 Deprecated\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\nOldAndUnusedValue2 = 2 Deprecated\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\nEnum Class1.Issue9260 Preview\nDOCFX001\uF1C5 : 'BuildFromProject.Class1.Issue9260' is for evaluation purposes only and is\nsubject to change or removal in future updates.\npublic enum Class1.Issue9260\nUse Value", + "Links": [ + { + "Uri": "https://example.org/DOCFX001" + }, + { + "Uri": "https://example.org/DOCFX001" + }, + { + "Uri": "https://example.org/DOCFX001" + }, + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 52, + "Text": "52 / 93\nClasses\nBaseClass1\nThis is the BaseClass\nClass1\nThis is summary from vb class...\nNamespace BuildFromVBSourceCode", + "Links": [ + { + "Goto": { + "PageNumber": 53, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 54, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 53, + "Text": "53 / 93\nNamespace: BuildFromVBSourceCode\nThis is the BaseClass\nInheritance\nobject\uF1C5 BaseClass1\nDerived\nClass1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nMethods\nParameters\nkeyword Class1\nReturns\nDateTime\uF1C5\nClass BaseClass1\npublic abstract class BaseClass1\n\uF12C\nWithDeclarationKeyword(Class1)\npublic abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Goto": { + "PageNumber": 52, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 53, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 54, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 54, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 54, + "Text": "54 / 93\nNamespace: BuildFromVBSourceCode\nThis is summary from vb class...\nInheritance\nobject\uF1C5 BaseClass1 Class1\nInherited Members\nBaseClass1.WithDeclarationKeyword(Class1) , object.Equals(object)\uF1C5 ,\nobject.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nFields\nThis is a Value type\nField Value\nClass1\nProperties\nClass Class1\npublic class Class1 : BaseClass1\n\uF12C \uF12C\nValueClass\npublic Class1 ValueClass\nKeyword Deprecated\nThis member is obsolete.", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" @@ -3918,7 +4202,7 @@ }, { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -3927,7 +4211,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -3936,7 +4220,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -3945,7 +4229,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Coordinates": { "Left": 0, "Top": 336 @@ -3954,7 +4238,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -3964,8 +4248,8 @@ ] }, { - "Number": 51, - "Text": "51 / 89Property ValueClass1MethodsThis is a FunctionParametersname string\uF1C5Name as the String valueReturnsint\uF1C5Returns AhoooWhat is Sub?Parameterskeyword Class1[Obsolete(\"This member is obsolete.\", true)]public Class1 Keyword { get; }Value(string)public int Value(string name)WithDeclarationKeyword(Class1)public override DateTime WithDeclarationKeyword(Class1 keyword)", + "Number": 55, + "Text": "55 / 93\nProperty Value\nClass1\nMethods\nThis is a Function\nParameters\nname string\uF1C5\nName as the String value\nReturns\nint\uF1C5\nReturns Ahooo\nWhat is Sub?\nParameters\nkeyword Class1\n[Obsolete(\"This member is obsolete.\", true)]\npublic Class1 Keyword { get; }\nValue(string)\npublic int Value(string name)\nWithDeclarationKeyword(Class1)\npublic override DateTime WithDeclarationKeyword(Class1 keyword)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -3987,7 +4271,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -3996,7 +4280,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -4006,8 +4290,8 @@ ] }, { - "Number": 52, - "Text": "52 / 89ReturnsDateTime\uF1C5", + "Number": 56, + "Text": "56 / 93\nReturns\nDateTime\uF1C5", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" @@ -4021,12 +4305,12 @@ ] }, { - "Number": 53, - "Text": "53 / 89NamespacesCatLibrary.CoreClassesCatHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classCatExceptionComplexICatExtensionIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classTomTom class is only inherit from Object. Not any member inside itself.TomFromBaseClassTomFromBaseClass inherits from @InterfacesIAnimalThis is basic interface of all animal.ICatNamespace CatLibrary", + "Number": 57, + "Text": "57 / 93\nNamespaces\nCatLibrary.Core\nClasses\nCat\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nCatException\nComplex\nICatExtension\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nTom\nTom class is only inherit from Object. Not any member inside itself.\nTomFromBaseClass\nTomFromBaseClass inherits from @\nInterfaces\nIAnimal\nThis is basic interface of all animal.\nICat\nNamespace CatLibrary", "Links": [ { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4035,7 +4319,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -4050,7 +4334,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -4059,7 +4343,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -4068,7 +4352,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -4077,7 +4361,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -4086,7 +4370,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -4095,7 +4379,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -4104,7 +4388,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -4114,12 +4398,12 @@ ] }, { - "Number": 54, - "Text": "54 / 89Cat's interfaceDelegatesFakeDelegateFake delegateMRefDelegateGeneric delegate with many constrains.MRefNormalDelegateDelegate in the namespace", + "Number": 58, + "Text": "58 / 93\nCat's interface\nDelegates\nFakeDelegate\nFake delegate\nMRefDelegate\nGeneric delegate with many constrains.\nMRefNormalDelegate\nDelegate in the namespace", "Links": [ { "Goto": { - "PageNumber": 83, + "PageNumber": 87, "Type": 2, "Coordinates": { "Top": 0 @@ -4128,7 +4412,7 @@ }, { "Goto": { - "PageNumber": 84, + "PageNumber": 88, "Type": 2, "Coordinates": { "Top": 0 @@ -4137,7 +4421,7 @@ }, { "Goto": { - "PageNumber": 85, + "PageNumber": 89, "Type": 2, "Coordinates": { "Top": 0 @@ -4147,12 +4431,12 @@ ] }, { - "Number": 55, - "Text": "55 / 89ClassesContainersRefType.ContainersRefTypeChildExplicitLayoutClassIssue231Issue231StructsContainersRefTypeStruct ContainersRefTypeInterfacesContainersRefType.ContainersRefTypeChildInterfaceEnumsContainersRefType.ColorTypeEnumeration ColorTypeDelegatesContainersRefType.ContainersRefTypeDelegateDelegate ContainersRefTypeDelegateNamespace CatLibrary.Core", + "Number": 59, + "Text": "59 / 93\nClasses\nContainersRefType.ContainersRefTypeChild\nExplicitLayoutClass\nIssue231\nIssue231\nStructs\nContainersRefType\nStruct ContainersRefType\nInterfaces\nContainersRefType.ContainersRefTypeChildInterface\nEnums\nContainersRefType.ColorType\nEnumeration ColorType\nDelegates\nContainersRefType.ContainersRefTypeDelegate\nDelegate ContainersRefTypeDelegate\nNamespace CatLibrary.Core", "Links": [ { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4161,7 +4445,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -4170,7 +4454,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4179,7 +4463,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4188,7 +4472,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -4197,7 +4481,7 @@ }, { "Goto": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -4206,7 +4490,7 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 66, "Type": 2, "Coordinates": { "Top": 0 @@ -4215,7 +4499,7 @@ }, { "Goto": { - "PageNumber": 63, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -4225,8 +4509,8 @@ ] }, { - "Number": 56, - "Text": "56 / 89Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInheritanceobject\uF1C5 ContainersRefType.ContainersRefTypeChildInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5ClassContainersRefType.ContainersRefTypeChildpublic class ContainersRefType.ContainersRefTypeChild\uF12C", + "Number": 60, + "Text": "60 / 93\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ContainersRefType.ContainersRefTypeChild\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass\nContainersRefType.ContainersRefTypeChild\npublic class ContainersRefType.ContainersRefTypeChild\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4302,7 +4586,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4311,7 +4595,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4321,8 +4605,8 @@ ] }, { - "Number": 57, - "Text": "57 / 89Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInheritanceobject\uF1C5 ExplicitLayoutClassInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Class ExplicitLayoutClasspublic class ExplicitLayoutClass\uF12C", + "Number": 61, + "Text": "61 / 93\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ExplicitLayoutClass\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass ExplicitLayoutClass\npublic class ExplicitLayoutClass\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4398,7 +4682,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4407,7 +4691,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -4417,8 +4701,8 @@ ] }, { - "Number": 58, - "Text": "58 / 89Namespace:CatLibrary.CoreAssembly:CatLibrary.dll, CatLibrary.Core.dllInheritanceobject\uF1C5 Issue231Inherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsParametersc ContainersRefTypeParametersc ContainersRefTypeClass Issue231public static class Issue231\uF12CBar(ContainersRefType)public static void Bar(this ContainersRefType c)Foo(ContainersRefType)public static void Foo(this ContainersRefType c)", + "Number": 62, + "Text": "62 / 93\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.dll, CatLibrary.Core.dll\nInheritance\nobject\uF1C5 Issue231\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nParameters\nc ContainersRefType\nParameters\nc ContainersRefType\nClass Issue231\npublic static class Issue231\n\uF12C\nBar(ContainersRefType)\npublic static void Bar(this ContainersRefType c)\nFoo(ContainersRefType)\npublic static void Foo(this ContainersRefType c)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4494,7 +4778,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4503,7 +4787,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4512,7 +4796,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -4521,7 +4805,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -4531,8 +4815,8 @@ ] }, { - "Number": 59, - "Text": "59 / 89Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllStruct ContainersRefTypeInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Extension MethodsIssue231.Bar(ContainersRefType) , Issue231.Foo(ContainersRefType)FieldsColorCountField Valuelong\uF1C5PropertiesGetColorCountStruct ContainersRefTypepublic struct ContainersRefTypeColorCountpublic long ColorCountGetColorCount", + "Number": 63, + "Text": "63 / 93\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nStruct ContainersRefType\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nExtension Methods\nIssue231.Bar(ContainersRefType) , Issue231.Foo(ContainersRefType)\nFields\nColorCount\nField Value\nlong\uF1C5\nProperties\nGetColorCount\nStruct ContainersRefType\npublic struct ContainersRefType\nColorCount\npublic long ColorCount\nGetColorCount", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" @@ -4599,7 +4883,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4608,7 +4892,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Coordinates": { "Left": 0, "Top": 408 @@ -4617,7 +4901,7 @@ }, { "Goto": { - "PageNumber": 58, + "PageNumber": 62, "Coordinates": { "Left": 0, "Top": 232.5 @@ -4627,8 +4911,8 @@ ] }, { - "Number": 60, - "Text": "60 / 89Property Valuelong\uF1C5MethodsContainersRefTypeNonRefMethodarrayParametersparmsArray object\uF1C5[]Returnsint\uF1C5Event TypeEventHandler\uF1C5public long GetColorCount { get; }ContainersRefTypeNonRefMethod(params object[])public static int ContainersRefTypeNonRefMethod(params object[] parmsArray)ContainersRefTypeEventHandlerpublic event EventHandler ContainersRefTypeEventHandler", + "Number": 64, + "Text": "64 / 93\nProperty Value\nlong\uF1C5\nMethods\nContainersRefTypeNonRefMethod\narray\nParameters\nparmsArray object\uF1C5 []\nReturns\nint\uF1C5\nEvent Type\nEventHandler\uF1C5\npublic long GetColorCount { get; }\nContainersRefTypeNonRefMethod(params object[])\npublic static int ContainersRefTypeNonRefMethod(params object[] parmsArray)\nContainersRefTypeEventHandler\npublic event EventHandler ContainersRefTypeEventHandler", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -4669,12 +4953,12 @@ ] }, { - "Number": 61, - "Text": "61 / 89Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInterfaceContainersRefType.ContainersRefTypeChildInterfacepublic interface ContainersRefType.ContainersRefTypeChildInterface", + "Number": 65, + "Text": "65 / 93\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInterface\nContainersRefType.ContainersRefTypeChild\nInterface\npublic interface ContainersRefType.ContainersRefTypeChildInterface", "Links": [ { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4684,12 +4968,12 @@ ] }, { - "Number": 62, - "Text": "62 / 89Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllEnumeration ColorTypeFieldsRed = 0redBlue = 1blueYellow = 2yellowEnum ContainersRefType.ColorTypepublic enum ContainersRefType.ColorType", + "Number": 66, + "Text": "66 / 93\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nEnumeration ColorType\nFields\nRed = 0\nred\nBlue = 1\nblue\nYellow = 2\nyellow\nEnum ContainersRefType.ColorType\npublic enum ContainersRefType.ColorType", "Links": [ { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4699,12 +4983,12 @@ ] }, { - "Number": 63, - "Text": "63 / 89Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllDelegate ContainersRefTypeDelegateDelegateContainersRefType.ContainersRefTypeDelegatepublic delegate void ContainersRefType.ContainersRefTypeDelegate()", + "Number": 67, + "Text": "67 / 93\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nDelegate ContainersRefTypeDelegate\nDelegate\nContainersRefType.ContainersRefTypeDele\ngate\npublic delegate void ContainersRefType.ContainersRefTypeDelegate()", "Links": [ { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4714,8 +4998,8 @@ ] }, { - "Number": 64, - "Text": "64 / 89Namespace:CatLibraryAssembly:CatLibrary.dllHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classType ParametersTThis type should be class and can new instance.KThis type is a struct type, class type can't be used for this parameter.Inheritanceobject\uF1C5 CatImplementsICat , IAnimalInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Class Cat Deprecated[Serializable][Obsolete]public class Cat : ICat, IAnimal where T : class, new() where K : struct\uF12C", + "Number": 68, + "Text": "68 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nType Parameters\nT\nThis type should be class and can new instance.\nK\nThis type is a struct type, class type can't be used for this parameter.\nInheritance\nobject\uF1C5 Cat\nImplements\nICat , IAnimal\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass Cat Deprecated\n[Serializable]\n[Obsolete]\npublic class Cat : ICat, IAnimal where T : class, new() where K : struct\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4791,7 +5075,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -4806,7 +5090,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -4815,7 +5099,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -4824,7 +5108,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -4834,12 +5118,12 @@ ] }, { - "Number": 65, - "Text": "65 / 89Extension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)ExamplesHere's example of how to create an instance of this class. As T is limited with class and K islimited with struct.As you see, here we bring in pointer so we need to add unsafe keyword.RemarksHere's all the content you can see in this class.ConstructorsDefault constructor.Constructor with one generic parameter.var a = new Cat(object, int)();int catNumber = new int();unsafe{ a.GetFeetLength(catNumber);}Cat()public Cat()Cat(T)public Cat(T ownType)", + "Number": 69, + "Text": "69 / 93\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)\nExamples\nHere's example of how to create an instance of this class. As T is limited with class and K is\nlimited with struct.\nAs you see, here we bring in pointer so we need to add unsafe keyword.\nRemarks\nHere's all the content you can see in this class.\nConstructors\nDefault constructor.\nConstructor with one generic parameter.\nvar a = new Cat(object, int)();\nint catNumber = new int();\nunsafe\n{ \na.GetFeetLength(catNumber);\n}\nCat()\npublic Cat()\nCat(T)\npublic Cat(T ownType)", "Links": [ { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Coordinates": { "Left": 0, "Top": 318 @@ -4848,7 +5132,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 792 @@ -4858,8 +5142,8 @@ ] }, { - "Number": 66, - "Text": "66 / 89ParametersownType TThis parameter type defined by class.It's a complex constructor. The parameter will have some attributes.ParametersnickName string\uF1C5it's string type.age int\uF1C5It's an out and ref parameter.realName string\uF1C5It's an out paramter.isHealthy bool\uF1C5It's an in parameter.FieldsField with attribute.Cat(string, out int, string, bool)public Cat(string nickName, out int age, string realName, bool isHealthy)isHealthy Deprecated[ContextStatic][NonSerialized][Obsolete]public bool isHealthy", + "Number": 70, + "Text": "70 / 93\nParameters\nownType T\nThis parameter type defined by class.\nIt's a complex constructor. The parameter will have some attributes.\nParameters\nnickName string\uF1C5\nit's string type.\nage int\uF1C5\nIt's an out and ref parameter.\nrealName string\uF1C5\nIt's an out paramter.\nisHealthy bool\uF1C5\nIt's an in parameter.\nFields\nField with attribute.\nCat(string, out int, string, bool)\npublic Cat(string nickName, out int age, string realName, bool isHealthy)\nisHealthy Deprecated\n[ContextStatic]\n[NonSerialized]\n[Obsolete]\npublic bool isHealthy", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -4900,8 +5184,8 @@ ] }, { - "Number": 67, - "Text": "67 / 89Field Valuebool\uF1C5PropertiesHint cat's age.Property Valueint\uF1C5EII property.Property Valuestring\uF1C5This is index property of Cat. You can see that the visibility is different between get and setmethod.Property ValueAge Deprecated[Obsolete]protected int Age { get; set; }Namepublic string Name { get; }this[string]public int this[string a] { protected get; set; }", + "Number": 71, + "Text": "71 / 93\nField Value\nbool\uF1C5\nProperties\nHint cat's age.\nProperty Value\nint\uF1C5\nEII property.\nProperty Value\nstring\uF1C5\nThis is index property of Cat. You can see that the visibility is different between get and set\nmethod.\nProperty Value\nAge Deprecated\n[Obsolete]\nprotected int Age { get; set; }\nName\npublic string Name { get; }\nthis[string]\npublic int this[string a] { protected get; set; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" @@ -4933,8 +5217,8 @@ ] }, { - "Number": 68, - "Text": "68 / 89int\uF1C5MethodsIt's a method with complex return type.Parametersdate DateTime\uF1C5Date time to now.ReturnsDictionary\uF1C5>It's a relationship map of different kind food.Override the method of Object.Equals(object obj).Parametersobj object\uF1C5Can pass any class type.Returnsbool\uF1C5The return value tell you whehter the compare operation is successful.CalculateFood(DateTime)public Dictionary> CalculateFood(DateTime date)Equals(object)public override bool Equals(object obj)", + "Number": 72, + "Text": "72 / 93\nint\uF1C5\nMethods\nIt's a method with complex return type.\nParameters\ndate DateTime\uF1C5\nDate time to now.\nReturns\nDictionary\uF1C5 >\nIt's a relationship map of different kind food.\nOverride the method of Object.Equals(object obj).\nParameters\nobj object\uF1C5\nCan pass any class type.\nReturns\nbool\uF1C5\nThe return value tell you whehter the compare operation is successful.\nCalculateFood(DateTime)\npublic Dictionary> CalculateFood(DateTime date)\nEquals(object)\npublic override bool Equals(object obj)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -5011,8 +5295,8 @@ ] }, { - "Number": 69, - "Text": "69 / 89It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.ParameterscatName int\uF1C5*Thie represent for cat name length.parameters object\uF1C5[]Optional parameters.Returnslong\uF1C5Return cat tail's length.This method have attribute above it.ParametersownType TType come from class define.anotherOwnType KType come from class define.cheat bool\uF1C5Hint whether this cat has cheat mode.GetTailLength(int*, params object[])public long GetTailLength(int* catName, params object[] parameters)Jump(T, K, ref bool)[Conditional(\"Debug\")]public void Jump(T ownType, K anotherOwnType, ref bool cheat)", + "Number": 73, + "Text": "73 / 93\nIt's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.\nParameters\ncatName int\uF1C5 *\nThie represent for cat name length.\nparameters object\uF1C5 []\nOptional parameters.\nReturns\nlong\uF1C5\nReturn cat tail's length.\nThis method have attribute above it.\nParameters\nownType T\nType come from class define.\nanotherOwnType K\nType come from class define.\ncheat bool\uF1C5\nHint whether this cat has cheat mode.\nGetTailLength(int*, params object[])\npublic long GetTailLength(int* catName, params object[] parameters)\nJump(T, K, ref bool)\n[Conditional(\"Debug\")]\npublic void Jump(T ownType, K anotherOwnType, ref bool cheat)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -5053,8 +5337,8 @@ ] }, { - "Number": 70, - "Text": "70 / 89ExceptionsArgumentException\uF1C5This is an argument exceptionEat event of this catEvent TypeEventHandler\uF1C5OperatorsAddition operator of this class.Parameterslsr Cat..rsr int\uF1C5~~ReturnsownEat DeprecatedThis event handler is deprecated.[Obsolete(\"This _event handler_ is deprecated.\")]public event EventHandler ownEatoperator +(Cat, int)public static int operator +(Cat lsr, int rsr)", + "Number": 74, + "Text": "74 / 93\nExceptions\nArgumentException\uF1C5\nThis is an argument exception\nEat event of this cat\nEvent Type\nEventHandler\uF1C5\nOperators\nAddition operator of this class.\nParameters\nlsr Cat\n..\nrsr int\uF1C5\n~~\nReturns\nownEat Deprecated\nThis event handler is deprecated.\n[Obsolete(\"This _event handler_ is deprecated.\")]\npublic event EventHandler ownEat\noperator +(Cat, int)\npublic static int operator +(Cat lsr, int rsr)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.argumentexception" @@ -5085,7 +5369,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -5095,8 +5379,8 @@ ] }, { - "Number": 71, - "Text": "71 / 89int\uF1C5Result with int type.Expilicit operator of this class.It means this cat can evolve to change to Tom. Tom and Jerry.Parameterssrc CatInstance of this class.ReturnsTomAdvanced class type of cat.Similar with operaotr +, refer to that topic.Parameterslsr Catrsr int\uF1C5Returnsint\uF1C5explicit operator Tom(Cat)public static explicit operator Tom(Cat src)operator -(Cat, int)public static int operator -(Cat lsr, int rsr)", + "Number": 75, + "Text": "75 / 93\nint\uF1C5\nResult with int type.\nExpilicit operator of this class.\nIt means this cat can evolve to change to Tom. Tom and Jerry.\nParameters\nsrc Cat\nInstance of this class.\nReturns\nTom\nAdvanced class type of cat.\nSimilar with operaotr +, refer to that topic.\nParameters\nlsr Cat\nrsr int\uF1C5\nReturns\nint\uF1C5\nexplicit operator Tom(Cat)\npublic static explicit operator Tom(Cat src)\noperator -(Cat, int)\npublic static int operator -(Cat lsr, int rsr)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -5127,7 +5411,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -5136,7 +5420,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -5145,7 +5429,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -5155,13 +5439,13 @@ ] }, { - "Number": 72, - "Text": "72 / 89", + "Number": 76, + "Text": "76 / 93", "Links": [] }, { - "Number": 73, - "Text": "73 / 89Namespace:CatLibraryAssembly:CatLibrary.dllType ParametersTInheritanceobject\uF1C5 Exception\uF1C5 CatExceptionImplementsISerializable\uF1C5Inherited MembersException.GetBaseException()\uF1C5 , Exception.GetType()\uF1C5 , Exception.ToString()\uF1C5 ,Exception.Data\uF1C5 , Exception.HelpLink\uF1C5 , Exception.HResult\uF1C5 , Exception.InnerException\uF1C5 ,Exception.Message\uF1C5 , Exception.Source\uF1C5 , Exception.StackTrace\uF1C5 , Exception.TargetSite\uF1C5 ,Exception.SerializeObjectState\uF1C5 , object.Equals(object?)\uF1C5 ,object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,object.ToString()\uF1C5Class CatExceptionpublic class CatException : Exception, ISerializable\uF12C\uF12C", + "Number": 77, + "Text": "77 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Exception\uF1C5 CatException\nImplements\nISerializable\uF1C5\nInherited Members\nException.GetBaseException()\uF1C5 , Exception.GetType()\uF1C5 , Exception.ToString()\uF1C5 ,\nException.Data\uF1C5 , Exception.HelpLink\uF1C5 , Exception.HResult\uF1C5 , Exception.InnerException\uF1C5 ,\nException.Message\uF1C5 , Exception.Source\uF1C5 , Exception.StackTrace\uF1C5 , Exception.TargetSite\uF1C5 ,\nException.SerializeObjectState\uF1C5 , object.Equals(object?)\uF1C5 ,\nobject.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nClass CatException\npublic class CatException : Exception, ISerializable\n\uF12C \uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5363,7 +5647,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -5372,7 +5656,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5382,8 +5666,8 @@ ] }, { - "Number": 74, - "Text": "74 / 89Namespace:CatLibraryAssembly:CatLibrary.dllType ParametersTJInheritanceobject\uF1C5 ComplexInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5Class Complexpublic class Complex\uF12C", + "Number": 78, + "Text": "78 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nJ\nInheritance\nobject\uF1C5 Complex\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nClass Complex\npublic class Complex\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5459,7 +5743,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -5468,7 +5752,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5478,8 +5762,8 @@ ] }, { - "Number": 75, - "Text": "75 / 89Namespace:CatLibraryAssembly:CatLibrary.dllIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classInheritanceobject\uF1C5 ICatExtensionInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsExtension method to let cat playParametersicat ICatCattoy ContainersRefType.ColorTypeSomething to playClass ICatExtensionpublic static class ICatExtension\uF12CPlay(ICat, ColorType)public static void Play(this ICat icat, ContainersRefType.ColorType toy)", + "Number": 79, + "Text": "79 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nInheritance\nobject\uF1C5 ICatExtension\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nExtension method to let cat play\nParameters\nicat ICat\nCat\ntoy ContainersRefType.ColorType\nSomething to play\nClass ICatExtension\npublic static class ICatExtension\n\uF12C\nPlay(ICat, ColorType)\npublic static void Play(this ICat icat, ContainersRefType.ColorType toy)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5555,7 +5839,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -5564,7 +5848,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -5573,7 +5857,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -5582,7 +5866,7 @@ }, { "Goto": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -5591,7 +5875,7 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 66, "Type": 2, "Coordinates": { "Top": 0 @@ -5601,8 +5885,8 @@ ] }, { - "Number": 76, - "Text": "76 / 89Extension method hint that how long the cat can sleep.Parametersicat ICatThe type will be extended.hours long\uF1C5The length of sleep.Sleep(ICat, long)public static void Sleep(this ICat icat, long hours)", + "Number": 80, + "Text": "80 / 93\nExtension method hint that how long the cat can sleep.\nParameters\nicat ICat\nThe type will be extended.\nhours long\uF1C5\nThe length of sleep.\nSleep(ICat, long)\npublic static void Sleep(this ICat icat, long hours)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -5615,7 +5899,7 @@ }, { "Goto": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -5625,8 +5909,8 @@ ] }, { - "Number": 77, - "Text": "77 / 89Namespace:CatLibraryAssembly:CatLibrary.dllTom class is only inherit from Object. Not any member inside itself.Inheritanceobject\uF1C5 TomDerivedTomFromBaseClassInherited Membersobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5MethodsThis is a Tom Method with complex type as returnParametersa ComplexA complex inputClass Tompublic class Tom\uF12CTomMethod(Complex, Tuple)public Complex TomMethod(Complex a, Tuple b)", + "Number": 81, + "Text": "81 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTom class is only inherit from Object. Not any member inside itself.\nInheritance\nobject\uF1C5 Tom\nDerived\nTomFromBaseClass\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nThis is a Tom Method with complex type as return\nParameters\na Complex\nA complex input\nClass Tom\npublic class Tom\n\uF12C\nTomMethod(Complex, Tuple)\npublic Complex TomMethod(Complex a, Tuple b)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5702,7 +5986,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -5711,7 +5995,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -5720,7 +6004,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -5729,7 +6013,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5738,7 +6022,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -5747,7 +6031,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -5757,8 +6041,8 @@ ] }, { - "Number": 78, - "Text": "78 / 89b Tuple\uF1C5Another complex inputReturnsComplexComplex TomFromBaseClassExceptionsNotImplementedException\uF1C5This is not implementedArgumentException\uF1C5This is the exception to be thrown when implementedCatExceptionThis is the exception in current documentation", + "Number": 82, + "Text": "82 / 93\nb Tuple\uF1C5 \nAnother complex input\nReturns\nComplex\nComplex TomFromBaseClass\nExceptions\nNotImplementedException\uF1C5\nThis is not implemented\nArgumentException\uF1C5\nThis is the exception to be thrown when implemented\nCatException\nThis is the exception in current documentation", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.tuple-2" @@ -5807,7 +6091,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -5816,7 +6100,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5825,7 +6109,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -5846,7 +6130,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5856,8 +6140,8 @@ ] }, { - "Number": 79, - "Text": "79 / 89Namespace:CatLibraryAssembly:CatLibrary.dllTomFromBaseClass inherits from @Inheritanceobject\uF1C5 Tom TomFromBaseClassInherited MembersTom.TomMethod(Complex, Tuple) ,object.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5ConstructorsThis is a #ctor with parameterParametersk int\uF1C5Class TomFromBaseClasspublic class TomFromBaseClass : Tom\uF12C\uF12CTomFromBaseClass(int)public TomFromBaseClass(int k)", + "Number": 83, + "Text": "83 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTomFromBaseClass inherits from @\nInheritance\nobject\uF1C5 Tom TomFromBaseClass\nInherited Members\nTom.TomMethod(Complex, Tuple) ,\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nConstructors\nThis is a #ctor with parameter\nParameters\nk int\uF1C5\nClass TomFromBaseClass\npublic class TomFromBaseClass : Tom\n\uF12C \uF12C\nTomFromBaseClass(int)\npublic TomFromBaseClass(int k)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5942,7 +6226,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -5951,7 +6235,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -5960,7 +6244,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -5969,7 +6253,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Coordinates": { "Left": 0, "Top": 314.25 @@ -5979,8 +6263,8 @@ ] }, { - "Number": 80, - "Text": "80 / 89Namespace:CatLibraryAssembly:CatLibrary.dllThis is basic interface of all animal.PropertiesName of Animal.Property Valuestring\uF1C5Return specific number animal's name.Property Valuestring\uF1C5MethodsInterface IAnimalpublic interface IAnimalNamestring Name { get; }this[int]string this[int index] { get; }Eat()", + "Number": 84, + "Text": "84 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nThis is basic interface of all animal.\nProperties\nName of Animal.\nProperty Value\nstring\uF1C5\nReturn specific number animal's name.\nProperty Value\nstring\uF1C5\nMethods\nInterface IAnimal\npublic interface IAnimal\nName\nstring Name { get; }\nthis[int]\nstring this[int index] { get; }\nEat()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -6002,7 +6286,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -6012,8 +6296,8 @@ ] }, { - "Number": 81, - "Text": "81 / 89Animal's eat method.Overload method of eat. This define the animal eat by which tool.Parameterstool ToolTool name.Type ParametersToolIt's a class type.Feed the animal with some foodParametersfood string\uF1C5Food to eatvoid Eat()Eat(Tool)void Eat(Tool tool) where Tool : classEat(string)void Eat(string food)", + "Number": 85, + "Text": "85 / 93\nAnimal's eat method.\nOverload method of eat. This define the animal eat by which tool.\nParameters\ntool Tool\nTool name.\nType Parameters\nTool\nIt's a class type.\nFeed the animal with some food\nParameters\nfood string\uF1C5\nFood to eat\nvoid Eat()\nEat(Tool)\nvoid Eat(Tool tool) where Tool : class\nEat(string)\nvoid Eat(string food)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -6027,8 +6311,8 @@ ] }, { - "Number": 82, - "Text": "82 / 89Namespace:CatLibraryAssembly:CatLibrary.dllCat's interfaceImplementsIAnimalExtension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)eat event of cat. Every cat must implement this event.Event TypeEventHandler\uF1C5Interface ICatpublic interface ICat : IAnimaleatevent EventHandler eat", + "Number": 86, + "Text": "86 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nCat's interface\nImplements\nIAnimal\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)\neat event of cat. Every cat must implement this event.\nEvent Type\nEventHandler\uF1C5\nInterface ICat\npublic interface ICat : IAnimal\neat\nevent EventHandler eat", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.eventhandler" @@ -6041,7 +6325,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -6050,7 +6334,7 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -6059,7 +6343,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Coordinates": { "Left": 0, "Top": 318 @@ -6068,7 +6352,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 792 @@ -6078,8 +6362,8 @@ ] }, { - "Number": 83, - "Text": "83 / 89Namespace:CatLibraryAssembly:CatLibrary.dllFake delegateParametersnum long\uF1C5Fake paraname string\uF1C5Fake parascores object\uF1C5[]Optional Parameter.Returnsint\uF1C5Return a fake number to confuse you.Type ParametersTFake paraDelegate FakeDelegatepublic delegate int FakeDelegate(long num, string name, params object[] scores)", + "Number": 87, + "Text": "87 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nFake delegate\nParameters\nnum long\uF1C5\nFake para\nname string\uF1C5\nFake para\nscores object\uF1C5 []\nOptional Parameter.\nReturns\nint\uF1C5\nReturn a fake number to confuse you.\nType Parameters\nT\nFake para\nDelegate FakeDelegate\npublic delegate int FakeDelegate(long num, string name, params object[] scores)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -6119,7 +6403,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -6129,12 +6413,12 @@ ] }, { - "Number": 84, - "Text": "84 / 89Namespace:CatLibraryAssembly:CatLibrary.dllGeneric delegate with many constrains.Parametersk KType K.t TType T.l LType L.Type ParametersKGeneric K.TGeneric T.LGeneric L.Delegate MRefDelegatepublic delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable", + "Number": 88, + "Text": "88 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nGeneric delegate with many constrains.\nParameters\nk K\nType K.\nt T\nType T.\nl L\nType L.\nType Parameters\nK\nGeneric K.\nT\nGeneric T.\nL\nGeneric L.\nDelegate MRefDelegate\npublic delegate void MRefDelegate(K k, T t, L l) where K : class,\nIComparable where T : struct where L : Tom, IEnumerable", "Links": [ { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -6144,8 +6428,8 @@ ] }, { - "Number": 85, - "Text": "85 / 89Namespace:CatLibraryAssembly:CatLibrary.dllDelegate in the namespaceParameterspics List\uF1C5a name list of pictures.name string\uF1C5give out the needed name.Delegate MRefNormalDelegatepublic delegate void MRefNormalDelegate(List pics, out string name)", + "Number": 89, + "Text": "89 / 93\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nDelegate in the namespace\nParameters\npics List\uF1C5 \na name list of pictures.\nname string\uF1C5\ngive out the needed name.\nDelegate MRefNormalDelegate\npublic delegate void MRefNormalDelegate(List pics, out string name)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1" @@ -6176,7 +6460,7 @@ }, { "Goto": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -6186,12 +6470,12 @@ ] }, { - "Number": 86, - "Text": "86 / 89NamespacesMRef.DemoNamespace MRef", + "Number": 90, + "Text": "90 / 93\nNamespaces\nMRef.Demo\nNamespace MRef", "Links": [ { "Goto": { - "PageNumber": 87, + "PageNumber": 91, "Type": 2, "Coordinates": { "Top": 0 @@ -6201,12 +6485,12 @@ ] }, { - "Number": 87, - "Text": "87 / 89NamespacesMRef.Demo.EnumerationNamespace MRef.Demo", + "Number": 91, + "Text": "91 / 93\nNamespaces\nMRef.Demo.Enumeration\nNamespace MRef.Demo", "Links": [ { "Goto": { - "PageNumber": 88, + "PageNumber": 92, "Type": 2, "Coordinates": { "Top": 0 @@ -6216,12 +6500,12 @@ ] }, { - "Number": 88, - "Text": "88 / 89EnumsColorTypeEnumeration ColorTypeNamespace MRef.Demo.Enumeration", + "Number": 92, + "Text": "92 / 93\nEnums\nColorType\nEnumeration ColorType\nNamespace MRef.Demo.Enumeration", "Links": [ { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -6231,8 +6515,8 @@ ] }, { - "Number": 89, - "Text": "89 / 89Namespace:MRef.Demo.EnumerationAssembly:CatLibrary.dllEnumeration ColorTypeFieldsRed = 0this color is redBlue = 1blue like riverYellow = 2yellow comes from desertRemarksRed/Blue/Yellow can become all color you want.See Alsoobject\uF1C5Enum ColorTypepublic enum ColorType", + "Number": 93, + "Text": "93 / 93\nNamespace: MRef.Demo.Enumeration\nAssembly: CatLibrary.dll\nEnumeration ColorType\nFields\nRed = 0\nthis color is red\nBlue = 1\nblue like river\nYellow = 2\nyellow comes from desert\nRemarks\nRed/Blue/Yellow can become all color you want.\nSee Also\nobject\uF1C5\nEnum ColorType\npublic enum ColorType", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -6245,7 +6529,7 @@ }, { "Goto": { - "PageNumber": 88, + "PageNumber": 92, "Type": 2, "Coordinates": { "Top": 0 @@ -6584,7 +6868,7 @@ } }, { - "Title": "Issue8725", + "Title": "Inheritdoc.Issue9736", "Children": [], "Destination": { "PageNumber": 42, @@ -6594,11 +6878,33 @@ } } }, + { + "Title": "Inheritdoc.Issue9736.JsonApiOptions", + "Children": [], + "Destination": { + "PageNumber": 43, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Issue8725", + "Children": [], + "Destination": { + "PageNumber": 45, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, { "Title": "Structs", "Children": [], "Destination": { - "PageNumber": 44, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -6609,7 +6915,7 @@ "Title": "Inheritdoc.Issue8129", "Children": [], "Destination": { - "PageNumber": 44, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -6620,7 +6926,7 @@ "Title": "Interfaces", "Children": [], "Destination": { - "PageNumber": 45, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -6631,7 +6937,7 @@ "Title": "Class1.IIssue8948", "Children": [], "Destination": { - "PageNumber": 45, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -6642,7 +6948,18 @@ "Title": "IInheritdoc", "Children": [], "Destination": { - "PageNumber": 46, + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Inheritdoc.Issue9736.IJsonApiOptions", + "Children": [], + "Destination": { + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -6653,7 +6970,7 @@ "Title": "Enums", "Children": [], "Destination": { - "PageNumber": 47, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -6664,7 +6981,7 @@ "Title": "Class1.Issue9260", "Children": [], "Destination": { - "PageNumber": 47, + "PageNumber": 51, "Type": 2, "Coordinates": { "Top": 0 @@ -6687,7 +7004,7 @@ "Title": "Classes", "Children": [], "Destination": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6698,7 +7015,7 @@ "Title": "BaseClass1", "Children": [], "Destination": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6709,7 +7026,7 @@ "Title": "Class1", "Children": [], "Destination": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -6718,7 +7035,7 @@ } ], "Destination": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -6735,7 +7052,7 @@ "Title": "Classes", "Children": [], "Destination": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -6746,7 +7063,7 @@ "Title": "ContainersRefType.ContainersRefTypeChild", "Children": [], "Destination": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -6757,7 +7074,7 @@ "Title": "ExplicitLayoutClass", "Children": [], "Destination": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -6768,7 +7085,7 @@ "Title": "Issue231", "Children": [], "Destination": { - "PageNumber": 58, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -6779,7 +7096,7 @@ "Title": "Structs", "Children": [], "Destination": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -6790,7 +7107,7 @@ "Title": "ContainersRefType", "Children": [], "Destination": { - "PageNumber": 59, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -6801,7 +7118,7 @@ "Title": "Interfaces", "Children": [], "Destination": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -6812,7 +7129,7 @@ "Title": "ContainersRefType.ContainersRefTypeChildInterface", "Children": [], "Destination": { - "PageNumber": 61, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -6823,7 +7140,7 @@ "Title": "Enums", "Children": [], "Destination": { - "PageNumber": 62, + "PageNumber": 66, "Type": 2, "Coordinates": { "Top": 0 @@ -6834,7 +7151,7 @@ "Title": "ContainersRefType.ColorType", "Children": [], "Destination": { - "PageNumber": 62, + "PageNumber": 66, "Type": 2, "Coordinates": { "Top": 0 @@ -6845,7 +7162,7 @@ "Title": "Delegates", "Children": [], "Destination": { - "PageNumber": 63, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -6856,7 +7173,7 @@ "Title": "ContainersRefType.ContainersRefTypeDelegate", "Children": [], "Destination": { - "PageNumber": 63, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -6865,7 +7182,7 @@ } ], "Destination": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -6876,7 +7193,7 @@ "Title": "Classes", "Children": [], "Destination": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -6887,7 +7204,7 @@ "Title": "Cat", "Children": [], "Destination": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -6898,7 +7215,7 @@ "Title": "CatException", "Children": [], "Destination": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -6909,7 +7226,7 @@ "Title": "Complex", "Children": [], "Destination": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -6920,7 +7237,7 @@ "Title": "ICatExtension", "Children": [], "Destination": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -6931,7 +7248,7 @@ "Title": "Tom", "Children": [], "Destination": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -6942,7 +7259,7 @@ "Title": "TomFromBaseClass", "Children": [], "Destination": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -6953,7 +7270,7 @@ "Title": "Interfaces", "Children": [], "Destination": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -6964,7 +7281,7 @@ "Title": "IAnimal", "Children": [], "Destination": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -6975,7 +7292,7 @@ "Title": "ICat", "Children": [], "Destination": { - "PageNumber": 82, + "PageNumber": 86, "Type": 2, "Coordinates": { "Top": 0 @@ -6986,7 +7303,7 @@ "Title": "Delegates", "Children": [], "Destination": { - "PageNumber": 83, + "PageNumber": 87, "Type": 2, "Coordinates": { "Top": 0 @@ -6997,7 +7314,7 @@ "Title": "FakeDelegate", "Children": [], "Destination": { - "PageNumber": 83, + "PageNumber": 87, "Type": 2, "Coordinates": { "Top": 0 @@ -7008,7 +7325,7 @@ "Title": "MRefDelegate", "Children": [], "Destination": { - "PageNumber": 84, + "PageNumber": 88, "Type": 2, "Coordinates": { "Top": 0 @@ -7019,7 +7336,7 @@ "Title": "MRefNormalDelegate", "Children": [], "Destination": { - "PageNumber": 85, + "PageNumber": 89, "Type": 2, "Coordinates": { "Top": 0 @@ -7028,7 +7345,7 @@ } ], "Destination": { - "PageNumber": 53, + "PageNumber": 57, "Type": 2, "Coordinates": { "Top": 0 @@ -7048,7 +7365,7 @@ "Title": "Enums", "Children": [], "Destination": { - "PageNumber": 89, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -7059,7 +7376,7 @@ "Title": "ColorType", "Children": [], "Destination": { - "PageNumber": 89, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -7068,7 +7385,7 @@ } ], "Destination": { - "PageNumber": 88, + "PageNumber": 92, "Type": 2, "Coordinates": { "Top": 0 @@ -7077,7 +7394,7 @@ } ], "Destination": { - "PageNumber": 87, + "PageNumber": 91, "Type": 2, "Coordinates": { "Top": 0 @@ -7086,7 +7403,7 @@ } ], "Destination": { - "PageNumber": 86, + "PageNumber": 90, "Type": 2, "Coordinates": { "Top": 0 diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.verified.json index 7438292da37..41c2f91ce3b 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/apipage/toc.verified.json @@ -148,6 +148,16 @@ "href": "BuildFromProject.Inheritdoc.Issue8101.html", "topicHref": "BuildFromProject.Inheritdoc.Issue8101.html" }, + { + "name": "Inheritdoc.Issue9736", + "href": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.html" + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html" + }, { "name": "Issue8725", "href": "BuildFromProject.Issue8725.html", @@ -174,6 +184,11 @@ "href": "BuildFromProject.IInheritdoc.html", "topicHref": "BuildFromProject.IInheritdoc.html" }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html" + }, { "name": "Enums" }, diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/articles/seed.pdf.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/articles/seed.pdf.verified.json index 831a1c0daf2..6eeb7b4254d 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/articles/seed.pdf.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/articles/seed.pdf.verified.json @@ -8,7 +8,7 @@ }, { "Number": 2, - "Text": "Table of ContentsGetting Started with docfx3Engineering DocsSection 1Engineering Guidelines5C# Coding Standards8Markdown15Microsoft Docs", + "Text": "Table of Contents\nGetting Started with docfx 3\nEngineering Docs\nSection 1\nEngineering Guidelines 5\nC# Coding Standards 8\nMarkdown 15\nMicrosoft Docs", "Links": [ { "Uri": "https://docs.microsoft.com/en-us/" @@ -54,7 +54,7 @@ { "Number": 3, "NumberOfImages": 1, - "Text": "3 / 19Getting Started with docfxGetting StartedThis is a seed.", + "Text": "3 / 19\nGetting Started with docfx\nGetting Started\nThis is a seed.", "Links": [ { "Uri": "" @@ -66,22 +66,22 @@ }, { "Number": 4, - "Text": "4 / 19docfx is an API documentation generator for .NET, currently support C# and VB. It has theability to extract triple slash comments out from your source code. What's more, it hassyntax to link additional files to API to add additional remarks. docfx will scan your sourcecode and your additional conceptual files and generate a complete HTML documentationwebsite for you. docfx provides the flexibility for you to customize the website throughtemplates. We currently have several embedded templates, including websites containingpure static html pages and also website managed by AngularJS.Click \"View Source\" for an API to route to the source code in GitHub (your API must bepushed to GitHub)docfx provide DNX version for cross platform use.docfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nugetpackage is now in pre-release version. You can also build your own with source codeand use it locally.We support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is100% compatible with Github Flavored Markdown(GFM) and add several new featuresincluding file inclusion, cross reference, and yaml header.", + "Text": "4 / 19\ndocfx is an API documentation generator for .NET, currently support C# and VB. It has the\nability to extract triple slash comments out from your source code. What's more, it has\nsyntax to link additional files to API to add additional remarks. docfx will scan your source\ncode and your additional conceptual files and generate a complete HTML documentation\nwebsite for you. docfx provides the flexibility for you to customize the website through\ntemplates. We currently have several embedded templates, including websites containing\npure static html pages and also website managed by AngularJS.\nClick \"View Source\" for an API to route to the source code in GitHub (your API must be\npushed to GitHub)\ndocfx provide DNX version for cross platform use.\ndocfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nuget\npackage is now in pre-release version. You can also build your own with source code\nand use it locally.\nWe support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is\n100% compatible with Github Flavored Markdown(GFM) and add several new features\nincluding file inclusion, cross reference, and yaml header.", "Links": [] }, { "Number": 5, - "Text": "5 / 19Engineering GuidelinesBasicsCopyright header and license noticeAll source code files require the following exact header according to its language (please donot make any changes to it).extension: .csextension: .jsextension: .cssextension: .tmpl, .tmpl.partialExternal dependenciesThis refers to dependencies on projects (i.e. NuGet packages) outside of the docfx repo, andespecially outside of Microsoft. Adding new dependencies require additional approval.Current approved dependencies are:Newtonsoft.JsonJintHtmlAgilityPack// Licensed to the .NET Foundation under one or more agreements.// The .NET Foundation licenses this file to you under the MIT license.// Licensed to the .NET Foundation under one or more agreements.// The .NET Foundation licenses this file to you under the MIT license./** * Licensed to the .NET Foundation under one or more agreements. * The .NET Foundation licenses this file to you under the MIT license. */{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation lic", + "Text": "5 / 19\nEngineering Guidelines\nBasics\nCopyright header and license notice\nAll source code files require the following exact header according to its language (please do\nnot make any changes to it).\nextension: .cs\nextension: .js\nextension: .css\nextension: .tmpl, .tmpl.partial\nExternal dependencies\nThis refers to dependencies on projects (i.e. NuGet packages) outside of the docfx repo, and\nespecially outside of Microsoft. Adding new dependencies require additional approval.\nCurrent approved dependencies are:\nNewtonsoft.Json\nJint\nHtmlAgilityPack\n// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n/**\n* Licensed to the .NET Foundation under one or more agreements.\n* The .NET Foundation licenses this file to you under the MIT license.\n*/\n{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation lic", "Links": [] }, { "Number": 6, - "Text": "6 / 19NustacheYamlDotNetCode reviews and checkinsTo help ensure that only the highest quality code makes its way into the project, pleasesubmit all your code changes to GitHub as PRs. This includes runtime code changes, unittest updates, and deployment scripts. For example, sending a PR for just an update to aunit test might seem like a waste of time but the unit tests are just as important as theproduct code and as such, reviewing changes to them is also just as important.The advantages are numerous: improving code quality, more visibility on changes and theirpotential impact, avoiding duplication of effort, and creating general awareness of progressbeing made in various areas.In general a PR should be signed off(using the \uD83D\uDC4D emoticon) by the Owner of that code.To commit the PR to the repo do not use the Big Green Button. Instead, do a typicalpush that you would use with Git (e.g. local pull, rebase, merge, push).Source Code ManagementBranch strategyIn general:master has the code for the latest release on NuGet.org. (e.g. 1.0.0, 1.1.0)dev has the code that is being worked on but not yet released. This is the branch intowhich devs normally submit pull requests and merge changes into. We run daily CItowards dev branch and generate pre-release nuget package, e.g. 1.0.1-alpha-9-abcdefsd.hotfix has the code for fixing master bug after it is released. hotfix changes will bemerged back to master and dev once it is verified.Solution and project folder structure and namingSolution files go in the repo root. The default entry point is All.sln.Every project also needs a project.json and a matching .xproj file. This project.json is thesource of truth for a project's dependencies and configuration options.Solution need to contain solution folders that match the physical folder (src, test, tools,etc.).Assembly naming pattern", + "Text": "6 / 19\nNustache\nYamlDotNet\nCode reviews and checkins\nTo help ensure that only the highest quality code makes its way into the project, please\nsubmit all your code changes to GitHub as PRs. This includes runtime code changes, unit\ntest updates, and deployment scripts. For example, sending a PR for just an update to a\nunit test might seem like a waste of time but the unit tests are just as important as the\nproduct code and as such, reviewing changes to them is also just as important.\nThe advantages are numerous: improving code quality, more visibility on changes and their\npotential impact, avoiding duplication of effort, and creating general awareness of progress\nbeing made in various areas.\nIn general a PR should be signed off(using the \uD83D\uDC4D emoticon) by the Owner of that code.\nTo commit the PR to the repo do not use the Big Green Button. Instead, do a typical\npush that you would use with Git (e.g. local pull, rebase, merge, push).\nSource Code Management\nBranch strategy\nIn general:\nmaster has the code for the latest release on NuGet.org. (e.g. 1.0.0, 1.1.0)\ndev has the code that is being worked on but not yet released. This is the branch into\nwhich devs normally submit pull requests and merge changes into. We run daily CI\ntowards dev branch and generate pre-release nuget package, e.g. 1.0.1-alpha-9-\nabcdefsd.\nhotfix has the code for fixing master bug after it is released. hotfix changes will be\nmerged back to master and dev once it is verified.\nSolution and project folder structure and naming\nSolution files go in the repo root. The default entry point is All.sln.\nEvery project also needs a project.json and a matching .xproj file. This project.json is the\nsource of truth for a project's dependencies and configuration options.\nSolution need to contain solution folders that match the physical folder (src, test, tools,\netc.).\nAssembly naming pattern", "Links": [] }, { "Number": 7, - "Text": "7 / 19The general naming pattern is Docfx...Unit testsWe use xUnit.net for all unit testing.Coding StandardsPlease refer to C# Coding standards for detailed guideline for C# coding standards.TODO Template Coding standardsTODO Template Preprocess JS Coding standards", + "Text": "7 / 19\nThe general naming pattern is Docfx...\nUnit tests\nWe use xUnit.net for all unit testing.\nCoding Standards\nPlease refer to C# Coding standards for detailed guideline for C# coding standards.\nTODO Template Coding standards\nTODO Template Preprocess JS Coding standards", "Links": [ { "Goto": { @@ -96,7 +96,7 @@ }, { "Number": 8, - "Text": "8 / 19C# Coding StandardsIntroductionThe coding standard will be used in conjunction with customized version of StyleCop andFxCop [TODO] during both development and build process. This will help ensure that thestandard is followed by all developers on the team in a consistent manner.\"Any fool can write code that a computer can understand. Good programmers writecode that humans understand\".Martin Fowler. Refactoring: Improving the design of existing code.PurposeThe aim of this section is to define a set of C# coding standards to be used by CAPS buildteam to guarantee maximum legibility, reliability, re-usability and homogeneity of our code.Each section is marked Mandatory or Recommended. Mandatory sections, will be enforcedduring code reviews as well as tools like StyleCop and FxCop, and code will not beconsidered complete until it is compliant.ScopeThis section contains general C# coding standards which can be applied to any type ofapplication developed in C#, based on Framework Design Guidelines\uF1C5.It does not pretend to be a tutorial on C#. It only includes a set of limitations andrecommendations focused on clarifying the development.ToolsResharper\uF1C5 is a great 3rd party code cleanup and style tool.StyleCop\uF1C5 analyzes C# srouce code to enforce a set of style and consistency rules andhas been integrated into many 3rd party development tools such as Resharper.FxCop\uF1C5 is an application that analyzes managed code assemblies (code that targetsthe .NET Framework common language runtime) and reports information about theassemblies, such as possible design, localization, performance, and securityimprovements.C# Stylizer\uF1C5 does many of the style rules automaticallyHighlights of Coding StandardsThis section is not intended to give a summary of all the coding standards that enabled byour customized StyleCop, but to give a highlight of some rules one will possibly meet in", + "Text": "8 / 19\nC# Coding Standards\nIntroduction\nThe coding standard will be used in conjunction with customized version of StyleCop and\nFxCop [TODO] during both development and build process. This will help ensure that the\nstandard is followed by all developers on the team in a consistent manner.\n\"Any fool can write code that a computer can understand. Good programmers write\ncode that humans understand\".\nMartin Fowler. Refactoring: Improving the design of existing code.\nPurpose\nThe aim of this section is to define a set of C# coding standards to be used by CAPS build\nteam to guarantee maximum legibility, reliability, re-usability and homogeneity of our code.\nEach section is marked Mandatory or Recommended. Mandatory sections, will be enforced\nduring code reviews as well as tools like StyleCop and FxCop, and code will not be\nconsidered complete until it is compliant.\nScope\nThis section contains general C# coding standards which can be applied to any type of\napplication developed in C#, based on Framework Design Guidelines\uF1C5 .\nIt does not pretend to be a tutorial on C#. It only includes a set of limitations and\nrecommendations focused on clarifying the development.\nTools\nResharper\uF1C5 is a great 3rd party code cleanup and style tool.\nStyleCop\uF1C5 analyzes C# srouce code to enforce a set of style and consistency rules and\nhas been integrated into many 3rd party development tools such as Resharper.\nFxCop\uF1C5 is an application that analyzes managed code assemblies (code that targets\nthe .NET Framework common language runtime) and reports information about the\nassemblies, such as possible design, localization, performance, and security\nimprovements.\nC# Stylizer\uF1C5 does many of the style rules automatically\nHighlights of Coding Standards\nThis section is not intended to give a summary of all the coding standards that enabled by\nour customized StyleCop, but to give a highlight of some rules one will possibly meet in", "Links": [ { "Uri": "http://msdn.microsoft.com/en-us/library/ms229042.aspx" @@ -147,12 +147,12 @@ }, { "Number": 9, - "Text": "9 / 19daily coding life. It also provides some recommended however not mandatory(which meansnot enabled in StyleCop) coding standards.File Layout (Recommended)Only one public class is allowed per file.The file name is derived from the class name.Class Definition Order (Mandatory)The class definition contains class members in the following order, from less restrictedscope (public) to more restrictive (private):Nested types, e.g. classes, enum, struct, etc.Field members, e.g. member variables, const, etc.Member functionsConstructorsFinalizer (Do not use unless absolutely necessary)Methods (Properties, Events, Operations, Overridables, Static)Private nested typesNaming (Mandatory)DO use PascalCasing for all public member, type, and namespace names consisting ofmultiple words.NOTE: A special case is made for two-letter acronyms in which both letters are capitalized,e.g. IOStreamDO use camelCasing for parameter names.Class : ObserverFilename: Observer.cs PropertyDescriptor HtmlTag IOStream propertyDescriptor htmlTag ioStream", + "Text": "9 / 19\ndaily coding life. It also provides some recommended however not mandatory(which means\nnot enabled in StyleCop) coding standards.\nFile Layout (Recommended)\nOnly one public class is allowed per file.\nThe file name is derived from the class name.\nClass Definition Order (Mandatory)\nThe class definition contains class members in the following order, from less restricted\nscope (public) to more restrictive (private):\nNested types, e.g. classes, enum, struct, etc.\nField members, e.g. member variables, const, etc.\nMember functions\nConstructors\nFinalizer (Do not use unless absolutely necessary)\nMethods (Properties, Events, Operations, Overridables, Static)\nPrivate nested types\nNaming (Mandatory)\nDO use PascalCasing for all public member, type, and namespace names consisting of\nmultiple words.\nNOTE: A special case is made for two-letter acronyms in which both letters are capitalized,\ne.g. IOStream\nDO use camelCasing for parameter names.\nClass : Observer\nFilename: Observer.cs\nPropertyDescriptor\nHtmlTag\nIOStream\npropertyDescriptor\nhtmlTag\nioStream", "Links": [] }, { "Number": 10, - "Text": "10 / 19DO start with underscore for private fieldsDO start static readonly fields, constants with capitalized caseDO NOT capitalize each word in so-called closed-form compound words\uF1C5.DO have \"Async\" explicitly in the Async method name to notice people how to use itproperlyFormatting (Mandatory)DO use spaces over tabs, and always show all spaces/tabs in IDETipsVisual Studio > TOOLS > Options > Text Editor > C# > Tabs > Insert spaces (Tab size:4)Visual Studio > Edit > Advanced > View White SpaceDO add using inside namespace declarationDO add a space when:1. for (var i = 0; i < 1; i++)2. if (a == b)Cross-platform codingOur code should supports multiple operating systems. Don't assume we only run (anddevelop) on Windows. Code should be sensitvie to the differences between OS's. Here aresome specifics to consider. private readonly Guid _userId = Guid.NewGuid(); private static readonly IEntityAccessor EntityAccessor = null; private const string MetadataName = \"MetadataName\"; namespace Microsoft.Content.Build.BuildWorker.UnitTest { using System; }", + "Text": "10 / 19\nDO start with underscore for private fields\nDO start static readonly fields, constants with capitalized case\nDO NOT capitalize each word in so-called closed-form compound words\uF1C5 .\nDO have \"Async\" explicitly in the Async method name to notice people how to use it\nproperly\nFormatting (Mandatory)\nDO use spaces over tabs, and always show all spaces/tabs in IDE\nTips\nVisual Studio > TOOLS > Options > Text Editor > C# > Tabs > Insert spaces (Tab size:\n4)\nVisual Studio > Edit > Advanced > View White Space\nDO add using inside namespace declaration\nDO add a space when:\n1. for (var i = 0; i < 1; i++)\n2. if (a == b)\nCross-platform coding\nOur code should supports multiple operating systems. Don't assume we only run (and\ndevelop) on Windows. Code should be sensitvie to the differences between OS's. Here are\nsome specifics to consider.\nprivate readonly Guid _userId = Guid.NewGuid();\nprivate static readonly IEntityAccessor EntityAccessor = null;\nprivate const string MetadataName = \"MetadataName\";\nnamespace Microsoft.Content.Build.BuildWorker.UnitTest\n{ \nusing System;\n}", "Links": [ { "Uri": "http://msdn.microsoft.com/en-us/library/ms229043.aspx" @@ -167,27 +167,27 @@ }, { "Number": 11, - "Text": "11 / 19DO use Enviroment.NewLine instead of hard-coding the line break instead of \\r\\n, asWindows uses \\r\\n and OSX/Linux uses \\n.NoteBe aware that thes line-endings may cause problems in code when using @\"\" text blockswith line breaks.DO Use Path.Combine() or Path.DirectorySeparatorChar to separate directories. If this isnot possible (such as in scripting), use a forward slash /. Windows is more forgivingthan Linux in this regard.Unit tests and functional testsAssembly namingThe unit tests for the Microsoft.Foo assembly live in the Microsoft.Foo.Tests assembly.The functional tests for the Microsoft.Foo assmebly live in theMicrosoft.Foo.FunctionalTests assmebly.In general there should be exactly one unit test assebmly for each product runtimeassembly. In general there should be one functional test assembly per repo. Exceptions canbe made for both.Unit test class namingTest class names end with Test and live in the same namespace as the class being tested.For example, the unit tests for the Microsoft.Foo.Boo class would be in a Microsoft.Foo.Booclass in the test assembly.Unit test method namingUnit test method names must be descriptive about what is being tested, under whatconditions, and what the expectations are. Pascal casing and underscores can be used toimprove readability. The following test names are correct:The following test names are incorrect:PublicApiArgumentsShouldHaveNotNullAnnotationPublic_api_arguments_should_have_not_null_annotationTest1Constructor", + "Text": "11 / 19\nDO use Enviroment.NewLine instead of hard-coding the line break instead of \\r\\n, as\nWindows uses \\r\\n and OSX/Linux uses \\n.\nNote\nBe aware that thes line-endings may cause problems in code when using @\"\" text blocks\nwith line breaks.\nDO Use Path.Combine() or Path.DirectorySeparatorChar to separate directories. If this is\nnot possible (such as in scripting), use a forward slash /. Windows is more forgiving\nthan Linux in this regard.\nUnit tests and functional tests\nAssembly naming\nThe unit tests for the Microsoft.Foo assembly live in the Microsoft.Foo.Tests assembly.\nThe functional tests for the Microsoft.Foo assmebly live in the\nMicrosoft.Foo.FunctionalTests assmebly.\nIn general there should be exactly one unit test assebmly for each product runtime\nassembly. In general there should be one functional test assembly per repo. Exceptions can\nbe made for both.\nUnit test class naming\nTest class names end with Test and live in the same namespace as the class being tested.\nFor example, the unit tests for the Microsoft.Foo.Boo class would be in a Microsoft.Foo.Boo\nclass in the test assembly.\nUnit test method naming\nUnit test method names must be descriptive about what is being tested, under what\nconditions, and what the expectations are. Pascal casing and underscores can be used to\nimprove readability. The following test names are correct:\nThe following test names are incorrect:\nPublicApiArgumentsShouldHaveNotNullAnnotation\nPublic_api_arguments_should_have_not_null_annotation\nTest1\nConstructor", "Links": [] }, { "Number": 12, - "Text": "12 / 19Unit test structureThe contents of every unit test should be split into three distinct stages, optionallyseparated by these comments:The crucial thing here is the Act stage is exactly one statement. That one statement isnothing more than a call to the one method that you are trying to test. keeping that onestatement as simple as possible is also very important. For example, this is not ideal:This style is not recomended because way too many things can go wrong in this onestatement. All the GetComplexParamN() calls can throw for a variety of reasons unrelated tothe test itself. It is thus unclear to someone running into a problem why the failure occured.The ideal pattern is to move the complex parameter building into the `Arrange section:Now the only reason the line with CallSomeMethod() can fail is if the method itself blew up.Testing exception messagesIn general testing the specific exception message in a unit test is important. This ensuresthat the exact desired exception is what is being tested rather than a different exception ofFormatStringGetData// Arrange// Act// Assertint result = myObj.CallSomeMethod(GetComplexParam1(), GetComplexParam2(), GetComplexParam3());// ArrangeP1 p1 = GetComplexParam1();P2 p2 = GetComplexParam2();P3 p3 = GetComplexParam3();// Actint result = myObj.CallSomeMethod(p1, p2, p3);// AssertAssert.AreEqual(1234, result);", + "Text": "12 / 19\nUnit test structure\nThe contents of every unit test should be split into three distinct stages, optionally\nseparated by these comments:\nThe crucial thing here is the Act stage is exactly one statement. That one statement is\nnothing more than a call to the one method that you are trying to test. keeping that one\nstatement as simple as possible is also very important. For example, this is not ideal:\nThis style is not recomended because way too many things can go wrong in this one\nstatement. All the GetComplexParamN() calls can throw for a variety of reasons unrelated to\nthe test itself. It is thus unclear to someone running into a problem why the failure occured.\nThe ideal pattern is to move the complex parameter building into the `Arrange section:\nNow the only reason the line with CallSomeMethod() can fail is if the method itself blew up.\nTesting exception messages\nIn general testing the specific exception message in a unit test is important. This ensures\nthat the exact desired exception is what is being tested rather than a different exception of\nFormatString\nGetData\n// Arrange\n// Act\n// Assert\nint result = myObj.CallSomeMethod(GetComplexParam1(), GetComplexParam2(),\nGetComplexParam3());\n// Arrange\nP1 p1 = GetComplexParam1();\nP2 p2 = GetComplexParam2();\nP3 p3 = GetComplexParam3();\n// Act\nint result = myObj.CallSomeMethod(p1, p2, p3);\n// Assert\nAssert.AreEqual(1234, result);", "Links": [] }, { "Number": 13, - "Text": "13 / 19the same type. In order to verify the exact exception it is important to verify the message.Use xUnit.net's plethora of built-in assertionsxUnit.net includes many kinds of assertions – please use the most appropriate one for yourtest. This will make the tests a lot more readable and also allow the test runner report thebest possible errors (whether it's local or the CI machine). For example, these are bad:These are good:Parallel testsBy default all unit test assemblies should run in parallel mode, which is the default. Unittests shouldn't depend on any shared state, and so should generally be runnable inparallel. If the tests fail in parallel, the first thing to do is to figure out why; do not justdisable parallel tests!var ex = Assert.Throws( () => fruitBasket.GetBananaById(1234));Assert.Equal( \"1234\", ex.Message);Assert.Equal(true, someBool);Assert.True(\"abc123\" == someString);Assert.True(list1.Length == list2.Length);for (int i = 0; i < list1.Length; i++) { Assert.True( String.Equals list1[i], list2[i], StringComparison.OrdinalIgnoreCase));}Assert.True(someBool);Assert.Equal(\"abc123\", someString);// built-in collection assertions!Assert.Equal(list1, list2, StringComparer.OrdinalIgnoreCase);", + "Text": "13 / 19\nthe same type. In order to verify the exact exception it is important to verify the message.\nUse xUnit.net's plethora of built-in assertions\nxUnit.net includes many kinds of assertions – please use the most appropriate one for your\ntest. This will make the tests a lot more readable and also allow the test runner report the\nbest possible errors (whether it's local or the CI machine). For example, these are bad:\nThese are good:\nParallel tests\nBy default all unit test assemblies should run in parallel mode, which is the default. Unit\ntests shouldn't depend on any shared state, and so should generally be runnable in\nparallel. If the tests fail in parallel, the first thing to do is to figure out why; do not just\ndisable parallel tests!\nvar ex = Assert.Throws(\n() => fruitBasket.GetBananaById(1234));\nAssert.Equal(\n\"1234\",\nex.Message);\nAssert.Equal(true, someBool);\nAssert.True(\"abc123\" == someString);\nAssert.True(list1.Length == list2.Length);\nfor (int i = 0; i < list1.Length; i++) {\nAssert.True(\nString.Equals\nlist1[i],\nlist2[i],\nStringComparison.OrdinalIgnoreCase));\n}\nAssert.True(someBool);\nAssert.Equal(\"abc123\", someString);\n// built-in collection assertions!\nAssert.Equal(list1, list2, StringComparer.OrdinalIgnoreCase);", "Links": [] }, { "Number": 14, - "Text": "14 / 19For functional tests it is reasonable to disable parallel tests.", + "Text": "14 / 19\nFor functional tests it is reasonable to disable parallel tests.", "Links": [] }, { "Number": 15, - "Text": "15 / 19MarkdownMarkdown\uF1C5 is a lightweight markup language with plain text formatting syntax. Docfxsupports CommonMark\uF1C5 compliant Markdown parsed through the Markdig\uF1C5 parsingengine.Link to Math ExpressionsBlock QuotesThis is a block quote.AlertsNOTEInformation the user should notice even if skimming.\uF431TIPOptional information to help a user be more successful.\uF431IMPORTANTEssential information required for user success.\uF623CAUTIONNegative potential consequences of an action.\uF623WARNINGDangerous certain consequences of an action.\uF333", + "Text": "15 / 19\nMarkdown\nMarkdown\uF1C5 is a lightweight markup language with plain text formatting syntax. Docfx\nsupports CommonMark\uF1C5 compliant Markdown parsed through the Markdig\uF1C5 parsing\nengine.\nLink to Math Expressions\nBlock Quotes\nThis is a block quote.\nAlerts\nNOTE\nInformation the user should notice even if skimming.\n\uF431\nTIP\nOptional information to help a user be more successful.\n\uF431\nIMPORTANT\nEssential information required for user success.\n\uF623\nCAUTION\nNegative potential consequences of an action.\n\uF623\nWARNING\nDangerous certain consequences of an action.\n\uF333", "Links": [ { "Uri": "https://daringfireball.net/projects/markdown/" @@ -230,7 +230,7 @@ { "Number": 16, "NumberOfImages": 1, - "Text": "16 / 19ImageMermaid DiagramsFlowchartCode SnippetThe example highlights lines 2, line 5 to 7 and lines 9 to the end of the file.MY TODOThis is a TODO.TextOneTwoHardRoundDecisionResult 1Result 2", + "Text": "16 / 19\nImage\nMermaid Diagrams\nFlowchart\nCode Snippet\nThe example highlights lines 2, line 5 to 7 and lines 9 to the end of the file.\nMY TODO\nThis is a TODO.\nText\nOne\nTwo\nHard Round Decision\nResult 1\nResult 2", "Links": [ { "Uri": "https://learn.microsoft.com/en-us/media/learn/not-found/learn-not-found-light-mode.png?branch=main" @@ -242,12 +242,12 @@ }, { "Number": 17, - "Text": "17 / 19Math ExpressionsThis sentence uses $ delimiters to show math inline: The Cauchy-Schwarz InequalityThis expression uses \\$ to display a dollar sign: To split $100 in half, we calculate using System;using Azure;using Azure.Storage;using Azure.Storage.Blobs;class Program{ static void Main(string[] args) { // Define the connection string for the storage account string connectionString = \"DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.windows.net\"; // Create a new BlobServiceClient using the connection string var blobServiceClient = new BlobServiceClient(connectionString); // Create a new container var container = blobServiceClient.CreateBlobContainer(\"mycontainer\"); // Upload a file to the container using (var fileStream = File.OpenRead(\"path/to/file.txt\")) { container.UploadBlob(\"file.txt\", fileStream); } // Download the file from the container var downloadedBlob = container.GetBlobClient(\"file.txt\").Download(); using (var fileStream = File.OpenWrite(\"path/to/downloaded-file.txt\")) { downloadedBlob.Value.Content.CopyTo(fileStream); } }}", + "Text": "17 / 19\nMath Expressions\nThis sentence uses $ delimiters to show math inline:\nThe Cauchy-Schwarz Inequality\nThis expression uses \\$ to display a dollar sign:\nTo split $100 in half, we calculate\nusing System;\nusing Azure;\nusing Azure.Storage;\nusing Azure.Storage.Blobs;\nclass Program\n{ \nstatic void Main(string[] args)\n{ \n// Define the connection string for the storage account\nstring connectionString = \"DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.windows.net\";\n// Create a new BlobServiceClient using the connection string\nvar blobServiceClient = new BlobServiceClient(connectionString);\n// Create a new container\nvar container = blobServiceClient.CreateBlobContainer(\"mycontainer\");\n// Upload a file to the container\nusing (var fileStream = File.OpenRead(\"path/to/file.txt\"))\n{ \ncontainer.UploadBlob(\"file.txt\", fileStream);\n} \n// Download the file from the container\nvar downloadedBlob = container.GetBlobClient(\"file.txt\").Download();\nusing (var fileStream = File.OpenWrite(\"path/to/downloaded-file.txt\"))\n{ \ndownloadedBlob.Value.Content.CopyTo(fileStream);\n} \n}\n}", "Links": [] }, { "Number": 18, - "Text": "18 / 19Custom Syntax HighlightingTabsLinuxWindowsThe above tab group was created with the following syntax:Tabs are indicated by using a specific link syntax within a Markdown header. The syntax canbe described as follows:A tab starts with a Markdown header, #, and is followed by a Markdown link [](). The textof the link will become the text of the tab header, displayed to the customer. In order forthe header to be recognized as a tab, the link itself must start with #tab/ and be followedby an ID representing the content of the tab. The ID is used to sync all same-ID tabs acrossthe page. Using the above example, when a user selects a tab with the link #tab/windows, alltabs with the link #tab/windows on the page will be selected.Dependent tabsresource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = { name: 'hello' // (...)}Content for Linux...# [Linux](#tab/linux)Content for Linux...# [Windows](#tab/windows)Content for Windows...---# [Tab Display Name](#tab/tab-id)", + "Text": "18 / 19\nCustom Syntax Highlighting\nTabs\nLinux Windows\nThe above tab group was created with the following syntax:\nTabs are indicated by using a specific link syntax within a Markdown header. The syntax can\nbe described as follows:\nA tab starts with a Markdown header, #, and is followed by a Markdown link [](). The text\nof the link will become the text of the tab header, displayed to the customer. In order for\nthe header to be recognized as a tab, the link itself must start with #tab/ and be followed\nby an ID representing the content of the tab. The ID is used to sync all same-ID tabs across\nthe page. Using the above example, when a user selects a tab with the link #tab/windows, all\ntabs with the link #tab/windows on the page will be selected.\nDependent tabs\nresource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {\nname: 'hello'\n// (...)\n}\nContent for Linux...\n# [Linux](#tab/linux)\nContent for Linux...\n# [Windows](#tab/windows)\nContent for Windows...\n---\n# [Tab Display Name](#tab/tab-id)", "Links": [ { "Goto": { @@ -262,7 +262,7 @@ }, { "Number": 19, - "Text": "19 / 19It's possible to make the selection in one set of tabs dependent on the selection in anotherset of tabs. Here's an example of that in action:.NETTypeScriptREST APINotice how changing the Linux/Windows selection above changes the content in the .NETand TypeScript tabs. This is because the tab group defines two versions for each .NET andTypeScript, where the Windows/Linux selection above determines which version is shownfor .NET/TypeScript. Here's the markup that shows how this is done:DetailsDemo.NET content for Linux...# [.NET](#tab/dotnet/linux).NET content for Linux...# [.NET](#tab/dotnet/windows).NET content for Windows...# [TypeScript](#tab/typescript/linux)TypeScript content for Linux...# [TypeScript](#tab/typescript/windows)TypeScript content for Windows...# [REST API](#tab/rest)REST API content, independent of platform...---", + "Text": "19 / 19\nIt's possible to make the selection in one set of tabs dependent on the selection in another\nset of tabs. Here's an example of that in action:\n.NET TypeScript REST API\nNotice how changing the Linux/Windows selection above changes the content in the .NET\nand TypeScript tabs. This is because the tab group defines two versions for each .NET and\nTypeScript, where the Windows/Linux selection above determines which version is shown\nfor .NET/TypeScript. Here's the markup that shows how this is done:\nDetails\nDemo\n.NET content for Linux...\n# [.NET](#tab/dotnet/linux)\n.NET content for Linux...\n# [.NET](#tab/dotnet/windows)\n.NET content for Windows...\n# [TypeScript](#tab/typescript/linux)\nTypeScript content for Linux...\n# [TypeScript](#tab/typescript/windows)\nTypeScript content for Windows...\n# [REST API](#tab/rest)\nREST API content, independent of platform...\n---", "Links": [ { "Goto": { diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/index.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/index.verified.json index 181ac491d25..019606d0795 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/index.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/index.verified.json @@ -2,871 +2,916 @@ "api/BuildFromAssembly.Class1.html": { "href": "api/BuildFromAssembly.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll This is a test class. public class Class1 Inheritance object Class1 Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors Class1() public Class1() Methods HelloWorld() Hello World. public static void HelloWorld()" + "summary": "Class Class1 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll This is a test class. public class Class1 Inheritance object Class1 Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object) object.Equals(object, object) object.ReferenceEquals(object, object) object.GetHashCode() Constructors Class1() public Class1() Methods HelloWorld() Hello World. public static void HelloWorld()" }, "api/BuildFromAssembly.Issue5432.html": { "href": "api/BuildFromAssembly.Issue5432.html", "title": "Struct Issue5432 | docfx seed website", - "keywords": "Struct Issue5432 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll public struct Issue5432 Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.GetType() object.Equals(object, object) object.ReferenceEquals(object, object) Properties Name public string Name { get; } Property Value string" + "summary": "Struct Issue5432 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll public struct Issue5432 Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.GetType() object.Equals(object, object) object.ReferenceEquals(object, object) Properties Name public string Name { get; } Property Value string" }, "api/BuildFromAssembly.html": { "href": "api/BuildFromAssembly.html", "title": "Namespace BuildFromAssembly | docfx seed website", - "keywords": "Namespace BuildFromAssembly Classes Class1 This is a test class. Structs Issue5432" + "summary": "Namespace BuildFromAssembly Classes Class1 This is a test class. Structs Issue5432" }, "api/BuildFromCSharpSourceCode.CSharp.html": { "href": "api/BuildFromCSharpSourceCode.CSharp.html", "title": "Class CSharp | docfx seed website", - "keywords": "Class CSharp Namespace BuildFromCSharpSourceCode public class CSharp Inheritance object CSharp Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Main(string[]) public static void Main(string[] args) Parameters args string[]" + "summary": "Class CSharp Namespace BuildFromCSharpSourceCode public class CSharp Inheritance object CSharp Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Main(string[]) public static void Main(string[] args) Parameters args string[]" }, "api/BuildFromCSharpSourceCode.html": { "href": "api/BuildFromCSharpSourceCode.html", "title": "Namespace BuildFromCSharpSourceCode | docfx seed website", - "keywords": "Namespace BuildFromCSharpSourceCode Classes CSharp" + "summary": "Namespace BuildFromCSharpSourceCode Classes CSharp" }, "api/BuildFromProject.Class1.IIssue8948.html": { "href": "api/BuildFromProject.Class1.IIssue8948.html", "title": "Interface Class1.IIssue8948 | docfx seed website", - "keywords": "Interface Class1.IIssue8948 Namespace BuildFromProject Assembly BuildFromProject.dll public interface Class1.IIssue8948 Methods DoNothing() Does nothing with generic type T. void DoNothing() Type Parameters T A generic type." + "summary": "Interface Class1.IIssue8948 Namespace BuildFromProject Assembly BuildFromProject.dll public interface Class1.IIssue8948 Methods DoNothing() Does nothing with generic type T. void DoNothing() Type Parameters T A generic type." }, "api/BuildFromProject.Class1.Issue8665.html": { "href": "api/BuildFromProject.Class1.Issue8665.html", "title": "Class Class1.Issue8665 | docfx seed website", - "keywords": "Class Class1.Issue8665 Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8665 Inheritance object Class1.Issue8665 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors Issue8665() public Issue8665() Issue8665(int) public Issue8665(int foo) Parameters foo int Issue8665(int, char) public Issue8665(int foo, char bar) Parameters foo int bar char Issue8665(int, char, string) public Issue8665(int foo, char bar, string baz) Parameters foo int bar char baz string Properties Bar public char Bar { get; } Property Value char Baz public string Baz { get; } Property Value string Foo public int Foo { get; } Property Value int" + "summary": "Class Class1.Issue8665 Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8665 Inheritance object Class1.Issue8665 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors Issue8665() public Issue8665() Issue8665(int) public Issue8665(int foo) Parameters foo int Issue8665(int, char) public Issue8665(int foo, char bar) Parameters foo int bar char Issue8665(int, char, string) public Issue8665(int foo, char bar, string baz) Parameters foo int bar char baz string Properties Bar public char Bar { get; } Property Value char Baz public string Baz { get; } Property Value string Foo public int Foo { get; } Property Value int" }, "api/BuildFromProject.Class1.Issue8696Attribute.html": { "href": "api/BuildFromProject.Class1.Issue8696Attribute.html", "title": "Class Class1.Issue8696Attribute | docfx seed website", - "keywords": "Class Class1.Issue8696Attribute Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8696Attribute : Attribute Inheritance object Attribute Class1.Issue8696Attribute Inherited Members Attribute.Equals(object) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object) Attribute.TypeId object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors Issue8696Attribute(string?, int, int, string[]?, bool, Type?) [Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)] public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null) Parameters description string boundsMin int boundsMax int validGameModes string[] hasMultipleSelections bool enumType Type" + "summary": "Class Class1.Issue8696Attribute Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8696Attribute : Attribute Inheritance object Attribute Class1.Issue8696Attribute Inherited Members Attribute.Equals(object) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object) Attribute.TypeId object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors Issue8696Attribute(string?, int, int, string[]?, bool, Type?) [Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)] public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null) Parameters description string boundsMin int boundsMax int validGameModes string[] hasMultipleSelections bool enumType Type" }, "api/BuildFromProject.Class1.Issue8948.html": { "href": "api/BuildFromProject.Class1.Issue8948.html", "title": "Class Class1.Issue8948 | docfx seed website", - "keywords": "Class Class1.Issue8948 Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8948 : Class1.IIssue8948 Inheritance object Class1.Issue8948 Implements Class1.IIssue8948 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods DoNothing() Does nothing with generic type T. public void DoNothing() Type Parameters T A generic type." + "summary": "Class Class1.Issue8948 Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8948 : Class1.IIssue8948 Inheritance object Class1.Issue8948 Implements Class1.IIssue8948 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods DoNothing() Does nothing with generic type T. public void DoNothing() Type Parameters T A generic type." }, "api/BuildFromProject.Class1.Issue9260.html": { "href": "api/BuildFromProject.Class1.Issue9260.html", "title": "Enum Class1.Issue9260 | docfx seed website", - "keywords": "Enum Class1.Issue9260 Namespace BuildFromProject Assembly BuildFromProject.dll public enum Class1.Issue9260 Fields Value = 0 This is a regular enum value. [Obsolete] OldAndUnusedValue = 1 This is old and unused. You shouldn't use it anymore. [Obsolete(\"Use Value\")] OldAndUnusedValue2 = 2 This is old and unused. You shouldn't use it anymore." + "summary": "Enum Class1.Issue9260 Namespace BuildFromProject Assembly BuildFromProject.dll public enum Class1.Issue9260 Fields Value = 0 This is a regular enum value. This is a remarks section. Very important remarks about Value go here. [Obsolete] OldAndUnusedValue = 1 This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead. [Obsolete(\"Use Value\")] OldAndUnusedValue2 = 2 This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead." }, "api/BuildFromProject.Class1.Test-1.html": { "href": "api/BuildFromProject.Class1.Test-1.html", "title": "Class Class1.Test | docfx seed website", - "keywords": "Class Class1.Test Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Test Type Parameters T Inheritance object Class1.Test Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" + "summary": "Class Class1.Test Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Test Type Parameters T Inheritance object Class1.Test Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/BuildFromProject.Class1.html": { "href": "api/BuildFromProject.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1 : IClass1 Inheritance object Class1 Implements IClass1 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Issue1651() Pricing models are used to calculate theoretical option values 1Black Scholes 2Black76 3Black76Fut 4Equity Tree 5Variance Swap 6Dividend Forecast public void Issue1651() Issue1887() IConfiguration related helper and extension routines. public void Issue1887() Issue2623() public void Issue2623() Examples MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Remarks For example: MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Issue2723() public void Issue2723() Remarks Note This is a . & \" ' Inline . link for (var i = 0; i > 10; i++) // & \" ' var range = new Range { Min = 0, Max = 10 }; var range = new Range { Min = 0, Max = 10 }; Issue4017() public void Issue4017() Examples public void HookMessageDeleted(BaseSocketClient client) { client.MessageDeleted += HandleMessageDelete; } public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel) { // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask; } Remarks void Update() { myClass.Execute(); } Issue4392() public void Issue4392() Remarks @\"\\\\?\\\" @\"\\\\?\\\" Issue7484() public void Issue7484() Remarks There's really no reason to not believe that this class can test things. Term Description A Term A Description Bee Term Bee Description Issue8764() public void Issue8764() where T : unmanaged Type Parameters T Issue896() Test public void Issue896() See Also Class1.Test Class1 Issue9216() Calculates the determinant of a 3-dimensional matrix: \\(A = \\begin{vmatrix} a_{11} & a_{12} & a_{13} \\\\ a_{21} & a_{22} & a_{23} \\\\ a_{31} & a_{32} & a_{33} \\end{vmatrix}\\) Returns the smallest value: \\(\\left\\{\\begin{matrix}a, aa\\\\ \\end{matrix} \\right.\\) public static double Issue9216() Returns double XmlCommentIncludeTag() This method should do something... public void XmlCommentIncludeTag() Remarks This is remarks." + "summary": "Class Class1 Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1 : IClass1 Inheritance object Class1 Implements IClass1 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Issue1651() Pricing models are used to calculate theoretical option values 1Black Scholes 2Black76 3Black76Fut 4Equity Tree 5Variance Swap 6Dividend Forecast public void Issue1651() Issue1887() IConfiguration related helper and extension routines. public void Issue1887() Issue2623() public void Issue2623() Examples MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Remarks For example: MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Issue2723() public void Issue2723() Remarks Note This is a . & \" ' Inline . link for (var i = 0; i > 10; i++) // & \" ' var range = new Range { Min = 0, Max = 10 }; var range = new Range { Min = 0, Max = 10 }; Issue4017() public void Issue4017() Examples public void HookMessageDeleted(BaseSocketClient client) { client.MessageDeleted += HandleMessageDelete; } public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel) { // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask; } Remarks void Update() { myClass.Execute(); } Issue4392() public void Issue4392() Remarks @\"\\\\?\\\" @\"\\\\?\\\" Issue7484() public void Issue7484() Remarks There's really no reason to not believe that this class can test things. Term Description A Term A Description Bee Term Bee Description Issue8764() public void Issue8764() where T : unmanaged Type Parameters T Issue896() Test public void Issue896() See Also Class1.Test Class1 Issue9216() Calculates the determinant of a 3-dimensional matrix: \\(A = \\begin{vmatrix} a_{11} & a_{12} & a_{13} \\\\ a_{21} & a_{22} & a_{23} \\\\ a_{31} & a_{32} & a_{33} \\end{vmatrix}\\) Returns the smallest value: \\(\\left\\{\\begin{matrix}a, aa\\\\ \\end{matrix} \\right.\\) public static double Issue9216() Returns double XmlCommentIncludeTag() This method should do something... public void XmlCommentIncludeTag() Remarks This is remarks." }, "api/BuildFromProject.Dog.html": { "href": "api/BuildFromProject.Dog.html", "title": "Class Dog | docfx seed website", - "keywords": "Class Dog Namespace BuildFromProject Assembly BuildFromProject.dll Class representing a dog. public class Dog Inheritance object Dog Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors Dog(string, int) Constructor. public Dog(string name, int age) Parameters name string Name of the dog. age int Age of the dog. Properties Age Age of the dog. public int Age { get; } Property Value int Name Name of the dog. public string Name { get; } Property Value string" + "summary": "Class Dog Namespace BuildFromProject Assembly BuildFromProject.dll Class representing a dog. public class Dog Inheritance object Dog Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors Dog(string, int) Constructor. public Dog(string name, int age) Parameters name string Name of the dog. age int Age of the dog. Properties Age Age of the dog. public int Age { get; } Property Value int Name Name of the dog. public string Name { get; } Property Value string" }, "api/BuildFromProject.IInheritdoc.html": { "href": "api/BuildFromProject.IInheritdoc.html", "title": "Interface IInheritdoc | docfx seed website", - "keywords": "Interface IInheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public interface IInheritdoc Methods Issue7629() This method should do something... void Issue7629()" + "summary": "Interface IInheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public interface IInheritdoc Methods Issue7629() This method should do something... void Issue7629()" }, "api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html": { "href": "api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html", "title": "Class Inheritdoc.Issue6366.Class1 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366.Class1 Namespace BuildFromProject Assembly BuildFromProject.dll public abstract class Inheritdoc.Issue6366.Class1 Type Parameters T Inheritance object Inheritdoc.Issue6366.Class1 Derived Inheritdoc.Issue6366.Class2 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods TestMethod1(T, int) This text inherited. public abstract T TestMethod1(T parm1, int parm2) Parameters parm1 T This text NOT inherited. parm2 int This text inherited. Returns T This text inherited." + "summary": "Class Inheritdoc.Issue6366.Class1 Namespace BuildFromProject Assembly BuildFromProject.dll public abstract class Inheritdoc.Issue6366.Class1 Type Parameters T Inheritance object Inheritdoc.Issue6366.Class1 Derived Inheritdoc.Issue6366.Class2 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods TestMethod1(T, int) This text inherited. public abstract T TestMethod1(T parm1, int parm2) Parameters parm1 T This text NOT inherited. parm2 int This text inherited. Returns T This text inherited." }, "api/BuildFromProject.Inheritdoc.Issue6366.Class2.html": { "href": "api/BuildFromProject.Inheritdoc.Issue6366.Class2.html", "title": "Class Inheritdoc.Issue6366.Class2 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366.Class2 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1 Inheritance object Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods TestMethod1(bool, int) This text inherited. public override bool TestMethod1(bool parm1, int parm2) Parameters parm1 bool This text NOT inherited. parm2 int This text inherited. Returns bool This text inherited." + "summary": "Class Inheritdoc.Issue6366.Class2 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1 Inheritance object Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods TestMethod1(bool, int) This text inherited. public override bool TestMethod1(bool parm1, int parm2) Parameters parm1 bool This text NOT inherited. parm2 int This text inherited. Returns bool This text inherited." }, "api/BuildFromProject.Inheritdoc.Issue6366.html": { "href": "api/BuildFromProject.Inheritdoc.Issue6366.html", "title": "Class Inheritdoc.Issue6366 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366 Inheritance object Inheritdoc.Issue6366 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" + "summary": "Class Inheritdoc.Issue6366 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366 Inheritance object Inheritdoc.Issue6366 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/BuildFromProject.Inheritdoc.Issue7035.html": { "href": "api/BuildFromProject.Inheritdoc.Issue7035.html", "title": "Class Inheritdoc.Issue7035 | docfx seed website", - "keywords": "Class Inheritdoc.Issue7035 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue7035 Inheritance object Inheritdoc.Issue7035 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods A() public void A() B() public void B()" + "summary": "Class Inheritdoc.Issue7035 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue7035 Inheritance object Inheritdoc.Issue7035 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods A() public void A() B() public void B()" }, "api/BuildFromProject.Inheritdoc.Issue7484.html": { "href": "api/BuildFromProject.Inheritdoc.Issue7484.html", "title": "Class Inheritdoc.Issue7484 | docfx seed website", - "keywords": "Class Inheritdoc.Issue7484 Namespace BuildFromProject Assembly BuildFromProject.dll This is a test class to have something for DocFX to document. public class Inheritdoc.Issue7484 Inheritance object Inheritdoc.Issue7484 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks We're going to talk about things now. BoolReturningMethod(bool) Simple method to generate docs for. DoDad A string that could have something. Constructors Issue7484() This is a constructor to document. public Issue7484() Properties DoDad A string that could have something. public string DoDad { get; } Property Value string Methods BoolReturningMethod(bool) Simple method to generate docs for. public bool BoolReturningMethod(bool source) Parameters source bool A meaningless boolean value, much like most questions in the world. Returns bool An exactly equivalently meaningless boolean value, much like most answers in the world. Remarks I'd like to take a moment to thank all of those who helped me get to a place where I can write documentation like this." + "summary": "Class Inheritdoc.Issue7484 Namespace BuildFromProject Assembly BuildFromProject.dll This is a test class to have something for DocFX to document. public class Inheritdoc.Issue7484 Inheritance object Inheritdoc.Issue7484 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks We're going to talk about things now. BoolReturningMethod(bool) Simple method to generate docs for. DoDad A string that could have something. Constructors Issue7484() This is a constructor to document. public Issue7484() Properties DoDad A string that could have something. public string DoDad { get; } Property Value string Methods BoolReturningMethod(bool) Simple method to generate docs for. public bool BoolReturningMethod(bool source) Parameters source bool A meaningless boolean value, much like most questions in the world. Returns bool An exactly equivalently meaningless boolean value, much like most answers in the world. Remarks I'd like to take a moment to thank all of those who helped me get to a place where I can write documentation like this." }, "api/BuildFromProject.Inheritdoc.Issue8101.html": { "href": "api/BuildFromProject.Inheritdoc.Issue8101.html", "title": "Class Inheritdoc.Issue8101 | docfx seed website", - "keywords": "Class Inheritdoc.Issue8101 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue8101 Inheritance object Inheritdoc.Issue8101 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Tween(int, int, float, Action) Create a new tween. public static object Tween(int from, int to, float duration, Action onChange) Parameters from int The starting value. to int The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance. Tween(float, float, float, Action) Create a new tween. public static object Tween(float from, float to, float duration, Action onChange) Parameters from float The starting value. to float The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance." + "summary": "Class Inheritdoc.Issue8101 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue8101 Inheritance object Inheritdoc.Issue8101 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Tween(int, int, float, Action) Create a new tween. public static object Tween(int from, int to, float duration, Action onChange) Parameters from int The starting value. to int The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance. Tween(float, float, float, Action) Create a new tween. public static object Tween(float from, float to, float duration, Action onChange) Parameters from float The starting value. to float The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance." }, "api/BuildFromProject.Inheritdoc.Issue8129.html": { "href": "api/BuildFromProject.Inheritdoc.Issue8129.html", "title": "Struct Inheritdoc.Issue8129 | docfx seed website", - "keywords": "Struct Inheritdoc.Issue8129 Namespace BuildFromProject Assembly BuildFromProject.dll public struct Inheritdoc.Issue8129 Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Constructors Issue8129(string) public Issue8129(string foo) Parameters foo string" + "summary": "Struct Inheritdoc.Issue8129 Namespace BuildFromProject Assembly BuildFromProject.dll public struct Inheritdoc.Issue8129 Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Constructors Issue8129(string) public Issue8129(string foo) Parameters foo string" + }, + "api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html": { + "href": "api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "title": "Interface Inheritdoc.Issue9736.IJsonApiOptions | docfx seed website", + "summary": "Interface Inheritdoc.Issue9736.IJsonApiOptions Namespace BuildFromProject Assembly BuildFromProject.dll public interface Inheritdoc.Issue9736.IJsonApiOptions Properties UseRelativeLinks Whether to use relative links for all resources. false by default. bool UseRelativeLinks { get; } Property Value bool Examples options.UseRelativeLinks = true; { \"type\": \"articles\", \"id\": \"4309\", \"relationships\": { \"author\": { \"links\": { \"self\": \"/api/shopping/articles/4309/relationships/author\", \"related\": \"/api/shopping/articles/4309/author\" } } } }" + }, + "api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html": { + "href": "api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "title": "Class Inheritdoc.Issue9736.JsonApiOptions | docfx seed website", + "summary": "Class Inheritdoc.Issue9736.JsonApiOptions Namespace BuildFromProject Assembly BuildFromProject.dll public sealed class Inheritdoc.Issue9736.JsonApiOptions : Inheritdoc.Issue9736.IJsonApiOptions Inheritance object Inheritdoc.Issue9736.JsonApiOptions Implements Inheritdoc.Issue9736.IJsonApiOptions Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Properties UseRelativeLinks Whether to use relative links for all resources. false by default. public bool UseRelativeLinks { get; set; } Property Value bool Examples options.UseRelativeLinks = true; { \"type\": \"articles\", \"id\": \"4309\", \"relationships\": { \"author\": { \"links\": { \"self\": \"/api/shopping/articles/4309/relationships/author\", \"related\": \"/api/shopping/articles/4309/author\" } } } }" + }, + "api/BuildFromProject.Inheritdoc.Issue9736.html": { + "href": "api/BuildFromProject.Inheritdoc.Issue9736.html", + "title": "Class Inheritdoc.Issue9736 | docfx seed website", + "summary": "Class Inheritdoc.Issue9736 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue9736 Inheritance object Inheritdoc.Issue9736 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/BuildFromProject.Inheritdoc.html": { "href": "api/BuildFromProject.Inheritdoc.html", "title": "Class Inheritdoc | docfx seed website", - "keywords": "Class Inheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc : IInheritdoc, IDisposable Inheritance object Inheritdoc Implements IInheritdoc IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Issue7628() This method should do something... public void Issue7628() Issue7629() This method should do something... public void Issue7629()" + "summary": "Class Inheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc : IInheritdoc, IDisposable Inheritance object Inheritdoc Implements IInheritdoc IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Issue7628() This method should do something... public void Issue7628() Issue7629() This method should do something... public void Issue7629()" }, "api/BuildFromProject.Issue8540.A.A.html": { "href": "api/BuildFromProject.Issue8540.A.A.html", "title": "Class A | docfx seed website", - "keywords": "Class A Namespace BuildFromProject.Issue8540.A Assembly BuildFromProject.dll public class A Inheritance object A Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" + "summary": "Class A Namespace BuildFromProject.Issue8540.A Assembly BuildFromProject.dll public class A Inheritance object A Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/BuildFromProject.Issue8540.A.html": { "href": "api/BuildFromProject.Issue8540.A.html", "title": "Namespace BuildFromProject.Issue8540.A | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540.A Classes A" + "summary": "Namespace BuildFromProject.Issue8540.A Classes A" }, "api/BuildFromProject.Issue8540.B.B.html": { "href": "api/BuildFromProject.Issue8540.B.B.html", "title": "Class B | docfx seed website", - "keywords": "Class B Namespace BuildFromProject.Issue8540.B Assembly BuildFromProject.dll public class B Inheritance object B Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" + "summary": "Class B Namespace BuildFromProject.Issue8540.B Assembly BuildFromProject.dll public class B Inheritance object B Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/BuildFromProject.Issue8540.B.html": { "href": "api/BuildFromProject.Issue8540.B.html", "title": "Namespace BuildFromProject.Issue8540.B | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540.B Classes B" + "summary": "Namespace BuildFromProject.Issue8540.B Classes B" }, "api/BuildFromProject.Issue8540.html": { "href": "api/BuildFromProject.Issue8540.html", "title": "Namespace BuildFromProject.Issue8540 | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540 Namespaces BuildFromProject.Issue8540.A BuildFromProject.Issue8540.B" + "summary": "Namespace BuildFromProject.Issue8540 Namespaces BuildFromProject.Issue8540.A BuildFromProject.Issue8540.B" }, "api/BuildFromProject.Issue8725.html": { "href": "api/BuildFromProject.Issue8725.html", "title": "Class Issue8725 | docfx seed website", - "keywords": "Class Issue8725 Namespace BuildFromProject Assembly BuildFromProject.dll A nice class public class Issue8725 Inheritance object Issue8725 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods MoreOperations() Another nice operation public void MoreOperations() MyOperation() A nice operation public void MyOperation() See Also Class1" + "summary": "Class Issue8725 Namespace BuildFromProject Assembly BuildFromProject.dll A nice class public class Issue8725 Inheritance object Issue8725 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods MoreOperations() Another nice operation public void MoreOperations() MyOperation() A nice operation public void MyOperation() See Also Class1" }, "api/BuildFromProject.html": { "href": "api/BuildFromProject.html", "title": "Namespace BuildFromProject | docfx seed website", - "keywords": "Namespace BuildFromProject Namespaces BuildFromProject.Issue8540 Classes Class1 Class1.Issue8665 Class1.Issue8696Attribute Class1.Issue8948 Class1.Test Dog Class representing a dog. Inheritdoc Inheritdoc.Issue6366 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2 Inheritdoc.Issue7035 Inheritdoc.Issue7484 This is a test class to have something for DocFX to document. Inheritdoc.Issue8101 Issue8725 A nice class Structs Inheritdoc.Issue8129 Interfaces Class1.IIssue8948 IInheritdoc Enums Class1.Issue9260" + "summary": "Namespace BuildFromProject Namespaces BuildFromProject.Issue8540 Classes Class1 Class1.Issue8665 Class1.Issue8696Attribute Class1.Issue8948 Class1.Test Dog Class representing a dog. Inheritdoc Inheritdoc.Issue6366 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2 Inheritdoc.Issue7035 Inheritdoc.Issue7484 This is a test class to have something for DocFX to document. Inheritdoc.Issue8101 Inheritdoc.Issue9736 Inheritdoc.Issue9736.JsonApiOptions Issue8725 A nice class Structs Inheritdoc.Issue8129 Interfaces Class1.IIssue8948 IInheritdoc Inheritdoc.Issue9736.IJsonApiOptions Enums Class1.Issue9260" }, "api/BuildFromVBSourceCode.BaseClass1.html": { "href": "api/BuildFromVBSourceCode.BaseClass1.html", "title": "Class BaseClass1 | docfx seed website", - "keywords": "Class BaseClass1 Namespace BuildFromVBSourceCode This is the BaseClass public abstract class BaseClass1 Inheritance object BaseClass1 Derived Class1 Inherited Members object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods WithDeclarationKeyword(Class1) public abstract DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" + "summary": "Class BaseClass1 Namespace BuildFromVBSourceCode This is the BaseClass public abstract class BaseClass1 Inheritance object BaseClass1 Derived Class1 Inherited Members object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods WithDeclarationKeyword(Class1) public abstract DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" }, "api/BuildFromVBSourceCode.Class1.html": { "href": "api/BuildFromVBSourceCode.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace BuildFromVBSourceCode This is summary from vb class... public class Class1 : BaseClass1 Inheritance object BaseClass1 Class1 Inherited Members object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ValueClass This is a Value type public Class1 ValueClass Field Value Class1 Properties Keyword [Obsolete(\"This member is obsolete.\", true)] public Class1 Keyword { get; } Property Value Class1 Methods Value(string) This is a Function public int Value(string name) Parameters name string Name as the String value Returns int Returns Ahooo WithDeclarationKeyword(Class1) What is Sub? public override DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" + "summary": "Class Class1 Namespace BuildFromVBSourceCode This is summary from vb class... public class Class1 : BaseClass1 Inheritance object BaseClass1 Class1 Inherited Members object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ValueClass This is a Value type public Class1 ValueClass Field Value Class1 Properties Keyword [Obsolete(\"This member is obsolete.\", true)] public Class1 Keyword { get; } Property Value Class1 Methods Value(string) This is a Function public int Value(string name) Parameters name string Name as the String value Returns int Returns Ahooo WithDeclarationKeyword(Class1) What is Sub? public override DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" }, "api/BuildFromVBSourceCode.html": { "href": "api/BuildFromVBSourceCode.html", "title": "Namespace BuildFromVBSourceCode | docfx seed website", - "keywords": "Namespace BuildFromVBSourceCode Classes BaseClass1 This is the BaseClass Class1 This is summary from vb class..." + "summary": "Namespace BuildFromVBSourceCode Classes BaseClass1 This is the BaseClass Class1 This is summary from vb class..." }, "api/CatLibrary.Cat-2.html": { "href": "api/CatLibrary.Cat-2.html", "title": "Class Cat | docfx seed website", - "keywords": "Class Cat Namespace CatLibrary Assembly CatLibrary.dll Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class This is a class talking about CAT. NOTE This is a CAT class Refer to IAnimal to see other animals. [Serializable] [Obsolete] public class Cat : ICat, IAnimal where T : class, new() where K : struct Type Parameters T This type should be class and can new instance. K This type is a struct type, class type can't be used for this parameter. Inheritance object Cat Implements ICat IAnimal Inherited Members object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) Examples Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct. var a = new Cat(object, int)(); int catNumber = new int(); unsafe { a.GetFeetLength(catNumber); } As you see, here we bring in pointer so we need to add unsafe keyword. Remarks THIS is remarks overridden in MARKDWON file Constructors Cat() Default constructor. public Cat() Cat(string, out int, string, bool) It's a complex constructor. The parameter will have some attributes. public Cat(string nickName, out int age, string realName, bool isHealthy) Parameters nickName string it's string type. age int It's an out and ref parameter. realName string It's an out paramter. isHealthy bool It's an in parameter. Cat(T) Constructor with one generic parameter. public Cat(T ownType) Parameters ownType T This parameter type defined by class. Fields isHealthy Field with attribute. [ContextStatic] [NonSerialized] [Obsolete] public bool isHealthy Field Value bool Properties Age Hint cat's age. [Obsolete] protected int Age { get; set; } Property Value int this[string] This is index property of Cat. You can see that the visibility is different between get and set method. public int this[string a] { protected get; set; } Parameters a string Cat's name. Property Value int Cat's number. Name EII property. public string Name { get; } Property Value string Methods Override CalculateFood Name It's an overridden summary in markdown format This is overriding methods. You can override parameter descriptions for methods, you can even add exceptions to methods. Check the intermediate obj folder to see the data model of the generated method/class. Override Yaml header should follow the data structure. public Dictionary> CalculateFood(DateTime date) Parameters date DateTime This is overridden description for a parameter. id must be specified. Returns Dictionary> It's overridden description for return. type must be specified. Exceptions ArgumentException This is an overridden argument exception. you can add additional exception by adding different exception type. Equals(object) Override the method of Object.Equals(object obj). public override bool Equals(object obj) Parameters obj object Can pass any class type. Returns bool The return value tell you whehter the compare operation is successful. GetTailLength(int*, params object[]) It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword. public long GetTailLength(int* catName, params object[] parameters) Parameters catName int* Thie represent for cat name length. parameters object[] Optional parameters. Returns long Return cat tail's length. Jump(T, K, ref bool) This method have attribute above it. [Conditional(\"Debug\")] public void Jump(T ownType, K anotherOwnType, ref bool cheat) Parameters ownType T Type come from class define. anotherOwnType K Type come from class define. cheat bool Hint whether this cat has cheat mode. Exceptions ArgumentException This is an argument exception Events ownEat Eat event of this cat [Obsolete(\"This _event handler_ is deprecated.\")] public event EventHandler ownEat Event Type EventHandler Operators operator +(Cat, int) Addition operator of this class. public static int operator +(Cat lsr, int rsr) Parameters lsr Cat .. rsr int ~~ Returns int Result with int type. explicit operator Tom(Cat) Expilicit operator of this class. It means this cat can evolve to change to Tom. Tom and Jerry. public static explicit operator Tom(Cat src) Parameters src Cat Instance of this class. Returns Tom Advanced class type of cat. operator -(Cat, int) Similar with operaotr +, refer to that topic. public static int operator -(Cat lsr, int rsr) Parameters lsr Cat rsr int Returns int" + "summary": "Class Cat Namespace CatLibrary Assembly CatLibrary.dll Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class This is a class talking about CAT. NOTE This is a CAT class Refer to IAnimal to see other animals. [Serializable] [Obsolete] public class Cat : ICat, IAnimal where T : class, new() where K : struct Type Parameters T This type should be class and can new instance. K This type is a struct type, class type can't be used for this parameter. Inheritance object Cat Implements ICat IAnimal Inherited Members object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) Examples Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct. var a = new Cat(object, int)(); int catNumber = new int(); unsafe { a.GetFeetLength(catNumber); } As you see, here we bring in pointer so we need to add unsafe keyword. Remarks THIS is remarks overridden in MARKDWON file Constructors Cat() Default constructor. public Cat() Cat(string, out int, string, bool) It's a complex constructor. The parameter will have some attributes. public Cat(string nickName, out int age, string realName, bool isHealthy) Parameters nickName string it's string type. age int It's an out and ref parameter. realName string It's an out paramter. isHealthy bool It's an in parameter. Cat(T) Constructor with one generic parameter. public Cat(T ownType) Parameters ownType T This parameter type defined by class. Fields isHealthy Field with attribute. [ContextStatic] [NonSerialized] [Obsolete] public bool isHealthy Field Value bool Properties Age Hint cat's age. [Obsolete] protected int Age { get; set; } Property Value int this[string] This is index property of Cat. You can see that the visibility is different between get and set method. public int this[string a] { protected get; set; } Parameters a string Cat's name. Property Value int Cat's number. Name EII property. public string Name { get; } Property Value string Methods Override CalculateFood Name It's an overridden summary in markdown format This is overriding methods. You can override parameter descriptions for methods, you can even add exceptions to methods. Check the intermediate obj folder to see the data model of the generated method/class. Override Yaml header should follow the data structure. public Dictionary> CalculateFood(DateTime date) Parameters date DateTime This is overridden description for a parameter. id must be specified. Returns Dictionary> It's overridden description for return. type must be specified. Exceptions ArgumentException This is an overridden argument exception. you can add additional exception by adding different exception type. Equals(object) Override the method of Object.Equals(object obj). public override bool Equals(object obj) Parameters obj object Can pass any class type. Returns bool The return value tell you whehter the compare operation is successful. GetTailLength(int*, params object[]) It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword. public long GetTailLength(int* catName, params object[] parameters) Parameters catName int* Thie represent for cat name length. parameters object[] Optional parameters. Returns long Return cat tail's length. Jump(T, K, ref bool) This method have attribute above it. [Conditional(\"Debug\")] public void Jump(T ownType, K anotherOwnType, ref bool cheat) Parameters ownType T Type come from class define. anotherOwnType K Type come from class define. cheat bool Hint whether this cat has cheat mode. Exceptions ArgumentException This is an argument exception Events ownEat Eat event of this cat [Obsolete(\"This _event handler_ is deprecated.\")] public event EventHandler ownEat Event Type EventHandler Operators operator +(Cat, int) Addition operator of this class. public static int operator +(Cat lsr, int rsr) Parameters lsr Cat .. rsr int ~~ Returns int Result with int type. explicit operator Tom(Cat) Expilicit operator of this class. It means this cat can evolve to change to Tom. Tom and Jerry. public static explicit operator Tom(Cat src) Parameters src Cat Instance of this class. Returns Tom Advanced class type of cat. operator -(Cat, int) Similar with operaotr +, refer to that topic. public static int operator -(Cat lsr, int rsr) Parameters lsr Cat rsr int Returns int" }, "api/CatLibrary.CatException-1.html": { "href": "api/CatLibrary.CatException-1.html", "title": "Class CatException | docfx seed website", - "keywords": "Class CatException Namespace CatLibrary Assembly CatLibrary.dll public class CatException : Exception, ISerializable Type Parameters T Inheritance object Exception CatException Implements ISerializable Inherited Members Exception.GetBaseException() Exception.GetType() Exception.ToString() Exception.Data Exception.HelpLink Exception.HResult Exception.InnerException Exception.Message Exception.Source Exception.StackTrace Exception.TargetSite Exception.SerializeObjectState object.Equals(object) object.Equals(object, object) object.GetHashCode() object.MemberwiseClone() object.ReferenceEquals(object, object)" + "summary": "Class CatException Namespace CatLibrary Assembly CatLibrary.dll public class CatException : Exception, ISerializable Type Parameters T Inheritance object Exception CatException Implements ISerializable Inherited Members Exception.GetBaseException() Exception.GetType() Exception.ToString() Exception.Data Exception.HelpLink Exception.HResult Exception.InnerException Exception.Message Exception.Source Exception.StackTrace Exception.TargetSite Exception.SerializeObjectState object.Equals(object) object.Equals(object, object) object.GetHashCode() object.MemberwiseClone() object.ReferenceEquals(object, object)" }, "api/CatLibrary.Complex-2.html": { "href": "api/CatLibrary.Complex-2.html", "title": "Class Complex | docfx seed website", - "keywords": "Class Complex Namespace CatLibrary Assembly CatLibrary.dll public class Complex Type Parameters T J Inheritance object Complex Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" + "summary": "Class Complex Namespace CatLibrary Assembly CatLibrary.dll public class Complex Type Parameters T J Inheritance object Complex Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/CatLibrary.Core.ContainersRefType.ColorType.html": { "href": "api/CatLibrary.Core.ContainersRefType.ColorType.html", "title": "Enum ContainersRefType.ColorType | docfx seed website", - "keywords": "Enum ContainersRefType.ColorType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Enumeration ColorType public enum ContainersRefType.ColorType Fields Red = 0 red Blue = 1 blue Yellow = 2 yellow" + "summary": "Enum ContainersRefType.ColorType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Enumeration ColorType public enum ContainersRefType.ColorType Fields Red = 0 red Blue = 1 blue Yellow = 2 yellow" }, "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html": { "href": "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html", "title": "Class ContainersRefType.ContainersRefTypeChild | docfx seed website", - "keywords": "Class ContainersRefType.ContainersRefTypeChild Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ContainersRefType.ContainersRefTypeChild Inheritance object ContainersRefType.ContainersRefTypeChild Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" + "summary": "Class ContainersRefType.ContainersRefTypeChild Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ContainersRefType.ContainersRefTypeChild Inheritance object ContainersRefType.ContainersRefTypeChild Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html": { "href": "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html", "title": "Interface ContainersRefType.ContainersRefTypeChildInterface | docfx seed website", - "keywords": "Interface ContainersRefType.ContainersRefTypeChildInterface Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public interface ContainersRefType.ContainersRefTypeChildInterface" + "summary": "Interface ContainersRefType.ContainersRefTypeChildInterface Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public interface ContainersRefType.ContainersRefTypeChildInterface" }, "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html": { "href": "api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html", "title": "Delegate ContainersRefType.ContainersRefTypeDelegate | docfx seed website", - "keywords": "Delegate ContainersRefType.ContainersRefTypeDelegate Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Delegate ContainersRefTypeDelegate public delegate void ContainersRefType.ContainersRefTypeDelegate()" + "summary": "Delegate ContainersRefType.ContainersRefTypeDelegate Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Delegate ContainersRefTypeDelegate public delegate void ContainersRefType.ContainersRefTypeDelegate()" }, "api/CatLibrary.Core.ContainersRefType.html": { "href": "api/CatLibrary.Core.ContainersRefType.html", "title": "Struct ContainersRefType | docfx seed website", - "keywords": "Struct ContainersRefType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Struct ContainersRefType public struct ContainersRefType Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods Issue231.Bar(ContainersRefType) Issue231.Foo(ContainersRefType) Fields ColorCount ColorCount public long ColorCount Field Value long Properties GetColorCount GetColorCount public long GetColorCount { get; } Property Value long Methods ContainersRefTypeNonRefMethod(params object[]) ContainersRefTypeNonRefMethod array public static int ContainersRefTypeNonRefMethod(params object[] parmsArray) Parameters parmsArray object[] Returns int Events ContainersRefTypeEventHandler public event EventHandler ContainersRefTypeEventHandler Event Type EventHandler" + "summary": "Struct ContainersRefType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Struct ContainersRefType public struct ContainersRefType Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods Issue231.Bar(ContainersRefType) Issue231.Foo(ContainersRefType) Fields ColorCount ColorCount public long ColorCount Field Value long Properties GetColorCount GetColorCount public long GetColorCount { get; } Property Value long Methods ContainersRefTypeNonRefMethod(params object[]) ContainersRefTypeNonRefMethod array public static int ContainersRefTypeNonRefMethod(params object[] parmsArray) Parameters parmsArray object[] Returns int Events ContainersRefTypeEventHandler public event EventHandler ContainersRefTypeEventHandler Event Type EventHandler" }, "api/CatLibrary.Core.ExplicitLayoutClass.html": { "href": "api/CatLibrary.Core.ExplicitLayoutClass.html", "title": "Class ExplicitLayoutClass | docfx seed website", - "keywords": "Class ExplicitLayoutClass Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ExplicitLayoutClass Inheritance object ExplicitLayoutClass Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" + "summary": "Class ExplicitLayoutClass Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ExplicitLayoutClass Inheritance object ExplicitLayoutClass Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()" }, "api/CatLibrary.Core.Issue231.html": { "href": "api/CatLibrary.Core.Issue231.html", "title": "Class Issue231 | docfx seed website", - "keywords": "Class Issue231 Namespace CatLibrary.Core Assembly CatLibrary.dll public static class Issue231 Inheritance object Issue231 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Bar(ContainersRefType) public static void Bar(this ContainersRefType c) Parameters c ContainersRefType Foo(ContainersRefType) public static void Foo(this ContainersRefType c) Parameters c ContainersRefType" + "summary": "Class Issue231 Namespace CatLibrary.Core Assembly CatLibrary.dll public static class Issue231 Inheritance object Issue231 Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Bar(ContainersRefType) public static void Bar(this ContainersRefType c) Parameters c ContainersRefType Foo(ContainersRefType) public static void Foo(this ContainersRefType c) Parameters c ContainersRefType" }, "api/CatLibrary.Core.html": { "href": "api/CatLibrary.Core.html", "title": "Namespace CatLibrary.Core | docfx seed website", - "keywords": "Namespace CatLibrary.Core Classes ContainersRefType.ContainersRefTypeChild ExplicitLayoutClass Issue231 Structs ContainersRefType Struct ContainersRefType Interfaces ContainersRefType.ContainersRefTypeChildInterface Enums ContainersRefType.ColorType Enumeration ColorType Delegates ContainersRefType.ContainersRefTypeDelegate Delegate ContainersRefTypeDelegate" + "summary": "Namespace CatLibrary.Core Classes ContainersRefType.ContainersRefTypeChild ExplicitLayoutClass Issue231 Structs ContainersRefType Struct ContainersRefType Interfaces ContainersRefType.ContainersRefTypeChildInterface Enums ContainersRefType.ColorType Enumeration ColorType Delegates ContainersRefType.ContainersRefTypeDelegate Delegate ContainersRefTypeDelegate" }, "api/CatLibrary.FakeDelegate-1.html": { "href": "api/CatLibrary.FakeDelegate-1.html", "title": "Delegate FakeDelegate | docfx seed website", - "keywords": "Delegate FakeDelegate Namespace CatLibrary Assembly CatLibrary.dll Fake delegate public delegate int FakeDelegate(long num, string name, params object[] scores) Parameters num long Fake para name string Fake para scores object[] Optional Parameter. Returns int Return a fake number to confuse you. Type Parameters T Fake para" + "summary": "Delegate FakeDelegate Namespace CatLibrary Assembly CatLibrary.dll Fake delegate public delegate int FakeDelegate(long num, string name, params object[] scores) Parameters num long Fake para name string Fake para scores object[] Optional Parameter. Returns int Return a fake number to confuse you. Type Parameters T Fake para" }, "api/CatLibrary.IAnimal.html": { "href": "api/CatLibrary.IAnimal.html", "title": "Interface IAnimal | docfx seed website", - "keywords": "Interface IAnimal Namespace CatLibrary Assembly CatLibrary.dll This is basic interface of all animal. Welcome to the Animal world! public interface IAnimal Remarks THIS is remarks overridden in MARKDWON file Properties this[int] Return specific number animal's name. string this[int index] { get; } Parameters index int Animal number. Property Value string Animal name. Name Name of Animal. string Name { get; } Property Value string Methods Eat() Animal's eat method. void Eat() Eat(string) Feed the animal with some food void Eat(string food) Parameters food string Food to eat Eat(Tool) Overload method of eat. This define the animal eat by which tool. void Eat(Tool tool) where Tool : class Parameters tool Tool Tool name. Type Parameters Tool It's a class type." + "summary": "Interface IAnimal Namespace CatLibrary Assembly CatLibrary.dll This is basic interface of all animal. Welcome to the Animal world! public interface IAnimal Remarks THIS is remarks overridden in MARKDWON file Properties this[int] Return specific number animal's name. string this[int index] { get; } Parameters index int Animal number. Property Value string Animal name. Name Name of Animal. string Name { get; } Property Value string Methods Eat() Animal's eat method. void Eat() Eat(string) Feed the animal with some food void Eat(string food) Parameters food string Food to eat Eat(Tool) Overload method of eat. This define the animal eat by which tool. void Eat(Tool tool) where Tool : class Parameters tool Tool Tool name. Type Parameters Tool It's a class type." }, "api/CatLibrary.ICat.html": { "href": "api/CatLibrary.ICat.html", "title": "Interface ICat | docfx seed website", - "keywords": "Interface ICat Namespace CatLibrary Assembly CatLibrary.dll Cat's interface public interface ICat : IAnimal Inherited Members IAnimal.Name IAnimal.this[int] IAnimal.Eat() IAnimal.Eat(Tool) IAnimal.Eat(string) Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) Events eat eat event of cat. Every cat must implement this event. event EventHandler eat Event Type EventHandler" + "summary": "Interface ICat Namespace CatLibrary Assembly CatLibrary.dll Cat's interface public interface ICat : IAnimal Inherited Members IAnimal.Name IAnimal.this[int] IAnimal.Eat() IAnimal.Eat(Tool) IAnimal.Eat(string) Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) Events eat eat event of cat. Every cat must implement this event. event EventHandler eat Event Type EventHandler" }, "api/CatLibrary.ICatExtension.html": { "href": "api/CatLibrary.ICatExtension.html", "title": "Class ICatExtension | docfx seed website", - "keywords": "Class ICatExtension Namespace CatLibrary Assembly CatLibrary.dll It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class public static class ICatExtension Inheritance object ICatExtension Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Play(ICat, ColorType) Extension method to let cat play public static void Play(this ICat icat, ContainersRefType.ColorType toy) Parameters icat ICat Cat toy ContainersRefType.ColorType Something to play Sleep(ICat, long) Extension method hint that how long the cat can sleep. public static void Sleep(this ICat icat, long hours) Parameters icat ICat The type will be extended. hours long The length of sleep." + "summary": "Class ICatExtension Namespace CatLibrary Assembly CatLibrary.dll It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class public static class ICatExtension Inheritance object ICatExtension Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Play(ICat, ColorType) Extension method to let cat play public static void Play(this ICat icat, ContainersRefType.ColorType toy) Parameters icat ICat Cat toy ContainersRefType.ColorType Something to play Sleep(ICat, long) Extension method hint that how long the cat can sleep. public static void Sleep(this ICat icat, long hours) Parameters icat ICat The type will be extended. hours long The length of sleep." }, "api/CatLibrary.MRefDelegate-3.html": { "href": "api/CatLibrary.MRefDelegate-3.html", "title": "Delegate MRefDelegate | docfx seed website", - "keywords": "Delegate MRefDelegate Namespace CatLibrary Assembly CatLibrary.dll Generic delegate with many constrains. public delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable Parameters k K Type K. t T Type T. l L Type L. Type Parameters K Generic K. T Generic T. L Generic L." + "summary": "Delegate MRefDelegate Namespace CatLibrary Assembly CatLibrary.dll Generic delegate with many constrains. public delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable Parameters k K Type K. t T Type T. l L Type L. Type Parameters K Generic K. T Generic T. L Generic L." }, "api/CatLibrary.MRefNormalDelegate.html": { "href": "api/CatLibrary.MRefNormalDelegate.html", "title": "Delegate MRefNormalDelegate | docfx seed website", - "keywords": "Delegate MRefNormalDelegate Namespace CatLibrary Assembly CatLibrary.dll Delegate in the namespace public delegate void MRefNormalDelegate(List pics, out string name) Parameters pics List a name list of pictures. name string give out the needed name." + "summary": "Delegate MRefNormalDelegate Namespace CatLibrary Assembly CatLibrary.dll Delegate in the namespace public delegate void MRefNormalDelegate(List pics, out string name) Parameters pics List a name list of pictures. name string give out the needed name." }, "api/CatLibrary.Tom.html": { "href": "api/CatLibrary.Tom.html", "title": "Class Tom | docfx seed website", - "keywords": "Class Tom Namespace CatLibrary Assembly CatLibrary.dll Tom class is only inherit from Object. Not any member inside itself. public class Tom Inheritance object Tom Derived TomFromBaseClass Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods TomMethod(Complex, Tuple) This is a Tom Method with complex type as return public Complex TomMethod(Complex a, Tuple b) Parameters a Complex A complex input b Tuple Another complex input Returns Complex Complex TomFromBaseClass Exceptions NotImplementedException This is not implemented ArgumentException This is the exception to be thrown when implemented CatException This is the exception in current documentation" + "summary": "Class Tom Namespace CatLibrary Assembly CatLibrary.dll Tom class is only inherit from Object. Not any member inside itself. public class Tom Inheritance object Tom Derived TomFromBaseClass Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods TomMethod(Complex, Tuple) This is a Tom Method with complex type as return public Complex TomMethod(Complex a, Tuple b) Parameters a Complex A complex input b Tuple Another complex input Returns Complex Complex TomFromBaseClass Exceptions NotImplementedException This is not implemented ArgumentException This is the exception to be thrown when implemented CatException This is the exception in current documentation" }, "api/CatLibrary.TomFromBaseClass.html": { "href": "api/CatLibrary.TomFromBaseClass.html", "title": "Class TomFromBaseClass | docfx seed website", - "keywords": "Class TomFromBaseClass Namespace CatLibrary Assembly CatLibrary.dll TomFromBaseClass inherits from @ public class TomFromBaseClass : Tom Inheritance object Tom TomFromBaseClass Inherited Members Tom.TomMethod(Complex, Tuple) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors TomFromBaseClass(int) This is a #ctor with parameter public TomFromBaseClass(int k) Parameters k int" + "summary": "Class TomFromBaseClass Namespace CatLibrary Assembly CatLibrary.dll TomFromBaseClass inherits from @ public class TomFromBaseClass : Tom Inheritance object Tom TomFromBaseClass Inherited Members Tom.TomMethod(Complex, Tuple) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Constructors TomFromBaseClass(int) This is a #ctor with parameter public TomFromBaseClass(int k) Parameters k int" }, "api/CatLibrary.html": { "href": "api/CatLibrary.html", "title": "Namespace CatLibrary | docfx seed website", - "keywords": "Namespace CatLibrary Namespaces CatLibrary.Core Classes CatException Cat Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class Complex ICatExtension It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class Tom Tom class is only inherit from Object. Not any member inside itself. TomFromBaseClass TomFromBaseClass inherits from @ Interfaces IAnimal This is basic interface of all animal. ICat Cat's interface Delegates FakeDelegate Fake delegate MRefDelegate Generic delegate with many constrains. MRefNormalDelegate Delegate in the namespace" + "summary": "Namespace CatLibrary Namespaces CatLibrary.Core Classes CatException Cat Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class Complex ICatExtension It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class Tom Tom class is only inherit from Object. Not any member inside itself. TomFromBaseClass TomFromBaseClass inherits from @ Interfaces IAnimal This is basic interface of all animal. ICat Cat's interface Delegates FakeDelegate Fake delegate MRefDelegate Generic delegate with many constrains. MRefNormalDelegate Delegate in the namespace" }, "api/MRef.Demo.Enumeration.ColorType.html": { "href": "api/MRef.Demo.Enumeration.ColorType.html", "title": "Enum ColorType | docfx seed website", - "keywords": "Enum ColorType Namespace MRef.Demo.Enumeration Assembly CatLibrary.dll Enumeration ColorType public enum ColorType Fields Red = 0 this color is red Blue = 1 blue like river Yellow = 2 yellow comes from desert Remarks Red/Blue/Yellow can become all color you want. See Also object" + "summary": "Enum ColorType Namespace MRef.Demo.Enumeration Assembly CatLibrary.dll Enumeration ColorType public enum ColorType Fields Red = 0 this color is red Blue = 1 blue like river Yellow = 2 yellow comes from desert Remarks Red/Blue/Yellow can become all color you want. See Also object" }, "api/MRef.Demo.Enumeration.html": { "href": "api/MRef.Demo.Enumeration.html", "title": "Namespace MRef.Demo.Enumeration | docfx seed website", - "keywords": "Namespace MRef.Demo.Enumeration Enums ColorType Enumeration ColorType" + "summary": "Namespace MRef.Demo.Enumeration Enums ColorType Enumeration ColorType" }, "apipage/BuildFromAssembly.Class1.html": { "href": "apipage/BuildFromAssembly.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll This is a test class. public class Class1 Inheritance object Class1 Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object?) object.Equals(object?, object?) object.ReferenceEquals(object?, object?) object.GetHashCode() Constructors Class1() public Class1() Methods HelloWorld() Hello World. public static void HelloWorld()" + "summary": "Class Class1 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll This is a test class. public class Class1 Inheritance object Class1 Inherited Members object.GetType() object.MemberwiseClone() object.ToString() object.Equals(object?) object.Equals(object?, object?) object.ReferenceEquals(object?, object?) object.GetHashCode() Constructors Class1() public Class1() Methods HelloWorld() Hello World. public static void HelloWorld()" }, "apipage/BuildFromAssembly.Issue5432.html": { "href": "apipage/BuildFromAssembly.Issue5432.html", "title": "Struct Issue5432 | docfx seed website", - "keywords": "Struct Issue5432 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll public struct Issue5432 Inherited Members object.GetType() object.ToString() object.Equals(object?) object.Equals(object?, object?) object.ReferenceEquals(object?, object?) object.GetHashCode() Properties Name public string Name { get; } Property Value string" + "summary": "Struct Issue5432 Namespace BuildFromAssembly Assembly BuildFromAssembly.dll public struct Issue5432 Inherited Members object.GetType() object.ToString() object.Equals(object?) object.Equals(object?, object?) object.ReferenceEquals(object?, object?) object.GetHashCode() Properties Name public string Name { get; } Property Value string" }, "apipage/BuildFromAssembly.html": { "href": "apipage/BuildFromAssembly.html", "title": "Namespace BuildFromAssembly | docfx seed website", - "keywords": "Namespace BuildFromAssembly Classes Class1 This is a test class. Structs Issue5432" + "summary": "Namespace BuildFromAssembly Classes Class1 This is a test class. Structs Issue5432" }, "apipage/BuildFromCSharpSourceCode.CSharp.html": { "href": "apipage/BuildFromCSharpSourceCode.CSharp.html", "title": "Class CSharp | docfx seed website", - "keywords": "Class CSharp Namespace BuildFromCSharpSourceCode public class CSharp Inheritance object CSharp Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Main(string[]) public static void Main(string[] args) Parameters args string[]" + "summary": "Class CSharp Namespace BuildFromCSharpSourceCode public class CSharp Inheritance object CSharp Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Main(string[]) public static void Main(string[] args) Parameters args string[]" }, "apipage/BuildFromCSharpSourceCode.html": { "href": "apipage/BuildFromCSharpSourceCode.html", "title": "Namespace BuildFromCSharpSourceCode | docfx seed website", - "keywords": "Namespace BuildFromCSharpSourceCode Classes CSharp" + "summary": "Namespace BuildFromCSharpSourceCode Classes CSharp" }, "apipage/BuildFromProject.Class1.IIssue8948.html": { "href": "apipage/BuildFromProject.Class1.IIssue8948.html", "title": "Interface Class1.IIssue8948 | docfx seed website", - "keywords": "Interface Class1.IIssue8948 Preview DOCFX001: 'BuildFromProject.Class1.IIssue8948' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public interface Class1.IIssue8948 Methods DoNothing() Does nothing with generic type T. void DoNothing() Type Parameters T A generic type." + "summary": "Interface Class1.IIssue8948 Preview DOCFX001: 'BuildFromProject.Class1.IIssue8948' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public interface Class1.IIssue8948 Methods DoNothing() Does nothing with generic type T. void DoNothing() Type Parameters T A generic type." }, "apipage/BuildFromProject.Class1.Issue8665.html": { "href": "apipage/BuildFromProject.Class1.Issue8665.html", "title": "Class Class1.Issue8665 | docfx seed website", - "keywords": "Class Class1.Issue8665 Preview DOCFX001: 'BuildFromProject.Class1.Issue8665' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8665 Inheritance object Class1.Issue8665 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors Issue8665() public Issue8665() Issue8665(int) public Issue8665(int foo) Parameters foo int Issue8665(int, char) public Issue8665(int foo, char bar) Parameters foo int bar char Issue8665(int, char, string) public Issue8665(int foo, char bar, string baz) Parameters foo int bar char baz string Properties Bar public char Bar { get; } Property Value char Baz public string Baz { get; } Property Value string Foo public int Foo { get; } Property Value int" + "summary": "Class Class1.Issue8665 Preview DOCFX001: 'BuildFromProject.Class1.Issue8665' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8665 Inheritance object Class1.Issue8665 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors Issue8665() public Issue8665() Issue8665(int) public Issue8665(int foo) Parameters foo int Issue8665(int, char) public Issue8665(int foo, char bar) Parameters foo int bar char Issue8665(int, char, string) public Issue8665(int foo, char bar, string baz) Parameters foo int bar char baz string Properties Bar public char Bar { get; } Property Value char Baz public string Baz { get; } Property Value string Foo public int Foo { get; } Property Value int" }, "apipage/BuildFromProject.Class1.Issue8696Attribute.html": { "href": "apipage/BuildFromProject.Class1.Issue8696Attribute.html", "title": "Class Class1.Issue8696Attribute | docfx seed website", - "keywords": "Class Class1.Issue8696Attribute Preview DOCFX001: 'BuildFromProject.Class1.Issue8696Attribute' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8696Attribute : Attribute Inheritance object Attribute Class1.Issue8696Attribute Inherited Members Attribute.Equals(object?) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object?) Attribute.TypeId object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors Issue8696Attribute(string?, int, int, string[]?, bool, Type?) [Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)] public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null) Parameters description string? boundsMin int boundsMax int validGameModes string[]? hasMultipleSelections bool enumType Type?" + "summary": "Class Class1.Issue8696Attribute Preview DOCFX001: 'BuildFromProject.Class1.Issue8696Attribute' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8696Attribute : Attribute Inheritance object Attribute Class1.Issue8696Attribute Inherited Members Attribute.Equals(object?) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object?) Attribute.TypeId object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors Issue8696Attribute(string?, int, int, string[]?, bool, Type?) [Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)] public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null) Parameters description string? boundsMin int boundsMax int validGameModes string[]? hasMultipleSelections bool enumType Type?" }, "apipage/BuildFromProject.Class1.Issue8948.html": { "href": "apipage/BuildFromProject.Class1.Issue8948.html", "title": "Class Class1.Issue8948 | docfx seed website", - "keywords": "Class Class1.Issue8948 Preview DOCFX001: 'BuildFromProject.Class1.Issue8948' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8948 : Class1.IIssue8948 Inheritance object Class1.Issue8948 Implements Class1.IIssue8948 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods DoNothing() Does nothing with generic type T. public void DoNothing() Type Parameters T A generic type." + "summary": "Class Class1.Issue8948 Preview DOCFX001: 'BuildFromProject.Class1.Issue8948' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Issue8948 : Class1.IIssue8948 Inheritance object Class1.Issue8948 Implements Class1.IIssue8948 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods DoNothing() Does nothing with generic type T. public void DoNothing() Type Parameters T A generic type." }, "apipage/BuildFromProject.Class1.Issue9260.html": { "href": "apipage/BuildFromProject.Class1.Issue9260.html", "title": "Enum Class1.Issue9260 | docfx seed website", - "keywords": "Enum Class1.Issue9260 Preview DOCFX001: 'BuildFromProject.Class1.Issue9260' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public enum Class1.Issue9260 Fields Value = 0 This is a regular enum value. This is a remarks section. Very important remarks about Value go here. OldAndUnusedValue = 1 Deprecated This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead. OldAndUnusedValue2 = 2 Deprecated Use Value This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead." + "summary": "Enum Class1.Issue9260 Preview DOCFX001: 'BuildFromProject.Class1.Issue9260' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public enum Class1.Issue9260 Fields Value = 0 This is a regular enum value. This is a remarks section. Very important remarks about Value go here. OldAndUnusedValue = 1 Deprecated This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead. OldAndUnusedValue2 = 2 Deprecated Use Value This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead." }, "apipage/BuildFromProject.Class1.Test-1.html": { "href": "apipage/BuildFromProject.Class1.Test-1.html", "title": "Class Class1.Test | docfx seed website", - "keywords": "Class Class1.Test Preview DOCFX001: 'BuildFromProject.Class1.Test ' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Test Type Parameters T Inheritance object Class1.Test Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class Class1.Test Preview DOCFX001: 'BuildFromProject.Class1.Test ' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1.Test Type Parameters T Inheritance object Class1.Test Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/BuildFromProject.Class1.html": { "href": "apipage/BuildFromProject.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Preview DOCFX001: 'BuildFromProject.Class1' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1 : IClass1 Inheritance object Class1 Implements IClass1 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Issue1651() Pricing models are used to calculate theoretical option values 1Black Scholes 2Black76 3Black76Fut 4Equity Tree 5Variance Swap 6Dividend Forecast public void Issue1651() Issue1887() Preview 'BuildFromProject.Class1.Issue1887()' is for evaluation purposes only and is subject to change or removal in future updates. IConfiguration related helper and extension routines. public void Issue1887() Issue2623() public void Issue2623() Examples MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Remarks For example: MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Issue2723() public void Issue2723() Remarks Note This is a . & \" ' Inline . link for (var i = 0; i > 10; i++) // & \" ' var range = new Range { Min = 0, Max = 10 }; var range = new Range { Min = 0, Max = 10 }; Issue4017() public void Issue4017() Examples public void HookMessageDeleted(BaseSocketClient client) { client.MessageDeleted += HandleMessageDelete; } public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel) { // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask; } Remarks void Update() { myClass.Execute(); } Issue4392() public void Issue4392() Remarks @\"\\\\?\\\" @\"\\\\?\\\" Issue7484() public void Issue7484() Remarks There's really no reason to not believe that this class can test things. Term Description A Term A Description Bee Term Bee Description Issue8764() public void Issue8764() where T : unmanaged Type Parameters T Issue896() Test public void Issue896() See Also Class1.Test Class1 Issue9216() Calculates the determinant of a 3-dimensional matrix: \\(A = \\begin{vmatrix} a_{11} & a_{12} & a_{13} \\\\ a_{21} & a_{22} & a_{23} \\\\ a_{31} & a_{32} & a_{33} \\end{vmatrix}\\) Returns the smallest value: \\(\\left\\{\\begin{matrix}a, aa\\\\ \\end{matrix} \\right.\\) public static double Issue9216() Returns double XmlCommentIncludeTag() This method should do something... public void XmlCommentIncludeTag() Remarks This is remarks." + "summary": "Class Class1 Preview DOCFX001: 'BuildFromProject.Class1' is for evaluation purposes only and is subject to change or removal in future updates. Namespace BuildFromProject Assembly BuildFromProject.dll public class Class1 : IClass1 Inheritance object Class1 Implements IClass1 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Issue1651() Pricing models are used to calculate theoretical option values 1Black Scholes 2Black76 3Black76Fut 4Equity Tree 5Variance Swap 6Dividend Forecast public void Issue1651() Issue1887() Preview 'BuildFromProject.Class1.Issue1887()' is for evaluation purposes only and is subject to change or removal in future updates. IConfiguration related helper and extension routines. public void Issue1887() Issue2623() public void Issue2623() Examples MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Remarks For example: MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Issue2723() public void Issue2723() Remarks Note This is a . & \" ' Inline . link for (var i = 0; i > 10; i++) // & \" ' var range = new Range { Min = 0, Max = 10 }; var range = new Range { Min = 0, Max = 10 }; Issue4017() public void Issue4017() Examples public void HookMessageDeleted(BaseSocketClient client) { client.MessageDeleted += HandleMessageDelete; } public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel) { // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask; } Remarks void Update() { myClass.Execute(); } Issue4392() public void Issue4392() Remarks @\"\\\\?\\\" @\"\\\\?\\\" Issue7484() public void Issue7484() Remarks There's really no reason to not believe that this class can test things. Term Description A Term A Description Bee Term Bee Description Issue8764() public void Issue8764() where T : unmanaged Type Parameters T Issue896() Test public void Issue896() See Also Class1.Test Class1 Issue9216() Calculates the determinant of a 3-dimensional matrix: \\(A = \\begin{vmatrix} a_{11} & a_{12} & a_{13} \\\\ a_{21} & a_{22} & a_{23} \\\\ a_{31} & a_{32} & a_{33} \\end{vmatrix}\\) Returns the smallest value: \\(\\left\\{\\begin{matrix}a, aa\\\\ \\end{matrix} \\right.\\) public static double Issue9216() Returns double XmlCommentIncludeTag() This method should do something... public void XmlCommentIncludeTag() Remarks This is remarks." }, "apipage/BuildFromProject.Dog.html": { "href": "apipage/BuildFromProject.Dog.html", "title": "Class Dog | docfx seed website", - "keywords": "Class Dog Namespace BuildFromProject Assembly BuildFromProject.dll Class representing a dog. public class Dog Inheritance object Dog Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors Dog(string, int) Constructor. public Dog(string name, int age) Parameters name string Name of the dog. age int Age of the dog. Properties Age Age of the dog. public int Age { get; } Property Value int Name Name of the dog. public string Name { get; } Property Value string" + "summary": "Class Dog Namespace BuildFromProject Assembly BuildFromProject.dll Class representing a dog. public class Dog Inheritance object Dog Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors Dog(string, int) Constructor. public Dog(string name, int age) Parameters name string Name of the dog. age int Age of the dog. Properties Age Age of the dog. public int Age { get; } Property Value int Name Name of the dog. public string Name { get; } Property Value string" }, "apipage/BuildFromProject.IInheritdoc.html": { "href": "apipage/BuildFromProject.IInheritdoc.html", "title": "Interface IInheritdoc | docfx seed website", - "keywords": "Interface IInheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public interface IInheritdoc Methods Issue7629() This method should do something... void Issue7629()" + "summary": "Interface IInheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public interface IInheritdoc Methods Issue7629() This method should do something... void Issue7629()" }, "apipage/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html": { "href": "apipage/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html", "title": "Class Inheritdoc.Issue6366.Class1 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366.Class1 Namespace BuildFromProject Assembly BuildFromProject.dll public abstract class Inheritdoc.Issue6366.Class1 Type Parameters T Inheritance object Inheritdoc.Issue6366.Class1 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods TestMethod1(T, int) This text inherited. public abstract T TestMethod1(T parm1, int parm2) Parameters parm1 T This text NOT inherited. parm2 int This text inherited. Returns T This text inherited." + "summary": "Class Inheritdoc.Issue6366.Class1 Namespace BuildFromProject Assembly BuildFromProject.dll public abstract class Inheritdoc.Issue6366.Class1 Type Parameters T Inheritance object Inheritdoc.Issue6366.Class1 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods TestMethod1(T, int) This text inherited. public abstract T TestMethod1(T parm1, int parm2) Parameters parm1 T This text NOT inherited. parm2 int This text inherited. Returns T This text inherited." }, "apipage/BuildFromProject.Inheritdoc.Issue6366.Class2.html": { "href": "apipage/BuildFromProject.Inheritdoc.Issue6366.Class2.html", "title": "Class Inheritdoc.Issue6366.Class2 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366.Class2 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1 Inheritance object Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2 Inherited Members Inheritdoc.Issue6366.Class1.TestMethod1(bool, int) object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods TestMethod1(bool, int) This text inherited. public override bool TestMethod1(bool parm1, int parm2) Parameters parm1 bool This text NOT inherited. parm2 int This text inherited. Returns bool This text inherited." + "summary": "Class Inheritdoc.Issue6366.Class2 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1 Inheritance object Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2 Inherited Members Inheritdoc.Issue6366.Class1.TestMethod1(bool, int) object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods TestMethod1(bool, int) This text inherited. public override bool TestMethod1(bool parm1, int parm2) Parameters parm1 bool This text NOT inherited. parm2 int This text inherited. Returns bool This text inherited." }, "apipage/BuildFromProject.Inheritdoc.Issue6366.html": { "href": "apipage/BuildFromProject.Inheritdoc.Issue6366.html", "title": "Class Inheritdoc.Issue6366 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366 Inheritance object Inheritdoc.Issue6366 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class Inheritdoc.Issue6366 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue6366 Inheritance object Inheritdoc.Issue6366 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/BuildFromProject.Inheritdoc.Issue7035.html": { "href": "apipage/BuildFromProject.Inheritdoc.Issue7035.html", "title": "Class Inheritdoc.Issue7035 | docfx seed website", - "keywords": "Class Inheritdoc.Issue7035 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue7035 Inheritance object Inheritdoc.Issue7035 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods A() public void A() B() public void B()" + "summary": "Class Inheritdoc.Issue7035 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue7035 Inheritance object Inheritdoc.Issue7035 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods A() public void A() B() public void B()" }, "apipage/BuildFromProject.Inheritdoc.Issue7484.html": { "href": "apipage/BuildFromProject.Inheritdoc.Issue7484.html", "title": "Class Inheritdoc.Issue7484 | docfx seed website", - "keywords": "Class Inheritdoc.Issue7484 Namespace BuildFromProject Assembly BuildFromProject.dll This is a test class to have something for DocFX to document. public class Inheritdoc.Issue7484 Inheritance object Inheritdoc.Issue7484 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Remarks We're going to talk about things now. BoolReturningMethod(bool) Simple method to generate docs for. DoDad A string that could have something. Constructors Issue7484() This is a constructor to document. public Issue7484() Properties DoDad A string that could have something. public string DoDad { get; } Property Value string Methods BoolReturningMethod(bool) Simple method to generate docs for. public bool BoolReturningMethod(bool source) Parameters source bool A meaningless boolean value, much like most questions in the world. Returns bool An exactly equivalently meaningless boolean value, much like most answers in the world. Remarks I'd like to take a moment to thank all of those who helped me get to a place where I can write documentation like this." + "summary": "Class Inheritdoc.Issue7484 Namespace BuildFromProject Assembly BuildFromProject.dll This is a test class to have something for DocFX to document. public class Inheritdoc.Issue7484 Inheritance object Inheritdoc.Issue7484 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Remarks We're going to talk about things now. BoolReturningMethod(bool) Simple method to generate docs for. DoDad A string that could have something. Constructors Issue7484() This is a constructor to document. public Issue7484() Properties DoDad A string that could have something. public string DoDad { get; } Property Value string Methods BoolReturningMethod(bool) Simple method to generate docs for. public bool BoolReturningMethod(bool source) Parameters source bool A meaningless boolean value, much like most questions in the world. Returns bool An exactly equivalently meaningless boolean value, much like most answers in the world. Remarks I'd like to take a moment to thank all of those who helped me get to a place where I can write documentation like this." }, "apipage/BuildFromProject.Inheritdoc.Issue8101.html": { "href": "apipage/BuildFromProject.Inheritdoc.Issue8101.html", "title": "Class Inheritdoc.Issue8101 | docfx seed website", - "keywords": "Class Inheritdoc.Issue8101 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue8101 Inheritance object Inheritdoc.Issue8101 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Tween(float, float, float, Action) Create a new tween. public static object Tween(float from, float to, float duration, Action onChange) Parameters from float The starting value. to float The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance. Tween(int, int, float, Action) Create a new tween. public static object Tween(int from, int to, float duration, Action onChange) Parameters from int The starting value. to int The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance." + "summary": "Class Inheritdoc.Issue8101 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue8101 Inheritance object Inheritdoc.Issue8101 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Tween(float, float, float, Action) Create a new tween. public static object Tween(float from, float to, float duration, Action onChange) Parameters from float The starting value. to float The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance. Tween(int, int, float, Action) Create a new tween. public static object Tween(int from, int to, float duration, Action onChange) Parameters from int The starting value. to int The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance." }, "apipage/BuildFromProject.Inheritdoc.Issue8129.html": { "href": "apipage/BuildFromProject.Inheritdoc.Issue8129.html", "title": "Struct Inheritdoc.Issue8129 | docfx seed website", - "keywords": "Struct Inheritdoc.Issue8129 Namespace BuildFromProject Assembly BuildFromProject.dll public struct Inheritdoc.Issue8129 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.ReferenceEquals(object?, object?) object.ToString() Constructors Issue8129(string) public Issue8129(string foo) Parameters foo string" + "summary": "Struct Inheritdoc.Issue8129 Namespace BuildFromProject Assembly BuildFromProject.dll public struct Inheritdoc.Issue8129 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.ReferenceEquals(object?, object?) object.ToString() Constructors Issue8129(string) public Issue8129(string foo) Parameters foo string" + }, + "apipage/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html": { + "href": "apipage/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "title": "Interface Inheritdoc.Issue9736.IJsonApiOptions | docfx seed website", + "summary": "Interface Inheritdoc.Issue9736.IJsonApiOptions Namespace BuildFromProject Assembly BuildFromProject.dll public interface Inheritdoc.Issue9736.IJsonApiOptions Properties UseRelativeLinks Whether to use relative links for all resources. false by default. bool UseRelativeLinks { get; } Property Value bool Examples options.UseRelativeLinks = true; { \"type\": \"articles\", \"id\": \"4309\", \"relationships\": { \"author\": { \"links\": { \"self\": \"/api/shopping/articles/4309/relationships/author\", \"related\": \"/api/shopping/articles/4309/author\" } } } }" + }, + "apipage/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html": { + "href": "apipage/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "title": "Class Inheritdoc.Issue9736.JsonApiOptions | docfx seed website", + "summary": "Class Inheritdoc.Issue9736.JsonApiOptions Namespace BuildFromProject Assembly BuildFromProject.dll public sealed class Inheritdoc.Issue9736.JsonApiOptions : Inheritdoc.Issue9736.IJsonApiOptions Inheritance object Inheritdoc.Issue9736.JsonApiOptions Implements Inheritdoc.Issue9736.IJsonApiOptions Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.ReferenceEquals(object?, object?) object.ToString() Properties UseRelativeLinks Whether to use relative links for all resources. false by default. public bool UseRelativeLinks { get; set; } Property Value bool Examples options.UseRelativeLinks = true; { \"type\": \"articles\", \"id\": \"4309\", \"relationships\": { \"author\": { \"links\": { \"self\": \"/api/shopping/articles/4309/relationships/author\", \"related\": \"/api/shopping/articles/4309/author\" } } } }" + }, + "apipage/BuildFromProject.Inheritdoc.Issue9736.html": { + "href": "apipage/BuildFromProject.Inheritdoc.Issue9736.html", + "title": "Class Inheritdoc.Issue9736 | docfx seed website", + "summary": "Class Inheritdoc.Issue9736 Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc.Issue9736 Inheritance object Inheritdoc.Issue9736 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/BuildFromProject.Inheritdoc.html": { "href": "apipage/BuildFromProject.Inheritdoc.html", "title": "Class Inheritdoc | docfx seed website", - "keywords": "Class Inheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc : IInheritdoc, IDisposable Inheritance object Inheritdoc Implements IInheritdoc IDisposable Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Issue7628() This method should do something... public void Issue7628() Issue7629() This method should do something... public void Issue7629()" + "summary": "Class Inheritdoc Namespace BuildFromProject Assembly BuildFromProject.dll public class Inheritdoc : IInheritdoc, IDisposable Inheritance object Inheritdoc Implements IInheritdoc IDisposable Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Issue7628() This method should do something... public void Issue7628() Issue7629() This method should do something... public void Issue7629()" }, "apipage/BuildFromProject.Issue8540.A.A.html": { "href": "apipage/BuildFromProject.Issue8540.A.A.html", "title": "Class A | docfx seed website", - "keywords": "Class A Namespace BuildFromProject.Issue8540.A Assembly BuildFromProject.dll public class A Inheritance object A Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class A Namespace BuildFromProject.Issue8540.A Assembly BuildFromProject.dll public class A Inheritance object A Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/BuildFromProject.Issue8540.A.html": { "href": "apipage/BuildFromProject.Issue8540.A.html", "title": "Namespace BuildFromProject.Issue8540.A | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540.A Classes A" + "summary": "Namespace BuildFromProject.Issue8540.A Classes A" }, "apipage/BuildFromProject.Issue8540.B.B.html": { "href": "apipage/BuildFromProject.Issue8540.B.B.html", "title": "Class B | docfx seed website", - "keywords": "Class B Namespace BuildFromProject.Issue8540.B Assembly BuildFromProject.dll public class B Inheritance object B Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class B Namespace BuildFromProject.Issue8540.B Assembly BuildFromProject.dll public class B Inheritance object B Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/BuildFromProject.Issue8540.B.html": { "href": "apipage/BuildFromProject.Issue8540.B.html", "title": "Namespace BuildFromProject.Issue8540.B | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540.B Classes B" + "summary": "Namespace BuildFromProject.Issue8540.B Classes B" }, "apipage/BuildFromProject.Issue8540.html": { "href": "apipage/BuildFromProject.Issue8540.html", "title": "Namespace BuildFromProject.Issue8540 | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540 Namespaces BuildFromProject.Issue8540.A BuildFromProject.Issue8540.B" + "summary": "Namespace BuildFromProject.Issue8540 Namespaces BuildFromProject.Issue8540.A BuildFromProject.Issue8540.B" }, "apipage/BuildFromProject.Issue8725.html": { "href": "apipage/BuildFromProject.Issue8725.html", "title": "Class Issue8725 | docfx seed website", - "keywords": "Class Issue8725 Namespace BuildFromProject Assembly BuildFromProject.dll A nice class public class Issue8725 Inheritance object Issue8725 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods MoreOperations() Another nice operation public void MoreOperations() MyOperation() A nice operation public void MyOperation() See Also Class1" + "summary": "Class Issue8725 Namespace BuildFromProject Assembly BuildFromProject.dll A nice class public class Issue8725 Inheritance object Issue8725 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods MoreOperations() Another nice operation public void MoreOperations() MyOperation() A nice operation public void MyOperation() See Also Class1" }, "apipage/BuildFromProject.html": { "href": "apipage/BuildFromProject.html", "title": "Namespace BuildFromProject | docfx seed website", - "keywords": "Namespace BuildFromProject Namespaces BuildFromProject.Issue8540 Classes Inheritdoc.Issue6366.Class1 Class1 Inheritdoc.Issue6366.Class2 Dog Class representing a dog. Inheritdoc Inheritdoc.Issue6366 Inheritdoc.Issue7035 Inheritdoc.Issue7484 This is a test class to have something for DocFX to document. Inheritdoc.Issue8101 Class1.Issue8665 Class1.Issue8696Attribute Issue8725 A nice class Class1.Issue8948 Class1.Test Structs Inheritdoc.Issue8129 Interfaces IInheritdoc Class1.IIssue8948 Enums Class1.Issue9260" + "summary": "Namespace BuildFromProject Namespaces BuildFromProject.Issue8540 Classes Inheritdoc.Issue6366.Class1 Class1 Inheritdoc.Issue6366.Class2 Dog Class representing a dog. Inheritdoc Inheritdoc.Issue6366 Inheritdoc.Issue7035 Inheritdoc.Issue7484 This is a test class to have something for DocFX to document. Inheritdoc.Issue8101 Class1.Issue8665 Class1.Issue8696Attribute Issue8725 A nice class Class1.Issue8948 Inheritdoc.Issue9736 Inheritdoc.Issue9736.JsonApiOptions Class1.Test Structs Inheritdoc.Issue8129 Interfaces IInheritdoc Class1.IIssue8948 Inheritdoc.Issue9736.IJsonApiOptions Enums Class1.Issue9260" }, "apipage/BuildFromVBSourceCode.BaseClass1.html": { "href": "apipage/BuildFromVBSourceCode.BaseClass1.html", "title": "Class BaseClass1 | docfx seed website", - "keywords": "Class BaseClass1 Namespace BuildFromVBSourceCode This is the BaseClass public abstract class BaseClass1 Inheritance object BaseClass1 Derived Class1 Inherited Members object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods WithDeclarationKeyword(Class1) public abstract DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" + "summary": "Class BaseClass1 Namespace BuildFromVBSourceCode This is the BaseClass public abstract class BaseClass1 Inheritance object BaseClass1 Derived Class1 Inherited Members object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods WithDeclarationKeyword(Class1) public abstract DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" }, "apipage/BuildFromVBSourceCode.Class1.html": { "href": "apipage/BuildFromVBSourceCode.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace BuildFromVBSourceCode This is summary from vb class... public class Class1 : BaseClass1 Inheritance object BaseClass1 Class1 Inherited Members BaseClass1.WithDeclarationKeyword(Class1) object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ValueClass This is a Value type public Class1 ValueClass Field Value Class1 Properties Keyword Deprecated This member is obsolete. [Obsolete(\"This member is obsolete.\", true)] public Class1 Keyword { get; } Property Value Class1 Methods Value(string) This is a Function public int Value(string name) Parameters name string Name as the String value Returns int Returns Ahooo WithDeclarationKeyword(Class1) What is Sub? public override DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" + "summary": "Class Class1 Namespace BuildFromVBSourceCode This is summary from vb class... public class Class1 : BaseClass1 Inheritance object BaseClass1 Class1 Inherited Members BaseClass1.WithDeclarationKeyword(Class1) object.Equals(object) object.Equals(object, object) object.Finalize() object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ValueClass This is a Value type public Class1 ValueClass Field Value Class1 Properties Keyword Deprecated This member is obsolete. [Obsolete(\"This member is obsolete.\", true)] public Class1 Keyword { get; } Property Value Class1 Methods Value(string) This is a Function public int Value(string name) Parameters name string Name as the String value Returns int Returns Ahooo WithDeclarationKeyword(Class1) What is Sub? public override DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" }, "apipage/BuildFromVBSourceCode.html": { "href": "apipage/BuildFromVBSourceCode.html", "title": "Namespace BuildFromVBSourceCode | docfx seed website", - "keywords": "Namespace BuildFromVBSourceCode Classes BaseClass1 This is the BaseClass Class1 This is summary from vb class..." + "summary": "Namespace BuildFromVBSourceCode Classes BaseClass1 This is the BaseClass Class1 This is summary from vb class..." }, "apipage/CatLibrary.Cat-2.html": { "href": "apipage/CatLibrary.Cat-2.html", "title": "Class Cat | docfx seed website", - "keywords": "Class Cat Deprecated Namespace CatLibrary Assembly CatLibrary.dll Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class [Serializable] [Obsolete] public class Cat : ICat, IAnimal where T : class, new() where K : struct Type Parameters T This type should be class and can new instance. K This type is a struct type, class type can't be used for this parameter. Inheritance object Cat Implements ICat IAnimal Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) Examples Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct. var a = new Cat(object, int)(); int catNumber = new int(); unsafe { a.GetFeetLength(catNumber); } As you see, here we bring in pointer so we need to add unsafe keyword. Remarks Here's all the content you can see in this class. Constructors Cat() Default constructor. public Cat() Cat(T) Constructor with one generic parameter. public Cat(T ownType) Parameters ownType T This parameter type defined by class. Cat(string, out int, string, bool) It's a complex constructor. The parameter will have some attributes. public Cat(string nickName, out int age, string realName, bool isHealthy) Parameters nickName string it's string type. age int It's an out and ref parameter. realName string It's an out paramter. isHealthy bool It's an in parameter. Fields isHealthy Deprecated Field with attribute. [ContextStatic] [NonSerialized] [Obsolete] public bool isHealthy Field Value bool Properties Age Deprecated Hint cat's age. [Obsolete] protected int Age { get; set; } Property Value int Name EII property. public string Name { get; } Property Value string this[string] This is index property of Cat. You can see that the visibility is different between get and set method. public int this[string a] { protected get; set; } Property Value int Methods CalculateFood(DateTime) It's a method with complex return type. public Dictionary> CalculateFood(DateTime date) Parameters date DateTime Date time to now. Returns Dictionary> It's a relationship map of different kind food. Equals(object) Override the method of Object.Equals(object obj). public override bool Equals(object obj) Parameters obj object Can pass any class type. Returns bool The return value tell you whehter the compare operation is successful. GetTailLength(int*, params object[]) It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword. public long GetTailLength(int* catName, params object[] parameters) Parameters catName int* Thie represent for cat name length. parameters object[] Optional parameters. Returns long Return cat tail's length. Jump(T, K, ref bool) This method have attribute above it. [Conditional(\"Debug\")] public void Jump(T ownType, K anotherOwnType, ref bool cheat) Parameters ownType T Type come from class define. anotherOwnType K Type come from class define. cheat bool Hint whether this cat has cheat mode. Exceptions ArgumentException This is an argument exception ownEat Deprecated This event handler is deprecated. Eat event of this cat [Obsolete(\"This _event handler_ is deprecated.\")] public event EventHandler ownEat Event Type EventHandler Operators operator +(Cat, int) Addition operator of this class. public static int operator +(Cat lsr, int rsr) Parameters lsr Cat .. rsr int ~~ Returns int Result with int type. explicit operator Tom(Cat) Expilicit operator of this class. It means this cat can evolve to change to Tom. Tom and Jerry. public static explicit operator Tom(Cat src) Parameters src Cat Instance of this class. Returns Tom Advanced class type of cat. operator -(Cat, int) Similar with operaotr +, refer to that topic. public static int operator -(Cat lsr, int rsr) Parameters lsr Cat rsr int Returns int" + "summary": "Class Cat Deprecated Namespace CatLibrary Assembly CatLibrary.dll Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class [Serializable] [Obsolete] public class Cat : ICat, IAnimal where T : class, new() where K : struct Type Parameters T This type should be class and can new instance. K This type is a struct type, class type can't be used for this parameter. Inheritance object Cat Implements ICat IAnimal Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) Examples Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct. var a = new Cat(object, int)(); int catNumber = new int(); unsafe { a.GetFeetLength(catNumber); } As you see, here we bring in pointer so we need to add unsafe keyword. Remarks Here's all the content you can see in this class. Constructors Cat() Default constructor. public Cat() Cat(T) Constructor with one generic parameter. public Cat(T ownType) Parameters ownType T This parameter type defined by class. Cat(string, out int, string, bool) It's a complex constructor. The parameter will have some attributes. public Cat(string nickName, out int age, string realName, bool isHealthy) Parameters nickName string it's string type. age int It's an out and ref parameter. realName string It's an out paramter. isHealthy bool It's an in parameter. Fields isHealthy Deprecated Field with attribute. [ContextStatic] [NonSerialized] [Obsolete] public bool isHealthy Field Value bool Properties Age Deprecated Hint cat's age. [Obsolete] protected int Age { get; set; } Property Value int Name EII property. public string Name { get; } Property Value string this[string] This is index property of Cat. You can see that the visibility is different between get and set method. public int this[string a] { protected get; set; } Property Value int Methods CalculateFood(DateTime) It's a method with complex return type. public Dictionary> CalculateFood(DateTime date) Parameters date DateTime Date time to now. Returns Dictionary> It's a relationship map of different kind food. Equals(object) Override the method of Object.Equals(object obj). public override bool Equals(object obj) Parameters obj object Can pass any class type. Returns bool The return value tell you whehter the compare operation is successful. GetTailLength(int*, params object[]) It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword. public long GetTailLength(int* catName, params object[] parameters) Parameters catName int* Thie represent for cat name length. parameters object[] Optional parameters. Returns long Return cat tail's length. Jump(T, K, ref bool) This method have attribute above it. [Conditional(\"Debug\")] public void Jump(T ownType, K anotherOwnType, ref bool cheat) Parameters ownType T Type come from class define. anotherOwnType K Type come from class define. cheat bool Hint whether this cat has cheat mode. Exceptions ArgumentException This is an argument exception ownEat Deprecated This event handler is deprecated. Eat event of this cat [Obsolete(\"This _event handler_ is deprecated.\")] public event EventHandler ownEat Event Type EventHandler Operators operator +(Cat, int) Addition operator of this class. public static int operator +(Cat lsr, int rsr) Parameters lsr Cat .. rsr int ~~ Returns int Result with int type. explicit operator Tom(Cat) Expilicit operator of this class. It means this cat can evolve to change to Tom. Tom and Jerry. public static explicit operator Tom(Cat src) Parameters src Cat Instance of this class. Returns Tom Advanced class type of cat. operator -(Cat, int) Similar with operaotr +, refer to that topic. public static int operator -(Cat lsr, int rsr) Parameters lsr Cat rsr int Returns int" }, "apipage/CatLibrary.CatException-1.html": { "href": "apipage/CatLibrary.CatException-1.html", "title": "Class CatException | docfx seed website", - "keywords": "Class CatException Namespace CatLibrary Assembly CatLibrary.dll public class CatException : Exception, ISerializable Type Parameters T Inheritance object Exception CatException Implements ISerializable Inherited Members Exception.GetBaseException() Exception.GetType() Exception.ToString() Exception.Data Exception.HelpLink Exception.HResult Exception.InnerException Exception.Message Exception.Source Exception.StackTrace Exception.TargetSite Exception.SerializeObjectState object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class CatException Namespace CatLibrary Assembly CatLibrary.dll public class CatException : Exception, ISerializable Type Parameters T Inheritance object Exception CatException Implements ISerializable Inherited Members Exception.GetBaseException() Exception.GetType() Exception.ToString() Exception.Data Exception.HelpLink Exception.HResult Exception.InnerException Exception.Message Exception.Source Exception.StackTrace Exception.TargetSite Exception.SerializeObjectState object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/CatLibrary.Complex-2.html": { "href": "apipage/CatLibrary.Complex-2.html", "title": "Class Complex | docfx seed website", - "keywords": "Class Complex Namespace CatLibrary Assembly CatLibrary.dll public class Complex Type Parameters T J Inheritance object Complex Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class Complex Namespace CatLibrary Assembly CatLibrary.dll public class Complex Type Parameters T J Inheritance object Complex Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/CatLibrary.Core.ContainersRefType.ColorType.html": { "href": "apipage/CatLibrary.Core.ContainersRefType.ColorType.html", "title": "Enum ContainersRefType.ColorType | docfx seed website", - "keywords": "Enum ContainersRefType.ColorType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Enumeration ColorType public enum ContainersRefType.ColorType Fields Red = 0 red Blue = 1 blue Yellow = 2 yellow" + "summary": "Enum ContainersRefType.ColorType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Enumeration ColorType public enum ContainersRefType.ColorType Fields Red = 0 red Blue = 1 blue Yellow = 2 yellow" }, "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html": { "href": "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html", "title": "Class ContainersRefType.ContainersRefTypeChild | docfx seed website", - "keywords": "Class ContainersRefType.ContainersRefTypeChild Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ContainersRefType.ContainersRefTypeChild Inheritance object ContainersRefType.ContainersRefTypeChild Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class ContainersRefType.ContainersRefTypeChild Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ContainersRefType.ContainersRefTypeChild Inheritance object ContainersRefType.ContainersRefTypeChild Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html": { "href": "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html", "title": "Interface ContainersRefType.ContainersRefTypeChildInterface | docfx seed website", - "keywords": "Interface ContainersRefType.ContainersRefTypeChildInterface Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public interface ContainersRefType.ContainersRefTypeChildInterface" + "summary": "Interface ContainersRefType.ContainersRefTypeChildInterface Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public interface ContainersRefType.ContainersRefTypeChildInterface" }, "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html": { "href": "apipage/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html", "title": "Delegate ContainersRefType.ContainersRefTypeDelegate | docfx seed website", - "keywords": "Delegate ContainersRefType.ContainersRefTypeDelegate Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Delegate ContainersRefTypeDelegate public delegate void ContainersRefType.ContainersRefTypeDelegate()" + "summary": "Delegate ContainersRefType.ContainersRefTypeDelegate Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Delegate ContainersRefTypeDelegate public delegate void ContainersRefType.ContainersRefTypeDelegate()" }, "apipage/CatLibrary.Core.ContainersRefType.html": { "href": "apipage/CatLibrary.Core.ContainersRefType.html", "title": "Struct ContainersRefType | docfx seed website", - "keywords": "Struct ContainersRefType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Struct ContainersRefType public struct ContainersRefType Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.ReferenceEquals(object?, object?) object.ToString() Extension Methods Issue231.Bar(ContainersRefType) Issue231.Foo(ContainersRefType) Fields ColorCount ColorCount public long ColorCount Field Value long Properties GetColorCount GetColorCount public long GetColorCount { get; } Property Value long Methods ContainersRefTypeNonRefMethod(params object[]) ContainersRefTypeNonRefMethod array public static int ContainersRefTypeNonRefMethod(params object[] parmsArray) Parameters parmsArray object[] Returns int ContainersRefTypeEventHandler public event EventHandler ContainersRefTypeEventHandler Event Type EventHandler" + "summary": "Struct ContainersRefType Namespace CatLibrary.Core Assembly CatLibrary.Core.dll Struct ContainersRefType public struct ContainersRefType Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.ReferenceEquals(object?, object?) object.ToString() Extension Methods Issue231.Bar(ContainersRefType) Issue231.Foo(ContainersRefType) Fields ColorCount ColorCount public long ColorCount Field Value long Properties GetColorCount GetColorCount public long GetColorCount { get; } Property Value long Methods ContainersRefTypeNonRefMethod(params object[]) ContainersRefTypeNonRefMethod array public static int ContainersRefTypeNonRefMethod(params object[] parmsArray) Parameters parmsArray object[] Returns int ContainersRefTypeEventHandler public event EventHandler ContainersRefTypeEventHandler Event Type EventHandler" }, "apipage/CatLibrary.Core.ExplicitLayoutClass.html": { "href": "apipage/CatLibrary.Core.ExplicitLayoutClass.html", "title": "Class ExplicitLayoutClass | docfx seed website", - "keywords": "Class ExplicitLayoutClass Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ExplicitLayoutClass Inheritance object ExplicitLayoutClass Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" + "summary": "Class ExplicitLayoutClass Namespace CatLibrary.Core Assembly CatLibrary.Core.dll public class ExplicitLayoutClass Inheritance object ExplicitLayoutClass Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString()" }, "apipage/CatLibrary.Core.Issue231.html": { "href": "apipage/CatLibrary.Core.Issue231.html", "title": "Class Issue231 | docfx seed website", - "keywords": "Class Issue231 Namespace CatLibrary.Core Assembly CatLibrary.dll, CatLibrary.Core.dll public static class Issue231 Inheritance object Issue231 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Bar(ContainersRefType) public static void Bar(this ContainersRefType c) Parameters c ContainersRefType Foo(ContainersRefType) public static void Foo(this ContainersRefType c) Parameters c ContainersRefType" + "summary": "Class Issue231 Namespace CatLibrary.Core Assembly CatLibrary.dll, CatLibrary.Core.dll public static class Issue231 Inheritance object Issue231 Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Bar(ContainersRefType) public static void Bar(this ContainersRefType c) Parameters c ContainersRefType Foo(ContainersRefType) public static void Foo(this ContainersRefType c) Parameters c ContainersRefType" }, "apipage/CatLibrary.Core.html": { "href": "apipage/CatLibrary.Core.html", "title": "Namespace CatLibrary.Core | docfx seed website", - "keywords": "Namespace CatLibrary.Core Classes ContainersRefType.ContainersRefTypeChild ExplicitLayoutClass Issue231 Issue231 Structs ContainersRefType Struct ContainersRefType Interfaces ContainersRefType.ContainersRefTypeChildInterface Enums ContainersRefType.ColorType Enumeration ColorType Delegates ContainersRefType.ContainersRefTypeDelegate Delegate ContainersRefTypeDelegate" + "summary": "Namespace CatLibrary.Core Classes ContainersRefType.ContainersRefTypeChild ExplicitLayoutClass Issue231 Issue231 Structs ContainersRefType Struct ContainersRefType Interfaces ContainersRefType.ContainersRefTypeChildInterface Enums ContainersRefType.ColorType Enumeration ColorType Delegates ContainersRefType.ContainersRefTypeDelegate Delegate ContainersRefTypeDelegate" }, "apipage/CatLibrary.FakeDelegate-1.html": { "href": "apipage/CatLibrary.FakeDelegate-1.html", "title": "Delegate FakeDelegate | docfx seed website", - "keywords": "Delegate FakeDelegate Namespace CatLibrary Assembly CatLibrary.dll Fake delegate public delegate int FakeDelegate(long num, string name, params object[] scores) Parameters num long Fake para name string Fake para scores object[] Optional Parameter. Returns int Return a fake number to confuse you. Type Parameters T Fake para" + "summary": "Delegate FakeDelegate Namespace CatLibrary Assembly CatLibrary.dll Fake delegate public delegate int FakeDelegate(long num, string name, params object[] scores) Parameters num long Fake para name string Fake para scores object[] Optional Parameter. Returns int Return a fake number to confuse you. Type Parameters T Fake para" }, "apipage/CatLibrary.IAnimal.html": { "href": "apipage/CatLibrary.IAnimal.html", "title": "Interface IAnimal | docfx seed website", - "keywords": "Interface IAnimal Namespace CatLibrary Assembly CatLibrary.dll This is basic interface of all animal. public interface IAnimal Properties Name Name of Animal. string Name { get; } Property Value string this[int] Return specific number animal's name. string this[int index] { get; } Property Value string Methods Eat() Animal's eat method. void Eat() Eat(Tool) Overload method of eat. This define the animal eat by which tool. void Eat(Tool tool) where Tool : class Parameters tool Tool Tool name. Type Parameters Tool It's a class type. Eat(string) Feed the animal with some food void Eat(string food) Parameters food string Food to eat" + "summary": "Interface IAnimal Namespace CatLibrary Assembly CatLibrary.dll This is basic interface of all animal. public interface IAnimal Properties Name Name of Animal. string Name { get; } Property Value string this[int] Return specific number animal's name. string this[int index] { get; } Property Value string Methods Eat() Animal's eat method. void Eat() Eat(Tool) Overload method of eat. This define the animal eat by which tool. void Eat(Tool tool) where Tool : class Parameters tool Tool Tool name. Type Parameters Tool It's a class type. Eat(string) Feed the animal with some food void Eat(string food) Parameters food string Food to eat" }, "apipage/CatLibrary.ICat.html": { "href": "apipage/CatLibrary.ICat.html", "title": "Interface ICat | docfx seed website", - "keywords": "Interface ICat Namespace CatLibrary Assembly CatLibrary.dll Cat's interface public interface ICat : IAnimal Implements IAnimal Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) eat eat event of cat. Every cat must implement this event. event EventHandler eat Event Type EventHandler" + "summary": "Interface ICat Namespace CatLibrary Assembly CatLibrary.dll Cat's interface public interface ICat : IAnimal Implements IAnimal Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType) ICatExtension.Sleep(ICat, long) eat eat event of cat. Every cat must implement this event. event EventHandler eat Event Type EventHandler" }, "apipage/CatLibrary.ICatExtension.html": { "href": "apipage/CatLibrary.ICatExtension.html", "title": "Class ICatExtension | docfx seed website", - "keywords": "Class ICatExtension Namespace CatLibrary Assembly CatLibrary.dll It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class public static class ICatExtension Inheritance object ICatExtension Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Play(ICat, ColorType) Extension method to let cat play public static void Play(this ICat icat, ContainersRefType.ColorType toy) Parameters icat ICat Cat toy ContainersRefType.ColorType Something to play Sleep(ICat, long) Extension method hint that how long the cat can sleep. public static void Sleep(this ICat icat, long hours) Parameters icat ICat The type will be extended. hours long The length of sleep." + "summary": "Class ICatExtension Namespace CatLibrary Assembly CatLibrary.dll It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class public static class ICatExtension Inheritance object ICatExtension Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods Play(ICat, ColorType) Extension method to let cat play public static void Play(this ICat icat, ContainersRefType.ColorType toy) Parameters icat ICat Cat toy ContainersRefType.ColorType Something to play Sleep(ICat, long) Extension method hint that how long the cat can sleep. public static void Sleep(this ICat icat, long hours) Parameters icat ICat The type will be extended. hours long The length of sleep." }, "apipage/CatLibrary.MRefDelegate-3.html": { "href": "apipage/CatLibrary.MRefDelegate-3.html", "title": "Delegate MRefDelegate | docfx seed website", - "keywords": "Delegate MRefDelegate Namespace CatLibrary Assembly CatLibrary.dll Generic delegate with many constrains. public delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable Parameters k K Type K. t T Type T. l L Type L. Type Parameters K Generic K. T Generic T. L Generic L." + "summary": "Delegate MRefDelegate Namespace CatLibrary Assembly CatLibrary.dll Generic delegate with many constrains. public delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable Parameters k K Type K. t T Type T. l L Type L. Type Parameters K Generic K. T Generic T. L Generic L." }, "apipage/CatLibrary.MRefNormalDelegate.html": { "href": "apipage/CatLibrary.MRefNormalDelegate.html", "title": "Delegate MRefNormalDelegate | docfx seed website", - "keywords": "Delegate MRefNormalDelegate Namespace CatLibrary Assembly CatLibrary.dll Delegate in the namespace public delegate void MRefNormalDelegate(List pics, out string name) Parameters pics List a name list of pictures. name string give out the needed name." + "summary": "Delegate MRefNormalDelegate Namespace CatLibrary Assembly CatLibrary.dll Delegate in the namespace public delegate void MRefNormalDelegate(List pics, out string name) Parameters pics List a name list of pictures. name string give out the needed name." }, "apipage/CatLibrary.Tom.html": { "href": "apipage/CatLibrary.Tom.html", "title": "Class Tom | docfx seed website", - "keywords": "Class Tom Namespace CatLibrary Assembly CatLibrary.dll Tom class is only inherit from Object. Not any member inside itself. public class Tom Inheritance object Tom Derived TomFromBaseClass Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods TomMethod(Complex, Tuple) This is a Tom Method with complex type as return public Complex TomMethod(Complex a, Tuple b) Parameters a Complex A complex input b Tuple Another complex input Returns Complex Complex TomFromBaseClass Exceptions NotImplementedException This is not implemented ArgumentException This is the exception to be thrown when implemented CatException This is the exception in current documentation" + "summary": "Class Tom Namespace CatLibrary Assembly CatLibrary.dll Tom class is only inherit from Object. Not any member inside itself. public class Tom Inheritance object Tom Derived TomFromBaseClass Inherited Members object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Methods TomMethod(Complex, Tuple) This is a Tom Method with complex type as return public Complex TomMethod(Complex a, Tuple b) Parameters a Complex A complex input b Tuple Another complex input Returns Complex Complex TomFromBaseClass Exceptions NotImplementedException This is not implemented ArgumentException This is the exception to be thrown when implemented CatException This is the exception in current documentation" }, "apipage/CatLibrary.TomFromBaseClass.html": { "href": "apipage/CatLibrary.TomFromBaseClass.html", "title": "Class TomFromBaseClass | docfx seed website", - "keywords": "Class TomFromBaseClass Namespace CatLibrary Assembly CatLibrary.dll TomFromBaseClass inherits from @ public class TomFromBaseClass : Tom Inheritance object Tom TomFromBaseClass Inherited Members Tom.TomMethod(Complex, Tuple) object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors TomFromBaseClass(int) This is a #ctor with parameter public TomFromBaseClass(int k) Parameters k int" + "summary": "Class TomFromBaseClass Namespace CatLibrary Assembly CatLibrary.dll TomFromBaseClass inherits from @ public class TomFromBaseClass : Tom Inheritance object Tom TomFromBaseClass Inherited Members Tom.TomMethod(Complex, Tuple) object.Equals(object?) object.Equals(object?, object?) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object?, object?) object.ToString() Constructors TomFromBaseClass(int) This is a #ctor with parameter public TomFromBaseClass(int k) Parameters k int" }, "apipage/CatLibrary.html": { "href": "apipage/CatLibrary.html", "title": "Namespace CatLibrary | docfx seed website", - "keywords": "Namespace CatLibrary Namespaces CatLibrary.Core Classes Cat Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class CatException Complex ICatExtension It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class Tom Tom class is only inherit from Object. Not any member inside itself. TomFromBaseClass TomFromBaseClass inherits from @ Interfaces IAnimal This is basic interface of all animal. ICat Cat's interface Delegates FakeDelegate Fake delegate MRefDelegate Generic delegate with many constrains. MRefNormalDelegate Delegate in the namespace" + "summary": "Namespace CatLibrary Namespaces CatLibrary.Core Classes Cat Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class CatException Complex ICatExtension It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class Tom Tom class is only inherit from Object. Not any member inside itself. TomFromBaseClass TomFromBaseClass inherits from @ Interfaces IAnimal This is basic interface of all animal. ICat Cat's interface Delegates FakeDelegate Fake delegate MRefDelegate Generic delegate with many constrains. MRefNormalDelegate Delegate in the namespace" }, "apipage/MRef.Demo.Enumeration.ColorType.html": { "href": "apipage/MRef.Demo.Enumeration.ColorType.html", "title": "Enum ColorType | docfx seed website", - "keywords": "Enum ColorType Namespace MRef.Demo.Enumeration Assembly CatLibrary.dll Enumeration ColorType public enum ColorType Fields Red = 0 this color is red Blue = 1 blue like river Yellow = 2 yellow comes from desert Remarks Red/Blue/Yellow can become all color you want. See Also object" + "summary": "Enum ColorType Namespace MRef.Demo.Enumeration Assembly CatLibrary.dll Enumeration ColorType public enum ColorType Fields Red = 0 this color is red Blue = 1 blue like river Yellow = 2 yellow comes from desert Remarks Red/Blue/Yellow can become all color you want. See Also object" }, "apipage/MRef.Demo.Enumeration.html": { "href": "apipage/MRef.Demo.Enumeration.html", "title": "Namespace MRef.Demo.Enumeration | docfx seed website", - "keywords": "Namespace MRef.Demo.Enumeration Enums ColorType Enumeration ColorType" + "summary": "Namespace MRef.Demo.Enumeration Enums ColorType Enumeration ColorType" }, "apipage/MRef.Demo.html": { "href": "apipage/MRef.Demo.html", "title": "Namespace MRef.Demo | docfx seed website", - "keywords": "Namespace MRef.Demo Namespaces MRef.Demo.Enumeration" + "summary": "Namespace MRef.Demo Namespaces MRef.Demo.Enumeration" }, "apipage/MRef.html": { "href": "apipage/MRef.html", "title": "Namespace MRef | docfx seed website", - "keywords": "Namespace MRef Namespaces MRef.Demo" + "summary": "Namespace MRef Namespaces MRef.Demo" }, "articles/csharp_coding_standards.html": { "href": "articles/csharp_coding_standards.html", "title": "C# Coding Standards | docfx seed website", - "keywords": "C# Coding Standards Introduction The coding standard will be used in conjunction with customized version of StyleCop and FxCop [TODO] during both development and build process. This will help ensure that the standard is followed by all developers on the team in a consistent manner. \"Any fool can write code that a computer can understand. Good programmers write code that humans understand\". Martin Fowler. Refactoring: Improving the design of existing code. Purpose The aim of this section is to define a set of C# coding standards to be used by CAPS build team to guarantee maximum legibility, reliability, re-usability and homogeneity of our code. Each section is marked Mandatory or Recommended. Mandatory sections, will be enforced during code reviews as well as tools like StyleCop and FxCop, and code will not be considered complete until it is compliant. Scope This section contains general C# coding standards which can be applied to any type of application developed in C#, based on Framework Design Guidelines. It does not pretend to be a tutorial on C#. It only includes a set of limitations and recommendations focused on clarifying the development. Tools Resharper is a great 3rd party code cleanup and style tool. StyleCop analyzes C# srouce code to enforce a set of style and consistency rules and has been integrated into many 3rd party development tools such as Resharper. FxCop is an application that analyzes managed code assemblies (code that targets the .NET Framework common language runtime) and reports information about the assemblies, such as possible design, localization, performance, and security improvements. C# Stylizer does many of the style rules automatically Highlights of Coding Standards This section is not intended to give a summary of all the coding standards that enabled by our customized StyleCop, but to give a highlight of some rules one will possibly meet in daily coding life. It also provides some recommended however not mandatory(which means not enabled in StyleCop) coding standards. File Layout (Recommended) Only one public class is allowed per file. The file name is derived from the class name. Class : Observer Filename: Observer.cs Class Definition Order (Mandatory) The class definition contains class members in the following order, from less restricted scope (public) to more restrictive (private): Nested types, e.g. classes, enum, struct, etc. Field members, e.g. member variables, const, etc. Member functions Constructors Finalizer (Do not use unless absolutely necessary) Methods (Properties, Events, Operations, Overridables, Static) Private nested types Naming (Mandatory) DO use PascalCasing for all public member, type, and namespace names consisting of multiple words. PropertyDescriptor HtmlTag IOStream NOTE: A special case is made for two-letter acronyms in which both letters are capitalized, e.g. IOStream DO use camelCasing for parameter names. propertyDescriptor htmlTag ioStream DO start with underscore for private fields private readonly Guid _userId = Guid.NewGuid(); DO start static readonly fields, constants with capitalized case private static readonly IEntityAccessor EntityAccessor = null; private const string MetadataName = \"MetadataName\"; DO NOT capitalize each word in so-called closed-form compound words. DO have \"Async\" explicitly in the Async method name to notice people how to use it properly Formatting (Mandatory) DO use spaces over tabs, and always show all spaces/tabs in IDE Tips Visual Studio > TOOLS > Options > Text Editor > C# > Tabs > Insert spaces (Tab size: 4) Visual Studio > Edit > Advanced > View White Space DO add using inside namespace declaration namespace Microsoft.Content.Build.BuildWorker.UnitTest { using System; } DO add a space when: for (var i = 0; i < 1; i++) if (a == b) Cross-platform coding Our code should supports multiple operating systems. Don't assume we only run (and develop) on Windows. Code should be sensitvie to the differences between OS's. Here are some specifics to consider. DO use Enviroment.NewLine instead of hard-coding the line break instead of \\r\\n, as Windows uses \\r\\n and OSX/Linux uses \\n. Note Be aware that thes line-endings may cause problems in code when using @\"\" text blocks with line breaks. DO Use Path.Combine() or Path.DirectorySeparatorChar to separate directories. If this is not possible (such as in scripting), use a forward slash /. Windows is more forgiving than Linux in this regard. Unit tests and functional tests Assembly naming The unit tests for the Microsoft.Foo assembly live in the Microsoft.Foo.Tests assembly. The functional tests for the Microsoft.Foo assmebly live in the Microsoft.Foo.FunctionalTests assmebly. In general there should be exactly one unit test assebmly for each product runtime assembly. In general there should be one functional test assembly per repo. Exceptions can be made for both. Unit test class naming Test class names end with Test and live in the same namespace as the class being tested. For example, the unit tests for the Microsoft.Foo.Boo class would be in a Microsoft.Foo.Boo class in the test assembly. Unit test method naming Unit test method names must be descriptive about what is being tested, under what conditions, and what the expectations are. Pascal casing and underscores can be used to improve readability. The following test names are correct: PublicApiArgumentsShouldHaveNotNullAnnotation Public_api_arguments_should_have_not_null_annotation The following test names are incorrect: Test1 Constructor FormatString GetData Unit test structure The contents of every unit test should be split into three distinct stages, optionally separated by these comments: // Arrange // Act // Assert The crucial thing here is the Act stage is exactly one statement. That one statement is nothing more than a call to the one method that you are trying to test. keeping that one statement as simple as possible is also very important. For example, this is not ideal: int result = myObj.CallSomeMethod(GetComplexParam1(), GetComplexParam2(), GetComplexParam3()); This style is not recomended because way too many things can go wrong in this one statement. All the GetComplexParamN() calls can throw for a variety of reasons unrelated to the test itself. It is thus unclear to someone running into a problem why the failure occured. The ideal pattern is to move the complex parameter building into the `Arrange section: // Arrange P1 p1 = GetComplexParam1(); P2 p2 = GetComplexParam2(); P3 p3 = GetComplexParam3(); // Act int result = myObj.CallSomeMethod(p1, p2, p3); // Assert Assert.AreEqual(1234, result); Now the only reason the line with CallSomeMethod() can fail is if the method itself blew up. Testing exception messages In general testing the specific exception message in a unit test is important. This ensures that the exact desired exception is what is being tested rather than a different exception of the same type. In order to verify the exact exception it is important to verify the message. var ex = Assert.Throws( () => fruitBasket.GetBananaById(1234)); Assert.Equal( \"1234\", ex.Message); Use xUnit.net's plethora of built-in assertions xUnit.net includes many kinds of assertions – please use the most appropriate one for your test. This will make the tests a lot more readable and also allow the test runner report the best possible errors (whether it's local or the CI machine). For example, these are bad: Assert.Equal(true, someBool); Assert.True(\"abc123\" == someString); Assert.True(list1.Length == list2.Length); for (int i = 0; i < list1.Length; i++) { Assert.True( String.Equals list1[i], list2[i], StringComparison.OrdinalIgnoreCase)); } These are good: Assert.True(someBool); Assert.Equal(\"abc123\", someString); // built-in collection assertions! Assert.Equal(list1, list2, StringComparer.OrdinalIgnoreCase); Parallel tests By default all unit test assemblies should run in parallel mode, which is the default. Unit tests shouldn't depend on any shared state, and so should generally be runnable in parallel. If the tests fail in parallel, the first thing to do is to figure out why; do not just disable parallel tests! For functional tests it is reasonable to disable parallel tests." + "summary": "C# Coding Standards Introduction The coding standard will be used in conjunction with customized version of StyleCop and FxCop [TODO] during both development and build process. This will help ensure that the standard is followed by all developers on the team in a consistent manner. \"Any fool can write code that a computer can understand. Good programmers write code that humans understand\". Martin Fowler. Refactoring: Improving the design of existing code. Purpose The aim of this section is to define a set of C# coding standards to be used by CAPS build team to guarantee maximum legibility, reliability, re-usability and homogeneity of our code. Each section is marked Mandatory or Recommended. Mandatory sections, will be enforced during code reviews as well as tools like StyleCop and FxCop, and code will not be considered complete until it is compliant. Scope This section contains general C# coding standards which can be applied to any type of application developed in C#, based on Framework Design Guidelines. It does not pretend to be a tutorial on C#. It only includes a set of limitations and recommendations focused on clarifying the development. Tools Resharper is a great 3rd party code cleanup and style tool. StyleCop analyzes C# srouce code to enforce a set of style and consistency rules and has been integrated into many 3rd party development tools such as Resharper. FxCop is an application that analyzes managed code assemblies (code that targets the .NET Framework common language runtime) and reports information about the assemblies, such as possible design, localization, performance, and security improvements. C# Stylizer does many of the style rules automatically Highlights of Coding Standards This section is not intended to give a summary of all the coding standards that enabled by our customized StyleCop, but to give a highlight of some rules one will possibly meet in daily coding life. It also provides some recommended however not mandatory(which means not enabled in StyleCop) coding standards. File Layout (Recommended) Only one public class is allowed per file. The file name is derived from the class name. Class : Observer Filename: Observer.cs Class Definition Order (Mandatory) The class definition contains class members in the following order, from less restricted scope (public) to more restrictive (private): Nested types, e.g. classes, enum, struct, etc. Field members, e.g. member variables, const, etc. Member functions Constructors Finalizer (Do not use unless absolutely necessary) Methods (Properties, Events, Operations, Overridables, Static) Private nested types Naming (Mandatory) DO use PascalCasing for all public member, type, and namespace names consisting of multiple words. PropertyDescriptor HtmlTag IOStream NOTE: A special case is made for two-letter acronyms in which both letters are capitalized, e.g. IOStream DO use camelCasing for parameter names. propertyDescriptor htmlTag ioStream DO start with underscore for private fields private readonly Guid _userId = Guid.NewGuid(); DO start static readonly fields, constants with capitalized case private static readonly IEntityAccessor EntityAccessor = null; private const string MetadataName = \"MetadataName\"; DO NOT capitalize each word in so-called closed-form compound words. DO have \"Async\" explicitly in the Async method name to notice people how to use it properly Formatting (Mandatory) DO use spaces over tabs, and always show all spaces/tabs in IDE Tips Visual Studio > TOOLS > Options > Text Editor > C# > Tabs > Insert spaces (Tab size: 4) Visual Studio > Edit > Advanced > View White Space DO add using inside namespace declaration namespace Microsoft.Content.Build.BuildWorker.UnitTest { using System; } DO add a space when: for (var i = 0; i < 1; i++) if (a == b) Cross-platform coding Our code should supports multiple operating systems. Don't assume we only run (and develop) on Windows. Code should be sensitvie to the differences between OS's. Here are some specifics to consider. DO use Enviroment.NewLine instead of hard-coding the line break instead of \\r\\n, as Windows uses \\r\\n and OSX/Linux uses \\n. Note Be aware that thes line-endings may cause problems in code when using @\"\" text blocks with line breaks. DO Use Path.Combine() or Path.DirectorySeparatorChar to separate directories. If this is not possible (such as in scripting), use a forward slash /. Windows is more forgiving than Linux in this regard. Unit tests and functional tests Assembly naming The unit tests for the Microsoft.Foo assembly live in the Microsoft.Foo.Tests assembly. The functional tests for the Microsoft.Foo assmebly live in the Microsoft.Foo.FunctionalTests assmebly. In general there should be exactly one unit test assebmly for each product runtime assembly. In general there should be one functional test assembly per repo. Exceptions can be made for both. Unit test class naming Test class names end with Test and live in the same namespace as the class being tested. For example, the unit tests for the Microsoft.Foo.Boo class would be in a Microsoft.Foo.Boo class in the test assembly. Unit test method naming Unit test method names must be descriptive about what is being tested, under what conditions, and what the expectations are. Pascal casing and underscores can be used to improve readability. The following test names are correct: PublicApiArgumentsShouldHaveNotNullAnnotation Public_api_arguments_should_have_not_null_annotation The following test names are incorrect: Test1 Constructor FormatString GetData Unit test structure The contents of every unit test should be split into three distinct stages, optionally separated by these comments: // Arrange // Act // Assert The crucial thing here is the Act stage is exactly one statement. That one statement is nothing more than a call to the one method that you are trying to test. keeping that one statement as simple as possible is also very important. For example, this is not ideal: int result = myObj.CallSomeMethod(GetComplexParam1(), GetComplexParam2(), GetComplexParam3()); This style is not recomended because way too many things can go wrong in this one statement. All the GetComplexParamN() calls can throw for a variety of reasons unrelated to the test itself. It is thus unclear to someone running into a problem why the failure occured. The ideal pattern is to move the complex parameter building into the `Arrange section: // Arrange P1 p1 = GetComplexParam1(); P2 p2 = GetComplexParam2(); P3 p3 = GetComplexParam3(); // Act int result = myObj.CallSomeMethod(p1, p2, p3); // Assert Assert.AreEqual(1234, result); Now the only reason the line with CallSomeMethod() can fail is if the method itself blew up. Testing exception messages In general testing the specific exception message in a unit test is important. This ensures that the exact desired exception is what is being tested rather than a different exception of the same type. In order to verify the exact exception it is important to verify the message. var ex = Assert.Throws( () => fruitBasket.GetBananaById(1234)); Assert.Equal( \"1234\", ex.Message); Use xUnit.net's plethora of built-in assertions xUnit.net includes many kinds of assertions – please use the most appropriate one for your test. This will make the tests a lot more readable and also allow the test runner report the best possible errors (whether it's local or the CI machine). For example, these are bad: Assert.Equal(true, someBool); Assert.True(\"abc123\" == someString); Assert.True(list1.Length == list2.Length); for (int i = 0; i < list1.Length; i++) { Assert.True( String.Equals list1[i], list2[i], StringComparison.OrdinalIgnoreCase)); } These are good: Assert.True(someBool); Assert.Equal(\"abc123\", someString); // built-in collection assertions! Assert.Equal(list1, list2, StringComparer.OrdinalIgnoreCase); Parallel tests By default all unit test assemblies should run in parallel mode, which is the default. Unit tests shouldn't depend on any shared state, and so should generally be runnable in parallel. If the tests fail in parallel, the first thing to do is to figure out why; do not just disable parallel tests! For functional tests it is reasonable to disable parallel tests." }, "articles/docfx_getting_started.html": { "href": "articles/docfx_getting_started.html", "title": "Getting Started with docfx | docfx seed website", - "keywords": "Getting Started with docfx Getting Started This is a seed. docfx is an API documentation generator for .NET, currently support C# and VB. It has the ability to extract triple slash comments out from your source code. What's more, it has syntax to link additional files to API to add additional remarks. docfx will scan your source code and your additional conceptual files and generate a complete HTML documentation website for you. docfx provides the flexibility for you to customize the website through templates. We currently have several embedded templates, including websites containing pure static html pages and also website managed by AngularJS. Click \"View Source\" for an API to route to the source code in GitHub (your API must be pushed to GitHub) docfx provide DNX version for cross platform use. docfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nuget package is now in pre-release version. You can also build your own with source code and use it locally. We support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is 100% compatible with Github Flavored Markdown(GFM) and add several new features including file inclusion, cross reference, and yaml header." + "summary": "Getting Started with docfx Getting Started This is a seed. docfx is an API documentation generator for .NET, currently support C# and VB. It has the ability to extract triple slash comments out from your source code. What's more, it has syntax to link additional files to API to add additional remarks. docfx will scan your source code and your additional conceptual files and generate a complete HTML documentation website for you. docfx provides the flexibility for you to customize the website through templates. We currently have several embedded templates, including websites containing pure static html pages and also website managed by AngularJS. Click \"View Source\" for an API to route to the source code in GitHub (your API must be pushed to GitHub) docfx provide DNX version for cross platform use. docfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nuget package is now in pre-release version. You can also build your own with source code and use it locally. We support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is 100% compatible with Github Flavored Markdown(GFM) and add several new features including file inclusion, cross reference, and yaml header." }, "articles/engineering_guidelines.html": { "href": "articles/engineering_guidelines.html", "title": "Engineering Guidelines | docfx seed website", - "keywords": "Engineering Guidelines Basics Copyright header and license notice All source code files require the following exact header according to its language (please do not make any changes to it). extension: .cs // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. extension: .js // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. extension: .css /** * Licensed to the .NET Foundation under one or more agreements. * The .NET Foundation licenses this file to you under the MIT license. */ extension: .tmpl, .tmpl.partial {{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license.}} External dependencies This refers to dependencies on projects (i.e. NuGet packages) outside of the docfx repo, and especially outside of Microsoft. Adding new dependencies require additional approval. Current approved dependencies are: Newtonsoft.Json Jint HtmlAgilityPack Nustache YamlDotNet Code reviews and checkins To help ensure that only the highest quality code makes its way into the project, please submit all your code changes to GitHub as PRs. This includes runtime code changes, unit test updates, and deployment scripts. For example, sending a PR for just an update to a unit test might seem like a waste of time but the unit tests are just as important as the product code and as such, reviewing changes to them is also just as important. The advantages are numerous: improving code quality, more visibility on changes and their potential impact, avoiding duplication of effort, and creating general awareness of progress being made in various areas. In general a PR should be signed off(using the \uD83D\uDC4D emoticon) by the Owner of that code. To commit the PR to the repo do not use the Big Green Button. Instead, do a typical push that you would use with Git (e.g. local pull, rebase, merge, push). Source Code Management Branch strategy In general: master has the code for the latest release on NuGet.org. (e.g. 1.0.0, 1.1.0) dev has the code that is being worked on but not yet released. This is the branch into which devs normally submit pull requests and merge changes into. We run daily CI towards dev branch and generate pre-release nuget package, e.g. 1.0.1-alpha-9-abcdefsd. hotfix has the code for fixing master bug after it is released. hotfix changes will be merged back to master and dev once it is verified. Solution and project folder structure and naming Solution files go in the repo root. The default entry point is All.sln. Every project also needs a project.json and a matching .xproj file. This project.json is the source of truth for a project's dependencies and configuration options. Solution need to contain solution folders that match the physical folder (src, test, tools, etc.). Assembly naming pattern The general naming pattern is Docfx... Unit tests We use xUnit.net for all unit testing. Coding Standards Please refer to C# Coding standards for detailed guideline for C# coding standards. TODO Template Coding standards TODO Template Preprocess JS Coding standards" + "summary": "Engineering Guidelines Basics Copyright header and license notice All source code files require the following exact header according to its language (please do not make any changes to it). extension: .cs // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. extension: .js // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. extension: .css /** * Licensed to the .NET Foundation under one or more agreements. * The .NET Foundation licenses this file to you under the MIT license. */ extension: .tmpl, .tmpl.partial {{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license.}} External dependencies This refers to dependencies on projects (i.e. NuGet packages) outside of the docfx repo, and especially outside of Microsoft. Adding new dependencies require additional approval. Current approved dependencies are: Newtonsoft.Json Jint HtmlAgilityPack Nustache YamlDotNet Code reviews and checkins To help ensure that only the highest quality code makes its way into the project, please submit all your code changes to GitHub as PRs. This includes runtime code changes, unit test updates, and deployment scripts. For example, sending a PR for just an update to a unit test might seem like a waste of time but the unit tests are just as important as the product code and as such, reviewing changes to them is also just as important. The advantages are numerous: improving code quality, more visibility on changes and their potential impact, avoiding duplication of effort, and creating general awareness of progress being made in various areas. In general a PR should be signed off(using the \uD83D\uDC4D emoticon) by the Owner of that code. To commit the PR to the repo do not use the Big Green Button. Instead, do a typical push that you would use with Git (e.g. local pull, rebase, merge, push). Source Code Management Branch strategy In general: master has the code for the latest release on NuGet.org. (e.g. 1.0.0, 1.1.0) dev has the code that is being worked on but not yet released. This is the branch into which devs normally submit pull requests and merge changes into. We run daily CI towards dev branch and generate pre-release nuget package, e.g. 1.0.1-alpha-9-abcdefsd. hotfix has the code for fixing master bug after it is released. hotfix changes will be merged back to master and dev once it is verified. Solution and project folder structure and naming Solution files go in the repo root. The default entry point is All.sln. Every project also needs a project.json and a matching .xproj file. This project.json is the source of truth for a project's dependencies and configuration options. Solution need to contain solution folders that match the physical folder (src, test, tools, etc.). Assembly naming pattern The general naming pattern is Docfx... Unit tests We use xUnit.net for all unit testing. Coding Standards Please refer to C# Coding standards for detailed guideline for C# coding standards. TODO Template Coding standards TODO Template Preprocess JS Coding standards" }, "articles/markdown.html": { "href": "articles/markdown.html", "title": "Markdown | docfx seed website", - "keywords": "Markdown Markdown is a lightweight markup language with plain text formatting syntax. Docfx supports CommonMark compliant Markdown parsed through the Markdig parsing engine. Link to Math Expressions Block Quotes This is a block quote. Alerts Note Information the user should notice even if skimming. Tip Optional information to help a user be more successful. Important Essential information required for user success. Caution Negative potential consequences of an action. Warning Dangerous certain consequences of an action. MY TODO This is a TODO. Image Mermaid Diagrams Flowchart flowchart LR A[Hard] -->|Text| B(Round) B --> C{Decision} C -->|One| D[Result 1] C -->|Two| E[Result 2] Code Snippet The example highlights lines 2, line 5 to 7 and lines 9 to the end of the file. using System; using Azure; using Azure.Storage; using Azure.Storage.Blobs; class Program { static void Main(string[] args) { // Define the connection string for the storage account string connectionString = \"DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.windows.net\"; // Create a new BlobServiceClient using the connection string var blobServiceClient = new BlobServiceClient(connectionString); // Create a new container var container = blobServiceClient.CreateBlobContainer(\"mycontainer\"); // Upload a file to the container using (var fileStream = File.OpenRead(\"path/to/file.txt\")) { container.UploadBlob(\"file.txt\", fileStream); } // Download the file from the container var downloadedBlob = container.GetBlobClient(\"file.txt\").Download(); using (var fileStream = File.OpenWrite(\"path/to/downloaded-file.txt\")) { downloadedBlob.Value.Content.CopyTo(fileStream); } } } Math Expressions This sentence uses $ delimiters to show math inline: \\(\\sqrt{3x-1}+(1+x)^2\\) The Cauchy-Schwarz Inequality \\(\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\\) This expression uses \\$ to display a dollar sign: \\(\\sqrt{\\$4}\\) To split $100 in half, we calculate \\(100/2\\) Custom Syntax Highlighting resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = { name: 'hello' // (...) } Tabs Linux Windows Content for Linux... Content for Windows... The above tab group was created with the following syntax: # [Linux](#tab/linux) Content for Linux... # [Windows](#tab/windows) Content for Windows... --- Tabs are indicated by using a specific link syntax within a Markdown header. The syntax can be described as follows: # [Tab Display Name](#tab/tab-id) A tab starts with a Markdown header, #, and is followed by a Markdown link [](). The text of the link will become the text of the tab header, displayed to the customer. In order for the header to be recognized as a tab, the link itself must start with #tab/ and be followed by an ID representing the content of the tab. The ID is used to sync all same-ID tabs across the page. Using the above example, when a user selects a tab with the link #tab/windows, all tabs with the link #tab/windows on the page will be selected. Dependent tabs It's possible to make the selection in one set of tabs dependent on the selection in another set of tabs. Here's an example of that in action: .NET .NET TypeScript TypeScript REST API .NET content for Linux... .NET content for Windows... TypeScript content for Linux... TypeScript content for Windows... REST API content, independent of platform... flowchart LR A[Hard] -->|Text| B(Round) B --> C{Decision} C -->|One| D[Result 1] C -->|Two| E[Result 2] Notice how changing the Linux/Windows selection above changes the content in the .NET and TypeScript tabs. This is because the tab group defines two versions for each .NET and TypeScript, where the Windows/Linux selection above determines which version is shown for .NET/TypeScript. Here's the markup that shows how this is done: # [.NET](#tab/dotnet/linux) .NET content for Linux... # [.NET](#tab/dotnet/windows) .NET content for Windows... # [TypeScript](#tab/typescript/linux) TypeScript content for Linux... # [TypeScript](#tab/typescript/windows) TypeScript content for Windows... # [REST API](#tab/rest) REST API content, independent of platform... --- Details Demo root@server# apt-get install nano" + "summary": "Markdown Markdown is a lightweight markup language with plain text formatting syntax. Docfx supports CommonMark compliant Markdown parsed through the Markdig parsing engine. Link to Math Expressions Block Quotes This is a block quote. Alerts Note Information the user should notice even if skimming. Tip Optional information to help a user be more successful. Important Essential information required for user success. Caution Negative potential consequences of an action. Warning Dangerous certain consequences of an action. MY TODO This is a TODO. Image Mermaid Diagrams Flowchart flowchart LR A[Hard] -->|Text| B(Round) B --> C{Decision} C -->|One| D[Result 1] C -->|Two| E[Result 2] Code Snippet The example highlights lines 2, line 5 to 7 and lines 9 to the end of the file. using System; using Azure; using Azure.Storage; using Azure.Storage.Blobs; class Program { static void Main(string[] args) { // Define the connection string for the storage account string connectionString = \"DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.windows.net\"; // Create a new BlobServiceClient using the connection string var blobServiceClient = new BlobServiceClient(connectionString); // Create a new container var container = blobServiceClient.CreateBlobContainer(\"mycontainer\"); // Upload a file to the container using (var fileStream = File.OpenRead(\"path/to/file.txt\")) { container.UploadBlob(\"file.txt\", fileStream); } // Download the file from the container var downloadedBlob = container.GetBlobClient(\"file.txt\").Download(); using (var fileStream = File.OpenWrite(\"path/to/downloaded-file.txt\")) { downloadedBlob.Value.Content.CopyTo(fileStream); } } } Math Expressions This sentence uses $ delimiters to show math inline: \\(\\sqrt{3x-1}+(1+x)^2\\) The Cauchy-Schwarz Inequality \\(\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\\) This expression uses \\$ to display a dollar sign: \\(\\sqrt{\\$4}\\) To split $100 in half, we calculate \\(100/2\\) Custom Syntax Highlighting resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = { name: 'hello' // (...) } Tabs Linux Windows Content for Linux... Content for Windows... The above tab group was created with the following syntax: # [Linux](#tab/linux) Content for Linux... # [Windows](#tab/windows) Content for Windows... --- Tabs are indicated by using a specific link syntax within a Markdown header. The syntax can be described as follows: # [Tab Display Name](#tab/tab-id) A tab starts with a Markdown header, #, and is followed by a Markdown link [](). The text of the link will become the text of the tab header, displayed to the customer. In order for the header to be recognized as a tab, the link itself must start with #tab/ and be followed by an ID representing the content of the tab. The ID is used to sync all same-ID tabs across the page. Using the above example, when a user selects a tab with the link #tab/windows, all tabs with the link #tab/windows on the page will be selected. Dependent tabs It's possible to make the selection in one set of tabs dependent on the selection in another set of tabs. Here's an example of that in action: .NET .NET TypeScript TypeScript REST API .NET content for Linux... .NET content for Windows... TypeScript content for Linux... TypeScript content for Windows... REST API content, independent of platform... flowchart LR A[Hard] -->|Text| B(Round) B --> C{Decision} C -->|One| D[Result 1] C -->|Two| E[Result 2] Notice how changing the Linux/Windows selection above changes the content in the .NET and TypeScript tabs. This is because the tab group defines two versions for each .NET and TypeScript, where the Windows/Linux selection above determines which version is shown for .NET/TypeScript. Here's the markup that shows how this is done: # [.NET](#tab/dotnet/linux) .NET content for Linux... # [.NET](#tab/dotnet/windows) .NET content for Windows... # [TypeScript](#tab/typescript/linux) TypeScript content for Linux... # [TypeScript](#tab/typescript/windows) TypeScript content for Windows... # [REST API](#tab/rest) REST API content, independent of platform... --- Details Demo root@server# apt-get install nano" }, "index.html": { "href": "index.html", "title": "docfx-seed | docfx seed website", - "keywords": "docfx-seed Description This is a sample docfx documentation project. It contains .NET source code and markdown files. docfx.json is the configuration file for running docfx. docfx will generate a static website as similar to http://docascode.github.io/docfx-seed. How to run Under Windows Download and unzip docfx.zip to run docfx.exe directly! Run docfx under current repo! Website will be generated under _site folder. Run any web hosting tool to host _site folder, e.g. docfx serve _site. Cross platform and use dnx As a prerequisite, you will need to install DNVM and DNX. ###Quick Start dnvm upgrade to get the latest dnvm. Add feed https://www.myget.org/F/aspnetrelease/api/v2/ to Nuget.config For Windows, the nuget config file is %AppData%\\NuGet\\NuGet.config. For Linux/OSX, the nuget config file is ~/.config/NuGet/NuGet.config. dnu commands install docfx to install docfx as a command Run docfx under current repo! Website will be generated under _site folder. Run any web hosting tool to host _site folder, e.g. docfx serve _site. Further information about docfx docfx is a tool to generate documentation towards .NET source code and markdown files. Please refer to docfx to get start. The docfx website itself is generated by docfx!" + "summary": "docfx-seed Description This is a sample docfx documentation project. It contains .NET source code and markdown files. docfx.json is the configuration file for running docfx. docfx will generate a static website as similar to http://docascode.github.io/docfx-seed. How to run Under Windows Download and unzip docfx.zip to run docfx.exe directly! Run docfx under current repo! Website will be generated under _site folder. Run any web hosting tool to host _site folder, e.g. docfx serve _site. Cross platform and use dnx As a prerequisite, you will need to install DNVM and DNX. ###Quick Start dnvm upgrade to get the latest dnvm. Add feed https://www.myget.org/F/aspnetrelease/api/v2/ to Nuget.config For Windows, the nuget config file is %AppData%\\NuGet\\NuGet.config. For Linux/OSX, the nuget config file is ~/.config/NuGet/NuGet.config. dnu commands install docfx to install docfx as a command Run docfx under current repo! Website will be generated under _site folder. Run any web hosting tool to host _site folder, e.g. docfx serve _site. Further information about docfx docfx is a tool to generate documentation towards .NET source code and markdown files. Please refer to docfx to get start. The docfx website itself is generated by docfx!" }, "md/BuildFromAssembly.Class1.html": { "href": "md/BuildFromAssembly.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace: BuildFromAssembly Assembly: BuildFromAssembly.dll This is a test class. public class Class1 Inheritance object ← Class1 Inherited Members object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode() Constructors Class1() public Class1() Methods HelloWorld() Hello World. public static void HelloWorld()" + "summary": "Class Class1 Namespace: BuildFromAssembly Assembly: BuildFromAssembly.dll This is a test class. public class Class1 Inheritance object ← Class1 Inherited Members object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode() Constructors Class1() public Class1() Methods HelloWorld() Hello World. public static void HelloWorld()" }, "md/BuildFromAssembly.Issue5432.html": { "href": "md/BuildFromAssembly.Issue5432.html", "title": "Struct Issue5432 | docfx seed website", - "keywords": "Struct Issue5432 Namespace: BuildFromAssembly Assembly: BuildFromAssembly.dll public struct Issue5432 Inherited Members object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode() Properties Name public string Name { get; } Property Value string" + "summary": "Struct Issue5432 Namespace: BuildFromAssembly Assembly: BuildFromAssembly.dll public struct Issue5432 Inherited Members object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode() Properties Name public string Name { get; } Property Value string" }, "md/BuildFromAssembly.html": { "href": "md/BuildFromAssembly.html", "title": "Namespace BuildFromAssembly | docfx seed website", - "keywords": "Namespace BuildFromAssembly Classes Class1 This is a test class. Structs Issue5432" + "summary": "Namespace BuildFromAssembly Classes Class1 This is a test class. Structs Issue5432" }, "md/BuildFromCSharpSourceCode.CSharp.html": { "href": "md/BuildFromCSharpSourceCode.CSharp.html", "title": "Class CSharp | docfx seed website", - "keywords": "Class CSharp Namespace: BuildFromCSharpSourceCode public class CSharp Inheritance object ← CSharp Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Main(string[]) public static void Main(string[] args) Parameters args string[]" + "summary": "Class CSharp Namespace: BuildFromCSharpSourceCode public class CSharp Inheritance object ← CSharp Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Main(string[]) public static void Main(string[] args) Parameters args string[]" }, "md/BuildFromCSharpSourceCode.html": { "href": "md/BuildFromCSharpSourceCode.html", "title": "Namespace BuildFromCSharpSourceCode | docfx seed website", - "keywords": "Namespace BuildFromCSharpSourceCode Classes CSharp" + "summary": "Namespace BuildFromCSharpSourceCode Classes CSharp" }, "md/BuildFromProject.Class1.IIssue8948.html": { "href": "md/BuildFromProject.Class1.IIssue8948.html", "title": "Interface Class1.IIssue8948 | docfx seed website", - "keywords": "Interface Class1.IIssue8948 Namespace: BuildFromProject Assembly: BuildFromProject.dll public interface Class1.IIssue8948 Methods DoNothing() Does nothing with generic type T. void DoNothing() Type Parameters T A generic type." + "summary": "Interface Class1.IIssue8948 Namespace: BuildFromProject Assembly: BuildFromProject.dll public interface Class1.IIssue8948 Methods DoNothing() Does nothing with generic type T. void DoNothing() Type Parameters T A generic type." }, "md/BuildFromProject.Class1.Issue8665.html": { "href": "md/BuildFromProject.Class1.Issue8665.html", "title": "Class Class1.Issue8665 | docfx seed website", - "keywords": "Class Class1.Issue8665 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Issue8665 Inheritance object ← Class1.Issue8665 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Issue8665() public Issue8665() Issue8665(int) public Issue8665(int foo) Parameters foo int Issue8665(int, char) public Issue8665(int foo, char bar) Parameters foo int bar char Issue8665(int, char, string) public Issue8665(int foo, char bar, string baz) Parameters foo int bar char baz string Properties Bar public char Bar { get; } Property Value char Baz public string Baz { get; } Property Value string Foo public int Foo { get; } Property Value int" + "summary": "Class Class1.Issue8665 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Issue8665 Inheritance object ← Class1.Issue8665 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Issue8665() public Issue8665() Issue8665(int) public Issue8665(int foo) Parameters foo int Issue8665(int, char) public Issue8665(int foo, char bar) Parameters foo int bar char Issue8665(int, char, string) public Issue8665(int foo, char bar, string baz) Parameters foo int bar char baz string Properties Bar public char Bar { get; } Property Value char Baz public string Baz { get; } Property Value string Foo public int Foo { get; } Property Value int" }, "md/BuildFromProject.Class1.Issue8696Attribute.html": { "href": "md/BuildFromProject.Class1.Issue8696Attribute.html", "title": "Class Class1.Issue8696Attribute | docfx seed website", - "keywords": "Class Class1.Issue8696Attribute Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Issue8696Attribute : Attribute Inheritance object ← Attribute ← Class1.Issue8696Attribute Inherited Members Attribute.Equals(object?), Attribute.GetCustomAttribute(Assembly, Type), Attribute.GetCustomAttribute(Assembly, Type, bool), Attribute.GetCustomAttribute(MemberInfo, Type), Attribute.GetCustomAttribute(MemberInfo, Type, bool), Attribute.GetCustomAttribute(Module, Type), Attribute.GetCustomAttribute(Module, Type, bool), Attribute.GetCustomAttribute(ParameterInfo, Type), Attribute.GetCustomAttribute(ParameterInfo, Type, bool), Attribute.GetCustomAttributes(Assembly), Attribute.GetCustomAttributes(Assembly, bool), Attribute.GetCustomAttributes(Assembly, Type), Attribute.GetCustomAttributes(Assembly, Type, bool), Attribute.GetCustomAttributes(MemberInfo), Attribute.GetCustomAttributes(MemberInfo, bool), Attribute.GetCustomAttributes(MemberInfo, Type), Attribute.GetCustomAttributes(MemberInfo, Type, bool), Attribute.GetCustomAttributes(Module), Attribute.GetCustomAttributes(Module, bool), Attribute.GetCustomAttributes(Module, Type), Attribute.GetCustomAttributes(Module, Type, bool), Attribute.GetCustomAttributes(ParameterInfo), Attribute.GetCustomAttributes(ParameterInfo, bool), Attribute.GetCustomAttributes(ParameterInfo, Type), Attribute.GetCustomAttributes(ParameterInfo, Type, bool), Attribute.GetHashCode(), Attribute.IsDefaultAttribute(), Attribute.IsDefined(Assembly, Type), Attribute.IsDefined(Assembly, Type, bool), Attribute.IsDefined(MemberInfo, Type), Attribute.IsDefined(MemberInfo, Type, bool), Attribute.IsDefined(Module, Type), Attribute.IsDefined(Module, Type, bool), Attribute.IsDefined(ParameterInfo, Type), Attribute.IsDefined(ParameterInfo, Type, bool), Attribute.Match(object?), Attribute.TypeId, object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Issue8696Attribute(string?, int, int, string[]?, bool, Type?) [Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)] public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null) Parameters description string? boundsMin int boundsMax int validGameModes string[]? hasMultipleSelections bool enumType Type?" + "summary": "Class Class1.Issue8696Attribute Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Issue8696Attribute : Attribute Inheritance object ← Attribute ← Class1.Issue8696Attribute Inherited Members Attribute.Equals(object?), Attribute.GetCustomAttribute(Assembly, Type), Attribute.GetCustomAttribute(Assembly, Type, bool), Attribute.GetCustomAttribute(MemberInfo, Type), Attribute.GetCustomAttribute(MemberInfo, Type, bool), Attribute.GetCustomAttribute(Module, Type), Attribute.GetCustomAttribute(Module, Type, bool), Attribute.GetCustomAttribute(ParameterInfo, Type), Attribute.GetCustomAttribute(ParameterInfo, Type, bool), Attribute.GetCustomAttributes(Assembly), Attribute.GetCustomAttributes(Assembly, bool), Attribute.GetCustomAttributes(Assembly, Type), Attribute.GetCustomAttributes(Assembly, Type, bool), Attribute.GetCustomAttributes(MemberInfo), Attribute.GetCustomAttributes(MemberInfo, bool), Attribute.GetCustomAttributes(MemberInfo, Type), Attribute.GetCustomAttributes(MemberInfo, Type, bool), Attribute.GetCustomAttributes(Module), Attribute.GetCustomAttributes(Module, bool), Attribute.GetCustomAttributes(Module, Type), Attribute.GetCustomAttributes(Module, Type, bool), Attribute.GetCustomAttributes(ParameterInfo), Attribute.GetCustomAttributes(ParameterInfo, bool), Attribute.GetCustomAttributes(ParameterInfo, Type), Attribute.GetCustomAttributes(ParameterInfo, Type, bool), Attribute.GetHashCode(), Attribute.IsDefaultAttribute(), Attribute.IsDefined(Assembly, Type), Attribute.IsDefined(Assembly, Type, bool), Attribute.IsDefined(MemberInfo, Type), Attribute.IsDefined(MemberInfo, Type, bool), Attribute.IsDefined(Module, Type), Attribute.IsDefined(Module, Type, bool), Attribute.IsDefined(ParameterInfo, Type), Attribute.IsDefined(ParameterInfo, Type, bool), Attribute.Match(object?), Attribute.TypeId, object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Issue8696Attribute(string?, int, int, string[]?, bool, Type?) [Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)] public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null) Parameters description string? boundsMin int boundsMax int validGameModes string[]? hasMultipleSelections bool enumType Type?" }, "md/BuildFromProject.Class1.Issue8948.html": { "href": "md/BuildFromProject.Class1.Issue8948.html", "title": "Class Class1.Issue8948 | docfx seed website", - "keywords": "Class Class1.Issue8948 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Issue8948 : Class1.IIssue8948 Inheritance object ← Class1.Issue8948 Implements Class1.IIssue8948 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods DoNothing() Does nothing with generic type T. public void DoNothing() Type Parameters T A generic type." + "summary": "Class Class1.Issue8948 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Issue8948 : Class1.IIssue8948 Inheritance object ← Class1.Issue8948 Implements Class1.IIssue8948 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods DoNothing() Does nothing with generic type T. public void DoNothing() Type Parameters T A generic type." }, "md/BuildFromProject.Class1.Issue9260.html": { "href": "md/BuildFromProject.Class1.Issue9260.html", "title": "Enum Class1.Issue9260 | docfx seed website", - "keywords": "Enum Class1.Issue9260 Namespace: BuildFromProject Assembly: BuildFromProject.dll public enum Class1.Issue9260 Fields Value = 0 This is a regular enum value. This is a remarks section. Very important remarks about Value go here. OldAndUnusedValue = 1 This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead. OldAndUnusedValue2 = 2 This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead." + "summary": "Enum Class1.Issue9260 Namespace: BuildFromProject Assembly: BuildFromProject.dll public enum Class1.Issue9260 Fields Value = 0 This is a regular enum value. This is a remarks section. Very important remarks about Value go here. OldAndUnusedValue = 1 This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead. OldAndUnusedValue2 = 2 This is old and unused. You shouldn't use it anymore. Don't use this, seriously! Use Value instead." }, "md/BuildFromProject.Class1.Test-1.html": { "href": "md/BuildFromProject.Class1.Test-1.html", "title": "Class Class1.Test | docfx seed website", - "keywords": "Class Class1.Test Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Test Type Parameters T Inheritance object ← Class1.Test Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class Class1.Test Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1.Test Type Parameters T Inheritance object ← Class1.Test Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/BuildFromProject.Class1.html": { "href": "md/BuildFromProject.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1 : IClass1 Inheritance object ← Class1 Implements IClass1 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Issue1651() Pricing models are used to calculate theoretical option values 1Black Scholes 2Black76 3Black76Fut 4Equity Tree 5Variance Swap 6Dividend Forecast public void Issue1651() Issue1887() IConfiguration related helper and extension routines. public void Issue1887() Issue2623() public void Issue2623() Examples MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Remarks For example: MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Issue2723() public void Issue2723() Remarks Note This is a . & \" ' Inline . link for (var i = 0; i > 10; i++) // & \" ' var range = new Range { Min = 0, Max = 10 }; var range = new Range { Min = 0, Max = 10 }; Issue4017() public void Issue4017() Examples public void HookMessageDeleted(BaseSocketClient client) { client.MessageDeleted += HandleMessageDelete; } public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel) { // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask; } Remarks void Update() { myClass.Execute(); } Issue4392() public void Issue4392() Remarks @\"\\\\?\\\" @\"\\\\?\\\" Issue7484() public void Issue7484() Remarks There's really no reason to not believe that this class can test things. Term Description A Term A Description Bee Term Bee Description Issue8764() public void Issue8764() where T : unmanaged Type Parameters T Issue896() Test public void Issue896() See Also Class1.Test, Class1 Issue9216() Calculates the determinant of a 3-dimensional matrix: \\(A = \\begin{vmatrix} a_{11} & a_{12} & a_{13} \\\\ a_{21} & a_{22} & a_{23} \\\\ a_{31} & a_{32} & a_{33} \\end{vmatrix}\\) Returns the smallest value: \\(\\left\\{\\begin{matrix}a, aa\\\\ \\end{matrix} \\right.\\) public static double Issue9216() Returns double XmlCommentIncludeTag() This method should do something... public void XmlCommentIncludeTag() Remarks This is remarks." + "summary": "Class Class1 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Class1 : IClass1 Inheritance object ← Class1 Implements IClass1 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Issue1651() Pricing models are used to calculate theoretical option values 1Black Scholes 2Black76 3Black76Fut 4Equity Tree 5Variance Swap 6Dividend Forecast public void Issue1651() Issue1887() IConfiguration related helper and extension routines. public void Issue1887() Issue2623() public void Issue2623() Examples MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Remarks For example: MyClass myClass = new MyClass(); void Update() { myClass.Execute(); } Issue2723() public void Issue2723() Remarks Note This is a . & \" ' Inline . link for (var i = 0; i > 10; i++) // & \" ' var range = new Range { Min = 0, Max = 10 }; var range = new Range { Min = 0, Max = 10 }; Issue4017() public void Issue4017() Examples public void HookMessageDeleted(BaseSocketClient client) { client.MessageDeleted += HandleMessageDelete; } public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel) { // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask; } Remarks void Update() { myClass.Execute(); } Issue4392() public void Issue4392() Remarks @\"\\\\?\\\" @\"\\\\?\\\" Issue7484() public void Issue7484() Remarks There's really no reason to not believe that this class can test things. Term Description A Term A Description Bee Term Bee Description Issue8764() public void Issue8764() where T : unmanaged Type Parameters T Issue896() Test public void Issue896() See Also Class1.Test, Class1 Issue9216() Calculates the determinant of a 3-dimensional matrix: \\(A = \\begin{vmatrix} a_{11} & a_{12} & a_{13} \\\\ a_{21} & a_{22} & a_{23} \\\\ a_{31} & a_{32} & a_{33} \\end{vmatrix}\\) Returns the smallest value: \\(\\left\\{\\begin{matrix}a, aa\\\\ \\end{matrix} \\right.\\) public static double Issue9216() Returns double XmlCommentIncludeTag() This method should do something... public void XmlCommentIncludeTag() Remarks This is remarks." }, "md/BuildFromProject.Dog.html": { "href": "md/BuildFromProject.Dog.html", "title": "Class Dog | docfx seed website", - "keywords": "Class Dog Namespace: BuildFromProject Assembly: BuildFromProject.dll Class representing a dog. public class Dog Inheritance object ← Dog Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Dog(string, int) Constructor. public Dog(string name, int age) Parameters name string Name of the dog. age int Age of the dog. Properties Age Age of the dog. public int Age { get; } Property Value int Name Name of the dog. public string Name { get; } Property Value string" + "summary": "Class Dog Namespace: BuildFromProject Assembly: BuildFromProject.dll Class representing a dog. public class Dog Inheritance object ← Dog Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Dog(string, int) Constructor. public Dog(string name, int age) Parameters name string Name of the dog. age int Age of the dog. Properties Age Age of the dog. public int Age { get; } Property Value int Name Name of the dog. public string Name { get; } Property Value string" }, "md/BuildFromProject.IInheritdoc.html": { "href": "md/BuildFromProject.IInheritdoc.html", "title": "Interface IInheritdoc | docfx seed website", - "keywords": "Interface IInheritdoc Namespace: BuildFromProject Assembly: BuildFromProject.dll public interface IInheritdoc Methods Issue7629() This method should do something... void Issue7629()" + "summary": "Interface IInheritdoc Namespace: BuildFromProject Assembly: BuildFromProject.dll public interface IInheritdoc Methods Issue7629() This method should do something... void Issue7629()" }, "md/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html": { "href": "md/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html", "title": "Class Inheritdoc.Issue6366.Class1 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366.Class1 Namespace: BuildFromProject Assembly: BuildFromProject.dll public abstract class Inheritdoc.Issue6366.Class1 Type Parameters T Inheritance object ← Inheritdoc.Issue6366.Class1 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods TestMethod1(T, int) This text inherited. public abstract T TestMethod1(T parm1, int parm2) Parameters parm1 T This text NOT inherited. parm2 int This text inherited. Returns T This text inherited." + "summary": "Class Inheritdoc.Issue6366.Class1 Namespace: BuildFromProject Assembly: BuildFromProject.dll public abstract class Inheritdoc.Issue6366.Class1 Type Parameters T Inheritance object ← Inheritdoc.Issue6366.Class1 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods TestMethod1(T, int) This text inherited. public abstract T TestMethod1(T parm1, int parm2) Parameters parm1 T This text NOT inherited. parm2 int This text inherited. Returns T This text inherited." }, "md/BuildFromProject.Inheritdoc.Issue6366.Class2.html": { "href": "md/BuildFromProject.Inheritdoc.Issue6366.Class2.html", "title": "Class Inheritdoc.Issue6366.Class2 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366.Class2 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1 Inheritance object ← Inheritdoc.Issue6366.Class1 ← Inheritdoc.Issue6366.Class2 Inherited Members Inheritdoc.Issue6366.Class1.TestMethod1(bool, int), object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods TestMethod1(bool, int) This text inherited. public override bool TestMethod1(bool parm1, int parm2) Parameters parm1 bool This text NOT inherited. parm2 int This text inherited. Returns bool This text inherited." + "summary": "Class Inheritdoc.Issue6366.Class2 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1 Inheritance object ← Inheritdoc.Issue6366.Class1 ← Inheritdoc.Issue6366.Class2 Inherited Members Inheritdoc.Issue6366.Class1.TestMethod1(bool, int), object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods TestMethod1(bool, int) This text inherited. public override bool TestMethod1(bool parm1, int parm2) Parameters parm1 bool This text NOT inherited. parm2 int This text inherited. Returns bool This text inherited." }, "md/BuildFromProject.Inheritdoc.Issue6366.html": { "href": "md/BuildFromProject.Inheritdoc.Issue6366.html", "title": "Class Inheritdoc.Issue6366 | docfx seed website", - "keywords": "Class Inheritdoc.Issue6366 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue6366 Inheritance object ← Inheritdoc.Issue6366 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class Inheritdoc.Issue6366 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue6366 Inheritance object ← Inheritdoc.Issue6366 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/BuildFromProject.Inheritdoc.Issue7035.html": { "href": "md/BuildFromProject.Inheritdoc.Issue7035.html", "title": "Class Inheritdoc.Issue7035 | docfx seed website", - "keywords": "Class Inheritdoc.Issue7035 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue7035 Inheritance object ← Inheritdoc.Issue7035 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods A() public void A() B() public void B()" + "summary": "Class Inheritdoc.Issue7035 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue7035 Inheritance object ← Inheritdoc.Issue7035 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods A() public void A() B() public void B()" }, "md/BuildFromProject.Inheritdoc.Issue7484.html": { "href": "md/BuildFromProject.Inheritdoc.Issue7484.html", "title": "Class Inheritdoc.Issue7484 | docfx seed website", - "keywords": "Class Inheritdoc.Issue7484 Namespace: BuildFromProject Assembly: BuildFromProject.dll This is a test class to have something for DocFX to document. public class Inheritdoc.Issue7484 Inheritance object ← Inheritdoc.Issue7484 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Remarks We're going to talk about things now. BoolReturningMethod(bool) Simple method to generate docs for. DoDad A string that could have something. Constructors Issue7484() This is a constructor to document. public Issue7484() Properties DoDad A string that could have something. public string DoDad { get; } Property Value string Methods BoolReturningMethod(bool) Simple method to generate docs for. public bool BoolReturningMethod(bool source) Parameters source bool A meaningless boolean value, much like most questions in the world. Returns bool An exactly equivalently meaningless boolean value, much like most answers in the world. Remarks I'd like to take a moment to thank all of those who helped me get to a place where I can write documentation like this." + "summary": "Class Inheritdoc.Issue7484 Namespace: BuildFromProject Assembly: BuildFromProject.dll This is a test class to have something for DocFX to document. public class Inheritdoc.Issue7484 Inheritance object ← Inheritdoc.Issue7484 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Remarks We're going to talk about things now. BoolReturningMethod(bool) Simple method to generate docs for. DoDad A string that could have something. Constructors Issue7484() This is a constructor to document. public Issue7484() Properties DoDad A string that could have something. public string DoDad { get; } Property Value string Methods BoolReturningMethod(bool) Simple method to generate docs for. public bool BoolReturningMethod(bool source) Parameters source bool A meaningless boolean value, much like most questions in the world. Returns bool An exactly equivalently meaningless boolean value, much like most answers in the world. Remarks I'd like to take a moment to thank all of those who helped me get to a place where I can write documentation like this." }, "md/BuildFromProject.Inheritdoc.Issue8101.html": { "href": "md/BuildFromProject.Inheritdoc.Issue8101.html", "title": "Class Inheritdoc.Issue8101 | docfx seed website", - "keywords": "Class Inheritdoc.Issue8101 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue8101 Inheritance object ← Inheritdoc.Issue8101 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Tween(float, float, float, Action) Create a new tween. public static object Tween(float from, float to, float duration, Action onChange) Parameters from float The starting value. to float The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance. Tween(int, int, float, Action) Create a new tween. public static object Tween(int from, int to, float duration, Action onChange) Parameters from int The starting value. to int The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance." + "summary": "Class Inheritdoc.Issue8101 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue8101 Inheritance object ← Inheritdoc.Issue8101 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Tween(float, float, float, Action) Create a new tween. public static object Tween(float from, float to, float duration, Action onChange) Parameters from float The starting value. to float The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance. Tween(int, int, float, Action) Create a new tween. public static object Tween(int from, int to, float duration, Action onChange) Parameters from int The starting value. to int The end value. duration float Total tween duration in seconds. onChange Action A callback that will be invoked every time the tween value changes. Returns object The newly created tween instance." }, "md/BuildFromProject.Inheritdoc.Issue8129.html": { "href": "md/BuildFromProject.Inheritdoc.Issue8129.html", "title": "Struct Inheritdoc.Issue8129 | docfx seed website", - "keywords": "Struct Inheritdoc.Issue8129 Namespace: BuildFromProject Assembly: BuildFromProject.dll public struct Inheritdoc.Issue8129 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Issue8129(string) public Issue8129(string foo) Parameters foo string" + "summary": "Struct Inheritdoc.Issue8129 Namespace: BuildFromProject Assembly: BuildFromProject.dll public struct Inheritdoc.Issue8129 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString() Constructors Issue8129(string) public Issue8129(string foo) Parameters foo string" + }, + "md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html": { + "href": "md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "title": "Interface Inheritdoc.Issue9736.IJsonApiOptions | docfx seed website", + "summary": "Interface Inheritdoc.Issue9736.IJsonApiOptions Namespace: BuildFromProject Assembly: BuildFromProject.dll public interface Inheritdoc.Issue9736.IJsonApiOptions Properties UseRelativeLinks Whether to use relative links for all resources. false by default. bool UseRelativeLinks { get; } Property Value bool Examples options.UseRelativeLinks = true; { \"type\": \"articles\", \"id\": \"4309\", \"relationships\": { \"author\": { \"links\": { \"self\": \"/api/shopping/articles/4309/relationships/author\", \"related\": \"/api/shopping/articles/4309/author\" } } } }" + }, + "md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html": { + "href": "md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "title": "Class Inheritdoc.Issue9736.JsonApiOptions | docfx seed website", + "summary": "Class Inheritdoc.Issue9736.JsonApiOptions Namespace: BuildFromProject Assembly: BuildFromProject.dll public sealed class Inheritdoc.Issue9736.JsonApiOptions : Inheritdoc.Issue9736.IJsonApiOptions Inheritance object ← Inheritdoc.Issue9736.JsonApiOptions Implements Inheritdoc.Issue9736.IJsonApiOptions Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString() Properties UseRelativeLinks Whether to use relative links for all resources. false by default. public bool UseRelativeLinks { get; set; } Property Value bool Examples options.UseRelativeLinks = true; { \"type\": \"articles\", \"id\": \"4309\", \"relationships\": { \"author\": { \"links\": { \"self\": \"/api/shopping/articles/4309/relationships/author\", \"related\": \"/api/shopping/articles/4309/author\" } } } }" + }, + "md/BuildFromProject.Inheritdoc.Issue9736.html": { + "href": "md/BuildFromProject.Inheritdoc.Issue9736.html", + "title": "Class Inheritdoc.Issue9736 | docfx seed website", + "summary": "Class Inheritdoc.Issue9736 Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc.Issue9736 Inheritance object ← Inheritdoc.Issue9736 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/BuildFromProject.Inheritdoc.html": { "href": "md/BuildFromProject.Inheritdoc.html", "title": "Class Inheritdoc | docfx seed website", - "keywords": "Class Inheritdoc Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc : IInheritdoc, IDisposable Inheritance object ← Inheritdoc Implements IInheritdoc, IDisposable Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Issue7628() This method should do something... public void Issue7628() Issue7629() This method should do something... public void Issue7629()" + "summary": "Class Inheritdoc Namespace: BuildFromProject Assembly: BuildFromProject.dll public class Inheritdoc : IInheritdoc, IDisposable Inheritance object ← Inheritdoc Implements IInheritdoc, IDisposable Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Issue7628() This method should do something... public void Issue7628() Issue7629() This method should do something... public void Issue7629()" }, "md/BuildFromProject.Issue8540.A.A.html": { "href": "md/BuildFromProject.Issue8540.A.A.html", "title": "Class A | docfx seed website", - "keywords": "Class A Namespace: BuildFromProject.Issue8540.A Assembly: BuildFromProject.dll public class A Inheritance object ← A Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class A Namespace: BuildFromProject.Issue8540.A Assembly: BuildFromProject.dll public class A Inheritance object ← A Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/BuildFromProject.Issue8540.A.html": { "href": "md/BuildFromProject.Issue8540.A.html", "title": "Namespace BuildFromProject.Issue8540.A | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540.A Classes A" + "summary": "Namespace BuildFromProject.Issue8540.A Classes A" }, "md/BuildFromProject.Issue8540.B.B.html": { "href": "md/BuildFromProject.Issue8540.B.B.html", "title": "Class B | docfx seed website", - "keywords": "Class B Namespace: BuildFromProject.Issue8540.B Assembly: BuildFromProject.dll public class B Inheritance object ← B Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class B Namespace: BuildFromProject.Issue8540.B Assembly: BuildFromProject.dll public class B Inheritance object ← B Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/BuildFromProject.Issue8540.B.html": { "href": "md/BuildFromProject.Issue8540.B.html", "title": "Namespace BuildFromProject.Issue8540.B | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540.B Classes B" + "summary": "Namespace BuildFromProject.Issue8540.B Classes B" }, "md/BuildFromProject.Issue8540.html": { "href": "md/BuildFromProject.Issue8540.html", "title": "Namespace BuildFromProject.Issue8540 | docfx seed website", - "keywords": "Namespace BuildFromProject.Issue8540 Namespaces BuildFromProject.Issue8540.A BuildFromProject.Issue8540.B" + "summary": "Namespace BuildFromProject.Issue8540 Namespaces BuildFromProject.Issue8540.A BuildFromProject.Issue8540.B" }, "md/BuildFromProject.Issue8725.html": { "href": "md/BuildFromProject.Issue8725.html", "title": "Class Issue8725 | docfx seed website", - "keywords": "Class Issue8725 Namespace: BuildFromProject Assembly: BuildFromProject.dll A nice class public class Issue8725 Inheritance object ← Issue8725 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods MoreOperations() Another nice operation public void MoreOperations() MyOperation() A nice operation public void MyOperation() See Also Class1" + "summary": "Class Issue8725 Namespace: BuildFromProject Assembly: BuildFromProject.dll A nice class public class Issue8725 Inheritance object ← Issue8725 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods MoreOperations() Another nice operation public void MoreOperations() MyOperation() A nice operation public void MyOperation() See Also Class1" }, "md/BuildFromProject.html": { "href": "md/BuildFromProject.html", "title": "Namespace BuildFromProject | docfx seed website", - "keywords": "Namespace BuildFromProject Namespaces BuildFromProject.Issue8540 Classes Inheritdoc.Issue6366.Class1 Class1 Inheritdoc.Issue6366.Class2 Dog Class representing a dog. Inheritdoc Inheritdoc.Issue6366 Inheritdoc.Issue7035 Inheritdoc.Issue7484 This is a test class to have something for DocFX to document. Inheritdoc.Issue8101 Class1.Issue8665 Class1.Issue8696Attribute Issue8725 A nice class Class1.Issue8948 Class1.Test Structs Inheritdoc.Issue8129 Interfaces IInheritdoc Class1.IIssue8948 Enums Class1.Issue9260" + "summary": "Namespace BuildFromProject Namespaces BuildFromProject.Issue8540 Classes Inheritdoc.Issue6366.Class1 Class1 Inheritdoc.Issue6366.Class2 Dog Class representing a dog. Inheritdoc Inheritdoc.Issue6366 Inheritdoc.Issue7035 Inheritdoc.Issue7484 This is a test class to have something for DocFX to document. Inheritdoc.Issue8101 Class1.Issue8665 Class1.Issue8696Attribute Issue8725 A nice class Class1.Issue8948 Inheritdoc.Issue9736 Inheritdoc.Issue9736.JsonApiOptions Class1.Test Structs Inheritdoc.Issue8129 Interfaces IInheritdoc Class1.IIssue8948 Inheritdoc.Issue9736.IJsonApiOptions Enums Class1.Issue9260" }, "md/BuildFromVBSourceCode.BaseClass1.html": { "href": "md/BuildFromVBSourceCode.BaseClass1.html", "title": "Class BaseClass1 | docfx seed website", - "keywords": "Class BaseClass1 Namespace: BuildFromVBSourceCode This is the BaseClass public abstract class BaseClass1 Inheritance object ← BaseClass1 Derived Class1 Inherited Members object.Equals(object), object.Equals(object, object), object.Finalize(), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object, object), object.ToString() Methods WithDeclarationKeyword(Class1) public abstract DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" + "summary": "Class BaseClass1 Namespace: BuildFromVBSourceCode This is the BaseClass public abstract class BaseClass1 Inheritance object ← BaseClass1 Derived Class1 Inherited Members object.Equals(object), object.Equals(object, object), object.Finalize(), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object, object), object.ToString() Methods WithDeclarationKeyword(Class1) public abstract DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" }, "md/BuildFromVBSourceCode.Class1.html": { "href": "md/BuildFromVBSourceCode.Class1.html", "title": "Class Class1 | docfx seed website", - "keywords": "Class Class1 Namespace: BuildFromVBSourceCode This is summary from vb class... public class Class1 : BaseClass1 Inheritance object ← BaseClass1 ← Class1 Inherited Members BaseClass1.WithDeclarationKeyword(Class1), object.Equals(object), object.Equals(object, object), object.Finalize(), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object, object), object.ToString() Fields ValueClass This is a Value type public Class1 ValueClass Field Value Class1 Properties Keyword [Obsolete(\"This member is obsolete.\", true)] public Class1 Keyword { get; } Property Value Class1 Methods Value(string) This is a Function public int Value(string name) Parameters name string Name as the String value Returns int Returns Ahooo WithDeclarationKeyword(Class1) What is Sub? public override DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" + "summary": "Class Class1 Namespace: BuildFromVBSourceCode This is summary from vb class... public class Class1 : BaseClass1 Inheritance object ← BaseClass1 ← Class1 Inherited Members BaseClass1.WithDeclarationKeyword(Class1), object.Equals(object), object.Equals(object, object), object.Finalize(), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object, object), object.ToString() Fields ValueClass This is a Value type public Class1 ValueClass Field Value Class1 Properties Keyword [Obsolete(\"This member is obsolete.\", true)] public Class1 Keyword { get; } Property Value Class1 Methods Value(string) This is a Function public int Value(string name) Parameters name string Name as the String value Returns int Returns Ahooo WithDeclarationKeyword(Class1) What is Sub? public override DateTime WithDeclarationKeyword(Class1 keyword) Parameters keyword Class1 Returns DateTime" }, "md/BuildFromVBSourceCode.html": { "href": "md/BuildFromVBSourceCode.html", "title": "Namespace BuildFromVBSourceCode | docfx seed website", - "keywords": "Namespace BuildFromVBSourceCode Classes BaseClass1 This is the BaseClass Class1 This is summary from vb class..." + "summary": "Namespace BuildFromVBSourceCode Classes BaseClass1 This is the BaseClass Class1 This is summary from vb class..." }, "md/CatLibrary.Cat-2.html": { "href": "md/CatLibrary.Cat-2.html", "title": "Class Cat | docfx seed website", - "keywords": "Class Cat Namespace: CatLibrary Assembly: CatLibrary.dll Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class [Serializable] [Obsolete] public class Cat : ICat, IAnimal where T : class, new() where K : struct Type Parameters T This type should be class and can new instance. K This type is a struct type, class type can't be used for this parameter. Inheritance object ← Cat Implements ICat, IAnimal Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long) Examples Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct. var a = new Cat(object, int)(); int catNumber = new int(); unsafe { a.GetFeetLength(catNumber); } As you see, here we bring in pointer so we need to add unsafe keyword. Remarks Here's all the content you can see in this class. Constructors Cat() Default constructor. public Cat() Cat(T) Constructor with one generic parameter. public Cat(T ownType) Parameters ownType T This parameter type defined by class. Cat(string, out int, string, bool) It's a complex constructor. The parameter will have some attributes. public Cat(string nickName, out int age, string realName, bool isHealthy) Parameters nickName string it's string type. age int It's an out and ref parameter. realName string It's an out paramter. isHealthy bool It's an in parameter. Fields isHealthy Field with attribute. [ContextStatic] [NonSerialized] [Obsolete] public bool isHealthy Field Value bool Properties Age Hint cat's age. [Obsolete] protected int Age { get; set; } Property Value int Name EII property. public string Name { get; } Property Value string this[string] This is index property of Cat. You can see that the visibility is different between get and set method. public int this[string a] { protected get; set; } Property Value int Methods CalculateFood(DateTime) It's a method with complex return type. public Dictionary> CalculateFood(DateTime date) Parameters date DateTime Date time to now. Returns Dictionary> It's a relationship map of different kind food. Equals(object) Override the method of Object.Equals(object obj). public override bool Equals(object obj) Parameters obj object Can pass any class type. Returns bool The return value tell you whehter the compare operation is successful. GetTailLength(int*, params object[]) It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword. public long GetTailLength(int* catName, params object[] parameters) Parameters catName int* Thie represent for cat name length. parameters object[] Optional parameters. Returns long Return cat tail's length. Jump(T, K, ref bool) This method have attribute above it. [Conditional(\"Debug\")] public void Jump(T ownType, K anotherOwnType, ref bool cheat) Parameters ownType T Type come from class define. anotherOwnType K Type come from class define. cheat bool Hint whether this cat has cheat mode. Exceptions ArgumentException This is an argument exception ownEat Eat event of this cat [Obsolete(\"This _event handler_ is deprecated.\")] public event EventHandler ownEat Event Type EventHandler Operators operator +(Cat, int) Addition operator of this class. public static int operator +(Cat lsr, int rsr) Parameters lsr Cat .. rsr int ~~ Returns int Result with int type. explicit operator Tom(Cat) Expilicit operator of this class. It means this cat can evolve to change to Tom. Tom and Jerry. public static explicit operator Tom(Cat src) Parameters src Cat Instance of this class. Returns Tom Advanced class type of cat. operator -(Cat, int) Similar with operaotr +, refer to that topic. public static int operator -(Cat lsr, int rsr) Parameters lsr Cat rsr int Returns int" + "summary": "Class Cat Namespace: CatLibrary Assembly: CatLibrary.dll Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class [Serializable] [Obsolete] public class Cat : ICat, IAnimal where T : class, new() where K : struct Type Parameters T This type should be class and can new instance. K This type is a struct type, class type can't be used for this parameter. Inheritance object ← Cat Implements ICat, IAnimal Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long) Examples Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct. var a = new Cat(object, int)(); int catNumber = new int(); unsafe { a.GetFeetLength(catNumber); } As you see, here we bring in pointer so we need to add unsafe keyword. Remarks Here's all the content you can see in this class. Constructors Cat() Default constructor. public Cat() Cat(T) Constructor with one generic parameter. public Cat(T ownType) Parameters ownType T This parameter type defined by class. Cat(string, out int, string, bool) It's a complex constructor. The parameter will have some attributes. public Cat(string nickName, out int age, string realName, bool isHealthy) Parameters nickName string it's string type. age int It's an out and ref parameter. realName string It's an out paramter. isHealthy bool It's an in parameter. Fields isHealthy Field with attribute. [ContextStatic] [NonSerialized] [Obsolete] public bool isHealthy Field Value bool Properties Age Hint cat's age. [Obsolete] protected int Age { get; set; } Property Value int Name EII property. public string Name { get; } Property Value string this[string] This is index property of Cat. You can see that the visibility is different between get and set method. public int this[string a] { protected get; set; } Property Value int Methods CalculateFood(DateTime) It's a method with complex return type. public Dictionary> CalculateFood(DateTime date) Parameters date DateTime Date time to now. Returns Dictionary> It's a relationship map of different kind food. Equals(object) Override the method of Object.Equals(object obj). public override bool Equals(object obj) Parameters obj object Can pass any class type. Returns bool The return value tell you whehter the compare operation is successful. GetTailLength(int*, params object[]) It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword. public long GetTailLength(int* catName, params object[] parameters) Parameters catName int* Thie represent for cat name length. parameters object[] Optional parameters. Returns long Return cat tail's length. Jump(T, K, ref bool) This method have attribute above it. [Conditional(\"Debug\")] public void Jump(T ownType, K anotherOwnType, ref bool cheat) Parameters ownType T Type come from class define. anotherOwnType K Type come from class define. cheat bool Hint whether this cat has cheat mode. Exceptions ArgumentException This is an argument exception ownEat Eat event of this cat [Obsolete(\"This _event handler_ is deprecated.\")] public event EventHandler ownEat Event Type EventHandler Operators operator +(Cat, int) Addition operator of this class. public static int operator +(Cat lsr, int rsr) Parameters lsr Cat .. rsr int ~~ Returns int Result with int type. explicit operator Tom(Cat) Expilicit operator of this class. It means this cat can evolve to change to Tom. Tom and Jerry. public static explicit operator Tom(Cat src) Parameters src Cat Instance of this class. Returns Tom Advanced class type of cat. operator -(Cat, int) Similar with operaotr +, refer to that topic. public static int operator -(Cat lsr, int rsr) Parameters lsr Cat rsr int Returns int" }, "md/CatLibrary.CatException-1.html": { "href": "md/CatLibrary.CatException-1.html", "title": "Class CatException | docfx seed website", - "keywords": "Class CatException Namespace: CatLibrary Assembly: CatLibrary.dll public class CatException : Exception, ISerializable Type Parameters T Inheritance object ← Exception ← CatException Implements ISerializable Inherited Members Exception.GetBaseException(), Exception.GetType(), Exception.ToString(), Exception.Data, Exception.HelpLink, Exception.HResult, Exception.InnerException, Exception.Message, Exception.Source, Exception.StackTrace, Exception.TargetSite, Exception.SerializeObjectState, object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class CatException Namespace: CatLibrary Assembly: CatLibrary.dll public class CatException : Exception, ISerializable Type Parameters T Inheritance object ← Exception ← CatException Implements ISerializable Inherited Members Exception.GetBaseException(), Exception.GetType(), Exception.ToString(), Exception.Data, Exception.HelpLink, Exception.HResult, Exception.InnerException, Exception.Message, Exception.Source, Exception.StackTrace, Exception.TargetSite, Exception.SerializeObjectState, object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/CatLibrary.Complex-2.html": { "href": "md/CatLibrary.Complex-2.html", "title": "Class Complex | docfx seed website", - "keywords": "Class Complex Namespace: CatLibrary Assembly: CatLibrary.dll public class Complex Type Parameters T J Inheritance object ← Complex Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class Complex Namespace: CatLibrary Assembly: CatLibrary.dll public class Complex Type Parameters T J Inheritance object ← Complex Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/CatLibrary.Core.ContainersRefType.ColorType.html": { "href": "md/CatLibrary.Core.ContainersRefType.ColorType.html", "title": "Enum ContainersRefType.ColorType | docfx seed website", - "keywords": "Enum ContainersRefType.ColorType Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll Enumeration ColorType public enum ContainersRefType.ColorType Fields Red = 0 red Blue = 1 blue Yellow = 2 yellow" + "summary": "Enum ContainersRefType.ColorType Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll Enumeration ColorType public enum ContainersRefType.ColorType Fields Red = 0 red Blue = 1 blue Yellow = 2 yellow" }, "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html": { "href": "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html", "title": "Class ContainersRefType.ContainersRefTypeChild | docfx seed website", - "keywords": "Class ContainersRefType.ContainersRefTypeChild Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll public class ContainersRefType.ContainersRefTypeChild Inheritance object ← ContainersRefType.ContainersRefTypeChild Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class ContainersRefType.ContainersRefTypeChild Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll public class ContainersRefType.ContainersRefTypeChild Inheritance object ← ContainersRefType.ContainersRefTypeChild Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html": { "href": "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html", "title": "Interface ContainersRefType.ContainersRefTypeChildInterface | docfx seed website", - "keywords": "Interface ContainersRefType.ContainersRefTypeChildInterface Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll public interface ContainersRefType.ContainersRefTypeChildInterface" + "summary": "Interface ContainersRefType.ContainersRefTypeChildInterface Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll public interface ContainersRefType.ContainersRefTypeChildInterface" }, "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html": { "href": "md/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html", "title": "Delegate ContainersRefType.ContainersRefTypeDelegate | docfx seed website", - "keywords": "Delegate ContainersRefType.ContainersRefTypeDelegate Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll Delegate ContainersRefTypeDelegate public delegate void ContainersRefType.ContainersRefTypeDelegate()" + "summary": "Delegate ContainersRefType.ContainersRefTypeDelegate Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll Delegate ContainersRefTypeDelegate public delegate void ContainersRefType.ContainersRefTypeDelegate()" }, "md/CatLibrary.Core.ContainersRefType.html": { "href": "md/CatLibrary.Core.ContainersRefType.html", "title": "Struct ContainersRefType | docfx seed website", - "keywords": "Struct ContainersRefType Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll Struct ContainersRefType public struct ContainersRefType Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString() Extension Methods Issue231.Bar(ContainersRefType), Issue231.Foo(ContainersRefType) Fields ColorCount ColorCount public long ColorCount Field Value long Properties GetColorCount GetColorCount public long GetColorCount { get; } Property Value long Methods ContainersRefTypeNonRefMethod(params object[]) ContainersRefTypeNonRefMethod array public static int ContainersRefTypeNonRefMethod(params object[] parmsArray) Parameters parmsArray object[] Returns int ContainersRefTypeEventHandler public event EventHandler ContainersRefTypeEventHandler Event Type EventHandler" + "summary": "Struct ContainersRefType Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll Struct ContainersRefType public struct ContainersRefType Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.ReferenceEquals(object?, object?), object.ToString() Extension Methods Issue231.Bar(ContainersRefType), Issue231.Foo(ContainersRefType) Fields ColorCount ColorCount public long ColorCount Field Value long Properties GetColorCount GetColorCount public long GetColorCount { get; } Property Value long Methods ContainersRefTypeNonRefMethod(params object[]) ContainersRefTypeNonRefMethod array public static int ContainersRefTypeNonRefMethod(params object[] parmsArray) Parameters parmsArray object[] Returns int ContainersRefTypeEventHandler public event EventHandler ContainersRefTypeEventHandler Event Type EventHandler" }, "md/CatLibrary.Core.ExplicitLayoutClass.html": { "href": "md/CatLibrary.Core.ExplicitLayoutClass.html", "title": "Class ExplicitLayoutClass | docfx seed website", - "keywords": "Class ExplicitLayoutClass Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll public class ExplicitLayoutClass Inheritance object ← ExplicitLayoutClass Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" + "summary": "Class ExplicitLayoutClass Namespace: CatLibrary.Core Assembly: CatLibrary.Core.dll public class ExplicitLayoutClass Inheritance object ← ExplicitLayoutClass Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()" }, "md/CatLibrary.Core.Issue231.html": { "href": "md/CatLibrary.Core.Issue231.html", "title": "Class Issue231 | docfx seed website", - "keywords": "Class Issue231 Namespace: CatLibrary.Core Assembly: CatLibrary.dll, CatLibrary.Core.dll public static class Issue231 Inheritance object ← Issue231 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Bar(ContainersRefType) public static void Bar(this ContainersRefType c) Parameters c ContainersRefType Foo(ContainersRefType) public static void Foo(this ContainersRefType c) Parameters c ContainersRefType" + "summary": "Class Issue231 Namespace: CatLibrary.Core Assembly: CatLibrary.dll, CatLibrary.Core.dll public static class Issue231 Inheritance object ← Issue231 Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Bar(ContainersRefType) public static void Bar(this ContainersRefType c) Parameters c ContainersRefType Foo(ContainersRefType) public static void Foo(this ContainersRefType c) Parameters c ContainersRefType" }, "md/CatLibrary.Core.html": { "href": "md/CatLibrary.Core.html", "title": "Namespace CatLibrary.Core | docfx seed website", - "keywords": "Namespace CatLibrary.Core Classes ContainersRefType.ContainersRefTypeChild ExplicitLayoutClass Issue231 Issue231 Structs ContainersRefType Struct ContainersRefType Interfaces ContainersRefType.ContainersRefTypeChildInterface Enums ContainersRefType.ColorType Enumeration ColorType Delegates ContainersRefType.ContainersRefTypeDelegate Delegate ContainersRefTypeDelegate" + "summary": "Namespace CatLibrary.Core Classes ContainersRefType.ContainersRefTypeChild ExplicitLayoutClass Issue231 Issue231 Structs ContainersRefType Struct ContainersRefType Interfaces ContainersRefType.ContainersRefTypeChildInterface Enums ContainersRefType.ColorType Enumeration ColorType Delegates ContainersRefType.ContainersRefTypeDelegate Delegate ContainersRefTypeDelegate" }, "md/CatLibrary.FakeDelegate-1.html": { "href": "md/CatLibrary.FakeDelegate-1.html", "title": "Delegate FakeDelegate | docfx seed website", - "keywords": "Delegate FakeDelegate Namespace: CatLibrary Assembly: CatLibrary.dll Fake delegate public delegate int FakeDelegate(long num, string name, params object[] scores) Parameters num long Fake para name string Fake para scores object[] Optional Parameter. Returns int Return a fake number to confuse you. Type Parameters T Fake para" + "summary": "Delegate FakeDelegate Namespace: CatLibrary Assembly: CatLibrary.dll Fake delegate public delegate int FakeDelegate(long num, string name, params object[] scores) Parameters num long Fake para name string Fake para scores object[] Optional Parameter. Returns int Return a fake number to confuse you. Type Parameters T Fake para" }, "md/CatLibrary.IAnimal.html": { "href": "md/CatLibrary.IAnimal.html", "title": "Interface IAnimal | docfx seed website", - "keywords": "Interface IAnimal Namespace: CatLibrary Assembly: CatLibrary.dll This is basic interface of all animal. public interface IAnimal Properties Name Name of Animal. string Name { get; } Property Value string this[int] Return specific number animal's name. string this[int index] { get; } Property Value string Methods Eat() Animal's eat method. void Eat() Eat(Tool) Overload method of eat. This define the animal eat by which tool. void Eat(Tool tool) where Tool : class Parameters tool Tool Tool name. Type Parameters Tool It's a class type. Eat(string) Feed the animal with some food void Eat(string food) Parameters food string Food to eat" + "summary": "Interface IAnimal Namespace: CatLibrary Assembly: CatLibrary.dll This is basic interface of all animal. public interface IAnimal Properties Name Name of Animal. string Name { get; } Property Value string this[int] Return specific number animal's name. string this[int index] { get; } Property Value string Methods Eat() Animal's eat method. void Eat() Eat(Tool) Overload method of eat. This define the animal eat by which tool. void Eat(Tool tool) where Tool : class Parameters tool Tool Tool name. Type Parameters Tool It's a class type. Eat(string) Feed the animal with some food void Eat(string food) Parameters food string Food to eat" }, "md/CatLibrary.ICat.html": { "href": "md/CatLibrary.ICat.html", "title": "Interface ICat | docfx seed website", - "keywords": "Interface ICat Namespace: CatLibrary Assembly: CatLibrary.dll Cat's interface public interface ICat : IAnimal Implements IAnimal Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long) eat eat event of cat. Every cat must implement this event. event EventHandler eat Event Type EventHandler" + "summary": "Interface ICat Namespace: CatLibrary Assembly: CatLibrary.dll Cat's interface public interface ICat : IAnimal Implements IAnimal Extension Methods ICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long) eat eat event of cat. Every cat must implement this event. event EventHandler eat Event Type EventHandler" }, "md/CatLibrary.ICatExtension.html": { "href": "md/CatLibrary.ICatExtension.html", "title": "Class ICatExtension | docfx seed website", - "keywords": "Class ICatExtension Namespace: CatLibrary Assembly: CatLibrary.dll It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class public static class ICatExtension Inheritance object ← ICatExtension Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Play(ICat, ColorType) Extension method to let cat play public static void Play(this ICat icat, ContainersRefType.ColorType toy) Parameters icat ICat Cat toy ContainersRefType.ColorType Something to play Sleep(ICat, long) Extension method hint that how long the cat can sleep. public static void Sleep(this ICat icat, long hours) Parameters icat ICat The type will be extended. hours long The length of sleep." + "summary": "Class ICatExtension Namespace: CatLibrary Assembly: CatLibrary.dll It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class public static class ICatExtension Inheritance object ← ICatExtension Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods Play(ICat, ColorType) Extension method to let cat play public static void Play(this ICat icat, ContainersRefType.ColorType toy) Parameters icat ICat Cat toy ContainersRefType.ColorType Something to play Sleep(ICat, long) Extension method hint that how long the cat can sleep. public static void Sleep(this ICat icat, long hours) Parameters icat ICat The type will be extended. hours long The length of sleep." }, "md/CatLibrary.MRefDelegate-3.html": { "href": "md/CatLibrary.MRefDelegate-3.html", "title": "Delegate MRefDelegate | docfx seed website", - "keywords": "Delegate MRefDelegate Namespace: CatLibrary Assembly: CatLibrary.dll Generic delegate with many constrains. public delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable Parameters k K Type K. t T Type T. l L Type L. Type Parameters K Generic K. T Generic T. L Generic L." + "summary": "Delegate MRefDelegate Namespace: CatLibrary Assembly: CatLibrary.dll Generic delegate with many constrains. public delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable Parameters k K Type K. t T Type T. l L Type L. Type Parameters K Generic K. T Generic T. L Generic L." }, "md/CatLibrary.MRefNormalDelegate.html": { "href": "md/CatLibrary.MRefNormalDelegate.html", "title": "Delegate MRefNormalDelegate | docfx seed website", - "keywords": "Delegate MRefNormalDelegate Namespace: CatLibrary Assembly: CatLibrary.dll Delegate in the namespace public delegate void MRefNormalDelegate(List pics, out string name) Parameters pics List a name list of pictures. name string give out the needed name." + "summary": "Delegate MRefNormalDelegate Namespace: CatLibrary Assembly: CatLibrary.dll Delegate in the namespace public delegate void MRefNormalDelegate(List pics, out string name) Parameters pics List a name list of pictures. name string give out the needed name." }, "md/CatLibrary.Tom.html": { "href": "md/CatLibrary.Tom.html", "title": "Class Tom | docfx seed website", - "keywords": "Class Tom Namespace: CatLibrary Assembly: CatLibrary.dll Tom class is only inherit from Object. Not any member inside itself. public class Tom Inheritance object ← Tom Derived TomFromBaseClass Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods TomMethod(Complex, Tuple) This is a Tom Method with complex type as return public Complex TomMethod(Complex a, Tuple b) Parameters a Complex A complex input b Tuple Another complex input Returns Complex Complex TomFromBaseClass Exceptions NotImplementedException This is not implemented ArgumentException This is the exception to be thrown when implemented CatException This is the exception in current documentation" + "summary": "Class Tom Namespace: CatLibrary Assembly: CatLibrary.dll Tom class is only inherit from Object. Not any member inside itself. public class Tom Inheritance object ← Tom Derived TomFromBaseClass Inherited Members object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Methods TomMethod(Complex, Tuple) This is a Tom Method with complex type as return public Complex TomMethod(Complex a, Tuple b) Parameters a Complex A complex input b Tuple Another complex input Returns Complex Complex TomFromBaseClass Exceptions NotImplementedException This is not implemented ArgumentException This is the exception to be thrown when implemented CatException This is the exception in current documentation" }, "md/CatLibrary.TomFromBaseClass.html": { "href": "md/CatLibrary.TomFromBaseClass.html", "title": "Class TomFromBaseClass | docfx seed website", - "keywords": "Class TomFromBaseClass Namespace: CatLibrary Assembly: CatLibrary.dll TomFromBaseClass inherits from @ public class TomFromBaseClass : Tom Inheritance object ← Tom ← TomFromBaseClass Inherited Members Tom.TomMethod(Complex, Tuple), object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors TomFromBaseClass(int) This is a #ctor with parameter public TomFromBaseClass(int k) Parameters k int" + "summary": "Class TomFromBaseClass Namespace: CatLibrary Assembly: CatLibrary.dll TomFromBaseClass inherits from @ public class TomFromBaseClass : Tom Inheritance object ← Tom ← TomFromBaseClass Inherited Members Tom.TomMethod(Complex, Tuple), object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString() Constructors TomFromBaseClass(int) This is a #ctor with parameter public TomFromBaseClass(int k) Parameters k int" }, "md/CatLibrary.html": { "href": "md/CatLibrary.html", "title": "Namespace CatLibrary | docfx seed website", - "keywords": "Namespace CatLibrary Namespaces CatLibrary.Core Classes Cat Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class CatException Complex ICatExtension It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class Tom Tom class is only inherit from Object. Not any member inside itself. TomFromBaseClass TomFromBaseClass inherits from @ Interfaces IAnimal This is basic interface of all animal. ICat Cat's interface Delegates FakeDelegate Fake delegate MRefDelegate Generic delegate with many constrains. MRefNormalDelegate Delegate in the namespace" + "summary": "Namespace CatLibrary Namespaces CatLibrary.Core Classes Cat Here's main class of this Demo. You can see mostly type of article within this class and you for more detail, please see the remarks. this class is a template class. It has two Generic parameter. they are: T and K. The extension method of this class can refer to ICatExtension class CatException Complex ICatExtension It's the class that contains ICat interface's extension method. This class must be public and static. Also it shouldn't be a geneic class Tom Tom class is only inherit from Object. Not any member inside itself. TomFromBaseClass TomFromBaseClass inherits from @ Interfaces IAnimal This is basic interface of all animal. ICat Cat's interface Delegates FakeDelegate Fake delegate MRefDelegate Generic delegate with many constrains. MRefNormalDelegate Delegate in the namespace" }, "md/MRef.Demo.Enumeration.ColorType.html": { "href": "md/MRef.Demo.Enumeration.ColorType.html", "title": "Enum ColorType | docfx seed website", - "keywords": "Enum ColorType Namespace: MRef.Demo.Enumeration Assembly: CatLibrary.dll Enumeration ColorType public enum ColorType Fields Red = 0 this color is red Blue = 1 blue like river Yellow = 2 yellow comes from desert Remarks Red/Blue/Yellow can become all color you want. See Also object" + "summary": "Enum ColorType Namespace: MRef.Demo.Enumeration Assembly: CatLibrary.dll Enumeration ColorType public enum ColorType Fields Red = 0 this color is red Blue = 1 blue like river Yellow = 2 yellow comes from desert Remarks Red/Blue/Yellow can become all color you want. See Also object" }, "md/MRef.Demo.Enumeration.html": { "href": "md/MRef.Demo.Enumeration.html", "title": "Namespace MRef.Demo.Enumeration | docfx seed website", - "keywords": "Namespace MRef.Demo.Enumeration Enums ColorType Enumeration ColorType" + "summary": "Namespace MRef.Demo.Enumeration Enums ColorType Enumeration ColorType" }, "md/MRef.Demo.html": { "href": "md/MRef.Demo.html", "title": "Namespace MRef.Demo | docfx seed website", - "keywords": "Namespace MRef.Demo Namespaces MRef.Demo.Enumeration" + "summary": "Namespace MRef.Demo Namespaces MRef.Demo.Enumeration" }, "md/MRef.html": { "href": "md/MRef.html", "title": "Namespace MRef | docfx seed website", - "keywords": "Namespace MRef Namespaces MRef.Demo" + "summary": "Namespace MRef Namespaces MRef.Demo" }, "pdf/cover.html": { "href": "pdf/cover.html", "title": "DOCFX PDF SAMPLE | docfx seed website", - "keywords": "@media print { @page { margin: 0 !important; } body { -webkit-print-color-adjust: exact; -moz-print-color-adjust: exact; -ms-print-color-adjust: exact; print-color-adjust: exact; } } DOCFX PDF SAMPLE" + "summary": "@media print { @page { margin: 0 !important; } body { -webkit-print-color-adjust: exact; -moz-print-color-adjust: exact; -ms-print-color-adjust: exact; print-color-adjust: exact; } } DOCFX PDF SAMPLE" }, "restapi/contacts.html": { "href": "restapi/contacts.html", "title": "Contacts | docfx seed website", - "keywords": "Contacts | Improve this Doc View Source get contacts You can get a collection of contacts from your tenant. Required scope: Contacts.Read or Contacts.Write Request GET /contacts?api-version Parameters Name Type Default Notes *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. The results are returned in the response body. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/Microsoft.DirectoryServices.Contact\", \"value\": [ { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Marcus Breyer\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Marcus\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Marcus@contoso.com\", \"mailNickname\": \"MarcusBreyer\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Marcus@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Breyer\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"35110b16-360c-4c4a-93b2-03f065fabd93\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Yossi Ran\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Yossi\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Yossi@contoso.com\", \"mailNickname\": \"YossiRan\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Yossi@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Ran\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"7163f3b8-70c9-43d2-b9e1-4467ddaf087a\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Jeremy Nelson\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Jeremy\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Jeremy@contoso.com\", \"mailNickname\": \"JeremyNelson\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Jeremy@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Nelson\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"83234b5c-3a10-4108-8f36-39b1addadfdb\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"David Strome\", \"facsimileTelephoneNumber\": null, \"givenName\": \"David\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"David@contoso.com\", \"mailNickname\": \"DavidStrome\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:David@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Strome\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"8c1315ce-bf6f-4e26-b24f-c830606ef41c\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Holly Holt\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Holly\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Holly@contoso.com\", \"mailNickname\": \"HollyHolt\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Holly@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Holt\", \"telephoneNumber\": null } ] } | Improve this Doc View Source get contact by id Get a contact by using the object ID. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 Specifies the version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. The contact is returned in the response body. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/graphdir1.onmicrosoft.com/$metadata#directoryObjects/Microsoft.DirectoryServices.Contact/@Element\", \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Marcus Breyer\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Marcus\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Marcus@contoso.com\", \"mailNickname\": \"MarcusBreyer\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Marcus@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Breyer\", \"telephoneNumber\": null } | Improve this Doc View Source update contact Change a contact's properties. Required scope: Contacts.Write Request PATCH /contacts/{object_id}?api-version Parameters Name Type Default Notes *object_id 7163f3b8-70c9-43d2-b9e1-4467ddaf087a The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. bodyparam contact this is request body, not real parameter Responses Status Code Type Description Samples 204 No Content. Indicates success. No response body is returned. | Improve this Doc View Source delete contact Delete a contact. Required scope: Contacts.Write Request DELETE /contacts/{object_id}[?api-version] Parameters Name Type Default Notes *object_id 7163f3b8-70c9-43d2-b9e1-4467ddaf087a The object ID (GUID) of the target contact. api-version 1.6 Specifies the version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 204 No Content. Indicates success. | Improve this Doc View Source get contact manager link Get a link to the contact's manager. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}/$links/manager?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. A link to the contact's manager is returned. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/$links/manager\", \"url\": \"https://graph.windows.net/myorganization/directoryObjects/35110b16-360c-4c4a-93b2-03f065fabd93/Microsoft.WindowsAzure.ActiveDirectory.Contact\" } 404 Not Found. The requested resource was not found. This can occur if the manager property is not currently set for the specified contact. It can also have other causes, for example, a bad domain. A code and associated message is returned with the error. Mime type: application/json { \"odata.error\": { \"code\": \"Request_ResourceNotFound\", \"message\": { \"lang\": \"en\", \"value\": \"Resource not found for the segment 'manager'.\" } } } | Improve this Doc View Source update contact manager Update the contact's manager Required scope: Contacts.Write Request PUT /contacts/{object_id}/$links/manager?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. *bodyparam The request body contains a single property that specifies the URL of the user or contact to add as manager. Responses Status Code Type Description Samples 204 No Content. Indicates success. No response body is returned. | Improve this Doc View Source delete contact manager by id Delete the contact's manager. Required scope: Contacts.Write Request DELETE /contacts/{object_id}/$links/manager?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 204 No Content. Indicates success. N response body is returned. | Improve this Doc View Source get contact direct reports links Get a links to the contact's direct reports. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}/$links/directReports?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. One or more direct reports are returned. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/$links/directReports\", \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/directoryObjects/8c1315ce-bf6f-4e26-b24f-c830606ef41c/Microsoft.DirectoryServices.Contact\" } ] } | Improve this Doc View Source get contact memberOf links Get a links to the contact's direct group and directory role memberships. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}/$links/memberOf?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. One or more groups and/or directory roles are returned. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/$links/memberOf\", \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/directoryObjects/12345678-b942-47c9-a10e-a4bee353ce60/Microsoft.DirectoryServices.Group\" } ] } Definitions contact Name Type Notes objectType string objectId string deletionTimestamp string (date-time) city string country string department string dirSyncEnabled boolean displayName string facsimileTelephoneNumber string givenName string jobTitle string lastDirSyncTime string (date-time) mail string mailNickname string mobile string physicalDeliveryOfficeName string postalCode string provisioningErrors ProvisioningError[] proxyAddresses array sipProxyAddress string state string streetAddress string surname string telephoneNumber string thumbnailPhoto string ProvisioningError Name Type Notes errorDetail string resolved boolean serviceInstance string timestamp string (date-time)" + "summary": "Contacts | Improve this Doc View Source get contacts You can get a collection of contacts from your tenant. Required scope: Contacts.Read or Contacts.Write Request GET /contacts?api-version Parameters Name Type Default Notes *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. The results are returned in the response body. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/Microsoft.DirectoryServices.Contact\", \"value\": [ { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Marcus Breyer\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Marcus\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Marcus@contoso.com\", \"mailNickname\": \"MarcusBreyer\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Marcus@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Breyer\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"35110b16-360c-4c4a-93b2-03f065fabd93\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Yossi Ran\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Yossi\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Yossi@contoso.com\", \"mailNickname\": \"YossiRan\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Yossi@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Ran\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"7163f3b8-70c9-43d2-b9e1-4467ddaf087a\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Jeremy Nelson\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Jeremy\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Jeremy@contoso.com\", \"mailNickname\": \"JeremyNelson\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Jeremy@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Nelson\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"83234b5c-3a10-4108-8f36-39b1addadfdb\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"David Strome\", \"facsimileTelephoneNumber\": null, \"givenName\": \"David\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"David@contoso.com\", \"mailNickname\": \"DavidStrome\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:David@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Strome\", \"telephoneNumber\": null }, { \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"8c1315ce-bf6f-4e26-b24f-c830606ef41c\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Holly Holt\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Holly\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Holly@contoso.com\", \"mailNickname\": \"HollyHolt\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Holly@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Holt\", \"telephoneNumber\": null } ] } | Improve this Doc View Source get contact by id Get a contact by using the object ID. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 Specifies the version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. The contact is returned in the response body. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/graphdir1.onmicrosoft.com/$metadata#directoryObjects/Microsoft.DirectoryServices.Contact/@Element\", \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null, \"country\": null, \"department\": null, \"dirSyncEnabled\": null, \"displayName\": \"Marcus Breyer\", \"facsimileTelephoneNumber\": null, \"givenName\": \"Marcus\", \"jobTitle\": null, \"lastDirSyncTime\": null, \"mail\": \"Marcus@contoso.com\", \"mailNickname\": \"MarcusBreyer\", \"mobile\": null, \"physicalDeliveryOfficeName\": null, \"postalCode\": null, \"provisioningErrors\": [], \"proxyAddresses\": [ \"SMTP:Marcus@contoso.com\" ], \"sipProxyAddress\": null, \"state\": null, \"streetAddress\": null, \"surname\": \"Breyer\", \"telephoneNumber\": null } | Improve this Doc View Source update contact Change a contact's properties. Required scope: Contacts.Write Request PATCH /contacts/{object_id}?api-version Parameters Name Type Default Notes *object_id 7163f3b8-70c9-43d2-b9e1-4467ddaf087a The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. bodyparam contact this is request body, not real parameter Responses Status Code Type Description Samples 204 No Content. Indicates success. No response body is returned. | Improve this Doc View Source delete contact Delete a contact. Required scope: Contacts.Write Request DELETE /contacts/{object_id}[?api-version] Parameters Name Type Default Notes *object_id 7163f3b8-70c9-43d2-b9e1-4467ddaf087a The object ID (GUID) of the target contact. api-version 1.6 Specifies the version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 204 No Content. Indicates success. | Improve this Doc View Source get contact manager link Get a link to the contact's manager. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}/$links/manager?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. A link to the contact's manager is returned. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/$links/manager\", \"url\": \"https://graph.windows.net/myorganization/directoryObjects/35110b16-360c-4c4a-93b2-03f065fabd93/Microsoft.WindowsAzure.ActiveDirectory.Contact\" } 404 Not Found. The requested resource was not found. This can occur if the manager property is not currently set for the specified contact. It can also have other causes, for example, a bad domain. A code and associated message is returned with the error. Mime type: application/json { \"odata.error\": { \"code\": \"Request_ResourceNotFound\", \"message\": { \"lang\": \"en\", \"value\": \"Resource not found for the segment 'manager'.\" } } } | Improve this Doc View Source update contact manager Update the contact's manager Required scope: Contacts.Write Request PUT /contacts/{object_id}/$links/manager?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. *bodyparam The request body contains a single property that specifies the URL of the user or contact to add as manager. Responses Status Code Type Description Samples 204 No Content. Indicates success. No response body is returned. | Improve this Doc View Source delete contact manager by id Delete the contact's manager. Required scope: Contacts.Write Request DELETE /contacts/{object_id}/$links/manager?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 204 No Content. Indicates success. N response body is returned. | Improve this Doc View Source get contact direct reports links Get a links to the contact's direct reports. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}/$links/directReports?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. One or more direct reports are returned. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/$links/directReports\", \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/directoryObjects/8c1315ce-bf6f-4e26-b24f-c830606ef41c/Microsoft.DirectoryServices.Contact\" } ] } | Improve this Doc View Source get contact memberOf links Get a links to the contact's direct group and directory role memberships. Required scope: Contacts.Read or Contacts.Write Request GET /contacts/{object_id}/$links/memberOf?api-version Parameters Name Type Default Notes *object_id 31944231-fd52-4a7f-b32e-7902a01fddf9 The object ID (GUID) of the target contact. *api-version 1.6 The version of the Graph API to target. Beginning with version 1.5, the api-version string is represented in major.minor format. Prior releases were represented as date strings: '2013-11-08' and '2013-04-05'. Required. Responses Status Code Type Description Samples 200 OK. Indicates success. One or more groups and/or directory roles are returned. Mime type: application/json { \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#directoryObjects/$links/memberOf\", \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/directoryObjects/12345678-b942-47c9-a10e-a4bee353ce60/Microsoft.DirectoryServices.Group\" } ] } Definitions contact Name Type Notes objectType string objectId string deletionTimestamp string (date-time) city string country string department string dirSyncEnabled boolean displayName string facsimileTelephoneNumber string givenName string jobTitle string lastDirSyncTime string (date-time) mail string mailNickname string mobile string physicalDeliveryOfficeName string postalCode string provisioningErrors ProvisioningError[] proxyAddresses array sipProxyAddress string state string streetAddress string surname string telephoneNumber string thumbnailPhoto string ProvisioningError Name Type Notes errorDetail string resolved boolean serviceInstance string timestamp string (date-time)" }, "restapi/petstore.html": { "href": "restapi/petstore.html", "title": "Pet Store APIs | docfx seed website", - "keywords": "Swagger Petstore Describe APIs in Pet Store pet Description for pet tag | Improve this Doc View Source addPet Add a new pet to the store Request POST /pet Parameters Name Type Default Notes *body Pet Pet object that needs to be added to the store Responses Status Code Type Description Samples 405 Invalid input NOTE: Add pet only when you needs. | Improve this Doc View Source updatePet Update an existing pet Request PUT /pet Parameters Name Type Default Notes *body Pet Pet object that needs to be added to the store Responses Status Code Type Description Samples 400 Invalid ID supplied 404 Pet not found 405 Validation exception | Improve this Doc View Source findPetsByStatus Finds Pets by status Multiple status values can be provided with comma separated strings Request GET /pet/findByStatus?status Parameters Name Type Default Notes *status Status values that need to be considered for filter Responses Status Code Type Description Samples 200 Pet[] successful operation 400 Invalid status value | Improve this Doc View Source findPetsByTags Finds Pets by tags Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. Request GET /pet/findByTags?tags Parameters Name Type Default Notes *tags Tags to filter by Responses Status Code Type Description Samples 200 Pet[] successful operation 400 Invalid tag value | Improve this Doc View Source deletePet Deletes a pet Request DELETE /pet/{petId} Parameters Name Type Default Notes api_key *petId Pet id to delete Responses Status Code Type Description Samples 400 Invalid ID supplied 404 Pet not found | Improve this Doc View Source getPetById Find pet by ID Returns a single pet Request GET /pet/{petId} Parameters Name Type Default Notes *petId ID of pet to return Responses Status Code Type Description Samples 200 Pet successful operation 400 Invalid ID supplied 404 Pet not found | Improve this Doc View Source updatePetWithForm Updates a pet in the store with form data Request POST /pet/{petId} Parameters Name Type Default Notes *petId ID of pet that needs to be updated name Updated name of the pet status Updated status of the pet Responses Status Code Type Description Samples 405 Invalid input | Improve this Doc View Source uploadFile uploads an image Request POST /pet/{petId}/uploadImage Parameters Name Type Default Notes *petId ID of pet to update additionalMetadata Additional data to pass to server file file to upload Responses Status Code Type Description Samples 200 ApiResponse successful operation store Access to Petstore orders Additional description for store tag | Improve this Doc View Source addPet Add a new pet to the store Request POST /pet Parameters Name Type Default Notes *body Pet Pet object that needs to be added to the store Responses Status Code Type Description Samples 405 Invalid input NOTE: Add pet only when you needs. | Improve this Doc View Source getInventory Returns pet inventories by status Returns a map of status codes to quantities Request GET /store/inventory Responses Status Code Type Description Samples 200 object successful operation | Improve this Doc View Source placeOrder Place an order for a pet Request POST /store/order Parameters Name Type Default Notes *body Order order placed for purchasing the pet Responses Status Code Type Description Samples 200 Order successful operation 400 Invalid Order | Improve this Doc View Source deleteOrder Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors Request DELETE /store/order/{orderId} Parameters Name Type Default Notes *orderId ID of the order that needs to be deleted Responses Status Code Type Description Samples 400 Invalid ID supplied 404 Order not found | Improve this Doc View Source getOrderById Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions Request GET /store/order/{orderId} Parameters Name Type Default Notes *orderId ID of pet that needs to be fetched Responses Status Code Type Description Samples 200 Order successful operation 400 Invalid ID supplied 404 Order not found user Operations about user | Improve this Doc View Source createUser Create user This can only be done by the logged in user. Request POST /user Parameters Name Type Default Notes *body User Created user object Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source createUsersWithArrayInput Creates list of users with given input array Request POST /user/createWithArray Parameters Name Type Default Notes *body User[] List of user object Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source createUsersWithListInput Creates list of users with given input array Request POST /user/createWithList Parameters Name Type Default Notes *body User[] List of user object Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source loginUser Logs user into the system Request GET /user/login?username&password Parameters Name Type Default Notes *username The user name for login *password The password for login in clear text Responses Status Code Type Description Samples 200 string successful operation 400 Invalid username/password supplied | Improve this Doc View Source logoutUser Logs out current logged in user session Request GET /user/logout Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source deleteUser Delete user This can only be done by the logged in user. Request DELETE /user/{username} Parameters Name Type Default Notes *username The name that needs to be deleted Responses Status Code Type Description Samples 400 Invalid username supplied 404 User not found | Improve this Doc View Source getUserByName Get user by user name Request GET /user/{username} Parameters Name Type Default Notes *username The name that needs to be fetched. Use user1 for testing. Responses Status Code Type Description Samples 200 User successful operation 400 Invalid username supplied 404 User not found Other APIs | Improve this Doc View Source updateUser Updated user This can only be done by the logged in user. Request PUT /user/{username} Parameters Name Type Default Notes *username name that need to be updated *body User Updated user object Responses Status Code Type Description Samples 400 Invalid user supplied 404 User not found Definitions Pet Name Type Notes category Category[] id integer (int64) name string photoUrls array status string pet status in the store tags Tag[] Category Name Type Notes id integer (int64) name string Tag Name Type Notes id integer (int64) name string ApiResponse Name Type Notes code integer (int32) message string type string Order Name Type Notes complete boolean id integer (int64) petId integer (int64) quantity integer (int32) shipDate string (date-time) status string Order Status User Name Type Notes email string firstName string id integer (int64) lastName string password string phone string userStatus integer (int32) User Status username string See Alsos See other REST APIs: Contacts API" + "summary": "Swagger Petstore Describe APIs in Pet Store pet Description for pet tag | Improve this Doc View Source addPet Add a new pet to the store Request POST /pet Parameters Name Type Default Notes *body Pet Pet object that needs to be added to the store Responses Status Code Type Description Samples 405 Invalid input NOTE: Add pet only when you needs. | Improve this Doc View Source updatePet Update an existing pet Request PUT /pet Parameters Name Type Default Notes *body Pet Pet object that needs to be added to the store Responses Status Code Type Description Samples 400 Invalid ID supplied 404 Pet not found 405 Validation exception | Improve this Doc View Source findPetsByStatus Finds Pets by status Multiple status values can be provided with comma separated strings Request GET /pet/findByStatus?status Parameters Name Type Default Notes *status Status values that need to be considered for filter Responses Status Code Type Description Samples 200 Pet[] successful operation 400 Invalid status value | Improve this Doc View Source findPetsByTags Finds Pets by tags Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. Request GET /pet/findByTags?tags Parameters Name Type Default Notes *tags Tags to filter by Responses Status Code Type Description Samples 200 Pet[] successful operation 400 Invalid tag value | Improve this Doc View Source deletePet Deletes a pet Request DELETE /pet/{petId} Parameters Name Type Default Notes api_key *petId Pet id to delete Responses Status Code Type Description Samples 400 Invalid ID supplied 404 Pet not found | Improve this Doc View Source getPetById Find pet by ID Returns a single pet Request GET /pet/{petId} Parameters Name Type Default Notes *petId ID of pet to return Responses Status Code Type Description Samples 200 Pet successful operation 400 Invalid ID supplied 404 Pet not found | Improve this Doc View Source updatePetWithForm Updates a pet in the store with form data Request POST /pet/{petId} Parameters Name Type Default Notes *petId ID of pet that needs to be updated name Updated name of the pet status Updated status of the pet Responses Status Code Type Description Samples 405 Invalid input | Improve this Doc View Source uploadFile uploads an image Request POST /pet/{petId}/uploadImage Parameters Name Type Default Notes *petId ID of pet to update additionalMetadata Additional data to pass to server file file to upload Responses Status Code Type Description Samples 200 ApiResponse successful operation store Access to Petstore orders Additional description for store tag | Improve this Doc View Source addPet Add a new pet to the store Request POST /pet Parameters Name Type Default Notes *body Pet Pet object that needs to be added to the store Responses Status Code Type Description Samples 405 Invalid input NOTE: Add pet only when you needs. | Improve this Doc View Source getInventory Returns pet inventories by status Returns a map of status codes to quantities Request GET /store/inventory Responses Status Code Type Description Samples 200 object successful operation | Improve this Doc View Source placeOrder Place an order for a pet Request POST /store/order Parameters Name Type Default Notes *body Order order placed for purchasing the pet Responses Status Code Type Description Samples 200 Order successful operation 400 Invalid Order | Improve this Doc View Source deleteOrder Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors Request DELETE /store/order/{orderId} Parameters Name Type Default Notes *orderId ID of the order that needs to be deleted Responses Status Code Type Description Samples 400 Invalid ID supplied 404 Order not found | Improve this Doc View Source getOrderById Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions Request GET /store/order/{orderId} Parameters Name Type Default Notes *orderId ID of pet that needs to be fetched Responses Status Code Type Description Samples 200 Order successful operation 400 Invalid ID supplied 404 Order not found user Operations about user | Improve this Doc View Source createUser Create user This can only be done by the logged in user. Request POST /user Parameters Name Type Default Notes *body User Created user object Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source createUsersWithArrayInput Creates list of users with given input array Request POST /user/createWithArray Parameters Name Type Default Notes *body User[] List of user object Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source createUsersWithListInput Creates list of users with given input array Request POST /user/createWithList Parameters Name Type Default Notes *body User[] List of user object Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source loginUser Logs user into the system Request GET /user/login?username&password Parameters Name Type Default Notes *username The user name for login *password The password for login in clear text Responses Status Code Type Description Samples 200 string successful operation 400 Invalid username/password supplied | Improve this Doc View Source logoutUser Logs out current logged in user session Request GET /user/logout Responses Status Code Type Description Samples default successful operation | Improve this Doc View Source deleteUser Delete user This can only be done by the logged in user. Request DELETE /user/{username} Parameters Name Type Default Notes *username The name that needs to be deleted Responses Status Code Type Description Samples 400 Invalid username supplied 404 User not found | Improve this Doc View Source getUserByName Get user by user name Request GET /user/{username} Parameters Name Type Default Notes *username The name that needs to be fetched. Use user1 for testing. Responses Status Code Type Description Samples 200 User successful operation 400 Invalid username supplied 404 User not found Other APIs | Improve this Doc View Source updateUser Updated user This can only be done by the logged in user. Request PUT /user/{username} Parameters Name Type Default Notes *username name that need to be updated *body User Updated user object Responses Status Code Type Description Samples 400 Invalid user supplied 404 User not found Definitions Pet Name Type Notes category Category[] id integer (int64) name string photoUrls array status string pet status in the store tags Tag[] Category Name Type Notes id integer (int64) name string Tag Name Type Notes id integer (int64) name string ApiResponse Name Type Notes code integer (int32) message string type string Order Name Type Notes complete boolean id integer (int64) petId integer (int64) quantity integer (int32) shipDate string (date-time) status string Order Status User Name Type Notes email string firstName string id integer (int64) lastName string password string phone string userStatus integer (int32) User Status username string See Alsos See other REST APIs: Contacts API" } } \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json new file mode 100644 index 00000000000..cdf79226229 --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html.view.verified.json @@ -0,0 +1,42 @@ +{ + "conceptual": "\n

Namespace: BuildFromProject
\nAssembly: BuildFromProject.dll

\n
public interface Inheritdoc.Issue9736.IJsonApiOptions\n
\n

Properties

\n

UseRelativeLinks

\n

Whether to use relative links for all resources. false by default.

\n
bool UseRelativeLinks { get; }\n
\n

Property Value

\n

bool

\n

Examples

\n
options.UseRelativeLinks = true;
\n
{\n  \"type\": \"articles\",\n  \"id\": \"4309\",\n  \"relationships\": {\n     \"author\": {\n       \"links\": {\n         \"self\": \"/api/shopping/articles/4309/relationships/author\",\n         \"related\": \"/api/shopping/articles/4309/author\"\n       }\n     }\n  }\n}
\n", + "type": "Conceptual", + "source": { + "remote": { + "path": "samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "startLine": 0, + "endLine": 0 + }, + "path": "obj/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md", + "documentation": { + "remote": { + "path": "samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "startLine": 0, + "endLine": 0 + }, + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "rawTitle": "

Interface Inheritdoc.Issue9736.IJsonApiOptions

", + "title": " Interface Inheritdoc.Issue9736.IJsonApiOptions", + "wordCount": 51, + "_key": "obj/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "_rel": "../", + "_tocKey": "~/obj/md/toc.yml", + "_tocPath": "md/toc.html", + "_tocRel": "toc.html", + "_disableToc": false, + "docurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md/#L1" +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json new file mode 100644 index 00000000000..9fe6c1db07a --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html.view.verified.json @@ -0,0 +1,42 @@ +{ + "conceptual": "\n

Namespace: BuildFromProject
\nAssembly: BuildFromProject.dll

\n
public sealed class Inheritdoc.Issue9736.JsonApiOptions : Inheritdoc.Issue9736.IJsonApiOptions\n
\n

Inheritance

\n

object ←\nInheritdoc.Issue9736.JsonApiOptions

\n

Implements

\n

Inheritdoc.Issue9736.IJsonApiOptions

\n

Inherited Members

\n

object.Equals(object?),\nobject.Equals(object?, object?),\nobject.GetHashCode(),\nobject.GetType(),\nobject.ReferenceEquals(object?, object?),\nobject.ToString()

\n

Properties

\n

UseRelativeLinks

\n

Whether to use relative links for all resources. false by default.

\n
public bool UseRelativeLinks { get; set; }\n
\n

Property Value

\n

bool

\n

Examples

\n
options.UseRelativeLinks = true;
\n
{\n  \"type\": \"articles\",\n  \"id\": \"4309\",\n  \"relationships\": {\n     \"author\": {\n       \"links\": {\n         \"self\": \"/api/shopping/articles/4309/relationships/author\",\n         \"related\": \"/api/shopping/articles/4309/author\"\n       }\n     }\n  }\n}
\n", + "type": "Conceptual", + "source": { + "remote": { + "path": "samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "startLine": 0, + "endLine": 0 + }, + "path": "obj/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md", + "documentation": { + "remote": { + "path": "samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "startLine": 0, + "endLine": 0 + }, + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "rawTitle": "

Class Inheritdoc.Issue9736.JsonApiOptions

", + "title": " Class Inheritdoc.Issue9736.JsonApiOptions", + "wordCount": 71, + "_key": "obj/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "_rel": "../", + "_tocKey": "~/obj/md/toc.yml", + "_tocPath": "md/toc.html", + "_tocRel": "toc.html", + "_disableToc": false, + "docurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md/#L1" +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json new file mode 100644 index 00000000000..62d1a464f0e --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.Inheritdoc.Issue9736.html.view.verified.json @@ -0,0 +1,42 @@ +{ + "conceptual": "\n

Namespace: BuildFromProject
\nAssembly: BuildFromProject.dll

\n
public class Inheritdoc.Issue9736\n
\n

Inheritance

\n

object ←\nInheritdoc.Issue9736

\n

Inherited Members

\n

object.Equals(object?),\nobject.Equals(object?, object?),\nobject.GetHashCode(),\nobject.GetType(),\nobject.MemberwiseClone(),\nobject.ReferenceEquals(object?, object?),\nobject.ToString()

\n", + "type": "Conceptual", + "source": { + "remote": { + "path": "samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.md", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "startLine": 0, + "endLine": 0 + }, + "path": "obj/md/BuildFromProject.Inheritdoc.Issue9736.md", + "documentation": { + "remote": { + "path": "samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.md", + "branch": "main", + "repo": "https://github.com/dotnet/docfx" + }, + "startLine": 0, + "endLine": 0 + }, + "_appName": "Seed", + "_appTitle": "docfx seed website", + "_enableSearch": true, + "pdf": true, + "pdfTocPage": true, + "rawTitle": "

Class Inheritdoc.Issue9736

", + "title": " Class Inheritdoc.Issue9736", + "wordCount": 22, + "_key": "obj/md/BuildFromProject.Inheritdoc.Issue9736.md", + "_navKey": "~/toc.yml", + "_navPath": "toc.html", + "_navRel": "../toc.html", + "_path": "md/BuildFromProject.Inheritdoc.Issue9736.html", + "_rel": "../", + "_tocKey": "~/obj/md/toc.yml", + "_tocPath": "md/toc.html", + "_tocRel": "toc.html", + "_disableToc": false, + "docurl": "https://github.com/dotnet/docfx/blob/main/samples/seed/obj/md/BuildFromProject.Inheritdoc.Issue9736.md/#L1" +} \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.html.view.verified.json index 9646d1fdc65..feadbf92625 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/BuildFromProject.html.view.verified.json @@ -1,5 +1,5 @@ { - "conceptual": "\n

Namespaces

\n

BuildFromProject.Issue8540

\n

Classes

\n

Inheritdoc.Issue6366.Class1<T>

\n

Class1

\n

Inheritdoc.Issue6366.Class2

\n

Dog

\n

Class representing a dog.

\n

Inheritdoc

\n

Inheritdoc.Issue6366

\n

Inheritdoc.Issue7035

\n

Inheritdoc.Issue7484

\n

This is a test class to have something for DocFX to document.

\n

Inheritdoc.Issue8101

\n

Class1.Issue8665

\n

Class1.Issue8696Attribute

\n

Issue8725

\n

A nice class

\n

Class1.Issue8948

\n

Class1.Test<T>

\n

Structs

\n

Inheritdoc.Issue8129

\n

Interfaces

\n

IInheritdoc

\n

Class1.IIssue8948

\n

Enums

\n

Class1.Issue9260

\n", + "conceptual": "\n

Namespaces

\n

BuildFromProject.Issue8540

\n

Classes

\n

Inheritdoc.Issue6366.Class1<T>

\n

Class1

\n

Inheritdoc.Issue6366.Class2

\n

Dog

\n

Class representing a dog.

\n

Inheritdoc

\n

Inheritdoc.Issue6366

\n

Inheritdoc.Issue7035

\n

Inheritdoc.Issue7484

\n

This is a test class to have something for DocFX to document.

\n

Inheritdoc.Issue8101

\n

Class1.Issue8665

\n

Class1.Issue8696Attribute

\n

Issue8725

\n

A nice class

\n

Class1.Issue8948

\n

Inheritdoc.Issue9736

\n

Inheritdoc.Issue9736.JsonApiOptions

\n

Class1.Test<T>

\n

Structs

\n

Inheritdoc.Issue8129

\n

Interfaces

\n

IInheritdoc

\n

Class1.IIssue8948

\n

Inheritdoc.Issue9736.IJsonApiOptions

\n

Enums

\n

Class1.Issue9260

\n", "type": "Conceptual", "source": { "remote": { @@ -27,7 +27,7 @@ "pdfTocPage": true, "rawTitle": "

Namespace BuildFromProject

", "title": " Namespace BuildFromProject", - "wordCount": 43, + "wordCount": 46, "_key": "obj/md/BuildFromProject.md", "_navKey": "~/toc.yml", "_navPath": "toc.html", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.Cat-2.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.Cat-2.html.view.verified.json index f38b9648951..fc358188bf6 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.Cat-2.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.Cat-2.html.view.verified.json @@ -1,5 +1,5 @@ { - "conceptual": "\n

Namespace: CatLibrary
\nAssembly: CatLibrary.dll

\n

Here's main class of this Demo.

\n

You can see mostly type of article within this class and you for more detail, please see the remarks.

\n

\n

this class is a template class. It has two Generic parameter. they are: T and K.

\n

The extension method of this class can refer to class

\n
[Serializable]\n[Obsolete]\npublic class Cat<T, K> : ICat, IAnimal where T : class, new() where K : struct\n
\n

Type Parameters

\n

T

\n

This type should be class and can new instance.

\n

K

\n

This type is a struct type, class type can't be used for this parameter.

\n

Inheritance

\n

object ←\nCat<T, K>

\n

Implements

\n

ICat,\nIAnimal

\n

Inherited Members

\n

object.Equals(object?),\nobject.Equals(object?, object?),\nobject.GetHashCode(),\nobject.GetType(),\nobject.MemberwiseClone(),\nobject.ReferenceEquals(object?, object?),\nobject.ToString()

\n

Extension Methods

\n

ICatExtension.Play(ICat, ContainersRefType.ColorType),\nICatExtension.Sleep(ICat, long)

\n

Examples

\n

Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct.

\n
var a = new Cat(object, int)();\nint catNumber = new int();\nunsafe\n{\n    a.GetFeetLength(catNumber);\n}
\n

As you see, here we bring in pointer so we need to add unsafe keyword.

\n

Remarks

\n

Here's all the content you can see in this class.

\n

Constructors

\n

Cat()

\n

Default constructor.

\n
public Cat()\n
\n

Cat(T)

\n

Constructor with one generic parameter.

\n
public Cat(T ownType)\n
\n

Parameters

\n

ownType T

\n

This parameter type defined by class.

\n

Cat(string, out int, string, bool)

\n

It's a complex constructor. The parameter will have some attributes.

\n
public Cat(string nickName, out int age, string realName, bool isHealthy)\n
\n

Parameters

\n

nickName string

\n

it's string type.

\n

age int

\n

It's an out and ref parameter.

\n

realName string

\n

It's an out paramter.

\n

isHealthy bool

\n

It's an in parameter.

\n

Fields

\n

isHealthy

\n

Field with attribute.

\n
[ContextStatic]\n[NonSerialized]\n[Obsolete]\npublic bool isHealthy\n
\n

Field Value

\n

bool

\n

Properties

\n

Age

\n

Hint cat's age.

\n
[Obsolete]\nprotected int Age { get; set; }\n
\n

Property Value

\n

int

\n

Name

\n

EII property.

\n
public string Name { get; }\n
\n

Property Value

\n

string

\n

this[string]

\n

This is index property of Cat. You can see that the visibility is different between get and set method.

\n
public int this[string a] { protected get; set; }\n
\n

Property Value

\n

int

\n

Methods

\n

CalculateFood(DateTime)

\n

It's a method with complex return type.

\n
public Dictionary<string, List<int>> CalculateFood(DateTime date)\n
\n

Parameters

\n

date DateTime

\n

Date time to now.

\n

Returns

\n

Dictionary<string, List<int>>

\n

It's a relationship map of different kind food.

\n

Equals(object)

\n

Override the method of Object.Equals(object obj).

\n
public override bool Equals(object obj)\n
\n

Parameters

\n

obj object

\n

Can pass any class type.

\n

Returns

\n

bool

\n

The return value tell you whehter the compare operation is successful.

\n

GetTailLength(int*, params object[])

\n

It's an unsafe method.\nAs you see, catName is a pointer, so we need to add unsafe keyword.

\n
public long GetTailLength(int* catName, params object[] parameters)\n
\n

Parameters

\n

catName int*

\n

Thie represent for cat name length.

\n

parameters object[]

\n

Optional parameters.

\n

Returns

\n

long

\n

Return cat tail's length.

\n

Jump(T, K, ref bool)

\n

This method have attribute above it.

\n
[Conditional("Debug")]\npublic void Jump(T ownType, K anotherOwnType, ref bool cheat)\n
\n

Parameters

\n

ownType T

\n

Type come from class define.

\n

anotherOwnType K

\n

Type come from class define.

\n

cheat bool

\n

Hint whether this cat has cheat mode.

\n

Exceptions

\n

ArgumentException

\n

This is an argument exception

\n

ownEat

\n

Eat event of this cat

\n
[Obsolete("This _event handler_ is deprecated.")]\npublic event EventHandler ownEat\n
\n

Event Type

\n

EventHandler

\n

Operators

\n

operator +(Cat<T, K>, int)

\n

Addition operator of this class.

\n
public static int operator +(Cat<T, K> lsr, int rsr)\n
\n

Parameters

\n

lsr Cat<T, K>

\n

..

\n

rsr int

\n

~~

\n

Returns

\n

int

\n

Result with int type.

\n

explicit operator Tom(Cat<T, K>)

\n

Expilicit operator of this class.

\n

It means this cat can evolve to change to Tom. Tom and Jerry.

\n
public static explicit operator Tom(Cat<T, K> src)\n
\n

Parameters

\n

src Cat<T, K>

\n

Instance of this class.

\n

Returns

\n

Tom

\n

Advanced class type of cat.

\n

operator -(Cat<T, K>, int)

\n

Similar with operaotr +, refer to that topic.

\n
public static int operator -(Cat<T, K> lsr, int rsr)\n
\n

Parameters

\n

lsr Cat<T, K>

\n

rsr int

\n

Returns

\n

int

\n", + "conceptual": "\n

Namespace: CatLibrary
\nAssembly: CatLibrary.dll

\n

Here's main class of this Demo.

\n

You can see mostly type of article within this class and you for more detail, please see the remarks.

\n

\n

this class is a template class. It has two Generic parameter. they are: T and K.

\n

The extension method of this class can refer to class

\n
[Serializable]\n[Obsolete]\npublic class Cat<T, K> : ICat, IAnimal where T : class, new() where K : struct\n
\n

Type Parameters

\n

T

\n

This type should be class and can new instance.

\n

K

\n

This type is a struct type, class type can't be used for this parameter.

\n

Inheritance

\n

object ←\nCat<T, K>

\n

Implements

\n

ICat,\nIAnimal

\n

Inherited Members

\n

object.Equals(object?),\nobject.Equals(object?, object?),\nobject.GetHashCode(),\nobject.GetType(),\nobject.MemberwiseClone(),\nobject.ReferenceEquals(object?, object?),\nobject.ToString()

\n

Extension Methods

\n

ICatExtension.Play(ICat, ContainersRefType.ColorType),\nICatExtension.Sleep(ICat, long)

\n

Examples

\n

Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct.

\n
var a = new Cat(object, int)();\nint catNumber = new int();\nunsafe\n{\n    a.GetFeetLength(catNumber);\n}
\n

As you see, here we bring in pointer so we need to add unsafe keyword.

\n

Remarks

\n

Here's all the content you can see in this class.

\n

Constructors

\n

Cat()

\n

Default constructor.

\n
public Cat()\n
\n

Cat(T)

\n

Constructor with one generic parameter.

\n
public Cat(T ownType)\n
\n

Parameters

\n

ownType T

\n

This parameter type defined by class.

\n

Cat(string, out int, string, bool)

\n

It's a complex constructor. The parameter will have some attributes.

\n
public Cat(string nickName, out int age, string realName, bool isHealthy)\n
\n

Parameters

\n

nickName string

\n

it's string type.

\n

age int

\n

It's an out and ref parameter.

\n

realName string

\n

It's an out paramter.

\n

isHealthy bool

\n

It's an in parameter.

\n

Fields

\n

isHealthy

\n

Field with attribute.

\n
[ContextStatic]\n[NonSerialized]\n[Obsolete]\npublic bool isHealthy\n
\n

Field Value

\n

bool

\n

Properties

\n

Age

\n

Hint cat's age.

\n
[Obsolete]\nprotected int Age { get; set; }\n
\n

Property Value

\n

int

\n

Name

\n

EII property.

\n
public string Name { get; }\n
\n

Property Value

\n

string

\n

this[string]

\n

This is index property of Cat. You can see that the visibility is different between get and set method.

\n
public int this[string a] { protected get; set; }\n
\n

Property Value

\n

int

\n

Methods

\n

CalculateFood(DateTime)

\n

It's a method with complex return type.

\n
public Dictionary<string, List<int>> CalculateFood(DateTime date)\n
\n

Parameters

\n

date DateTime

\n

Date time to now.

\n

Returns

\n

Dictionary<string, List<int>>

\n

It's a relationship map of different kind food.

\n

Equals(object)

\n

Override the method of Object.Equals(object obj).

\n
public override bool Equals(object obj)\n
\n

Parameters

\n

obj object

\n

Can pass any class type.

\n

Returns

\n

bool

\n

The return value tell you whehter the compare operation is successful.

\n

GetTailLength(int*, params object[])

\n

It's an unsafe method.\nAs you see, catName is a pointer, so we need to add unsafe keyword.

\n
public long GetTailLength(int* catName, params object[] parameters)\n
\n

Parameters

\n

catName int*

\n

Thie represent for cat name length.

\n

parameters object[]

\n

Optional parameters.

\n

Returns

\n

long

\n

Return cat tail's length.

\n

Jump(T, K, ref bool)

\n

This method have attribute above it.

\n
[Conditional("Debug")]\npublic void Jump(T ownType, K anotherOwnType, ref bool cheat)\n
\n

Parameters

\n

ownType T

\n

Type come from class define.

\n

anotherOwnType K

\n

Type come from class define.

\n

cheat bool

\n

Hint whether this cat has cheat mode.

\n

Exceptions

\n

ArgumentException

\n

This is an argument exception

\n

ownEat

\n

Eat event of this cat

\n
[Obsolete("This _event handler_ is deprecated.")]\npublic event EventHandler ownEat\n
\n

Event Type

\n

EventHandler

\n

Operators

\n

operator +(Cat<T, K>, int)

\n

Addition operator of this class.

\n
public static int operator +(Cat<T, K> lsr, int rsr)\n
\n

Parameters

\n

lsr Cat<T, K>

\n

..

\n

rsr int

\n

~~

\n

Returns

\n

int

\n

Result with int type.

\n

explicit operator Tom(Cat<T, K>)

\n

Expilicit operator of this class.

\n

It means this cat can evolve to change to Tom. Tom and Jerry.

\n
public static explicit operator Tom(Cat<T, K> src)\n
\n

Parameters

\n

src Cat<T, K>

\n

Instance of this class.

\n

Returns

\n

Tom

\n

Advanced class type of cat.

\n

operator -(Cat<T, K>, int)

\n

Similar with operaotr +, refer to that topic.

\n
public static int operator -(Cat<T, K> lsr, int rsr)\n
\n

Parameters

\n

lsr Cat<T, K>

\n

rsr int

\n

Returns

\n

int

\n", "type": "Conceptual", "source": { "remote": { diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.ICatExtension.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.ICatExtension.html.view.verified.json index 3048684c691..384c39aa5b8 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.ICatExtension.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.ICatExtension.html.view.verified.json @@ -1,5 +1,5 @@ { - "conceptual": "\n

Namespace: CatLibrary
\nAssembly: CatLibrary.dll

\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

Also it shouldn't be a geneic class

\n
public static class ICatExtension\n
\n

Inheritance

\n

object ←\nICatExtension

\n

Inherited Members

\n

object.Equals(object?),\nobject.Equals(object?, object?),\nobject.GetHashCode(),\nobject.GetType(),\nobject.MemberwiseClone(),\nobject.ReferenceEquals(object?, object?),\nobject.ToString()

\n

Methods

\n

Play(ICat, ColorType)

\n

Extension method to let cat play

\n
public static void Play(this ICat icat, ContainersRefType.ColorType toy)\n
\n

Parameters

\n

icat ICat

\n

Cat

\n

toy ContainersRefType.ColorType

\n

Something to play

\n

Sleep(ICat, long)

\n

Extension method hint that how long the cat can sleep.

\n
public static void Sleep(this ICat icat, long hours)\n
\n

Parameters

\n

icat ICat

\n

The type will be extended.

\n

hours long

\n

The length of sleep.

\n", + "conceptual": "\n

Namespace: CatLibrary
\nAssembly: CatLibrary.dll

\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

\n

Also it shouldn't be a geneic class

\n
public static class ICatExtension\n
\n

Inheritance

\n

object ←\nICatExtension

\n

Inherited Members

\n

object.Equals(object?),\nobject.Equals(object?, object?),\nobject.GetHashCode(),\nobject.GetType(),\nobject.MemberwiseClone(),\nobject.ReferenceEquals(object?, object?),\nobject.ToString()

\n

Methods

\n

Play(ICat, ColorType)

\n

Extension method to let cat play

\n
public static void Play(this ICat icat, ContainersRefType.ColorType toy)\n
\n

Parameters

\n

icat ICat

\n

Cat

\n

toy ContainersRefType.ColorType

\n

Something to play

\n

Sleep(ICat, long)

\n

Extension method hint that how long the cat can sleep.

\n
public static void Sleep(this ICat icat, long hours)\n
\n

Parameters

\n

icat ICat

\n

The type will be extended.

\n

hours long

\n

The length of sleep.

\n", "type": "Conceptual", "source": { "remote": { diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.html.view.verified.json index 84116296562..eec926a8103 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/CatLibrary.html.view.verified.json @@ -1,5 +1,5 @@ { - "conceptual": "\n

Namespaces

\n

CatLibrary.Core

\n

Classes

\n

Cat<T, K>

\n

Here's main class of this Demo.

\n

You can see mostly type of article within this class and you for more detail, please see the remarks.

\n

\n

this class is a template class. It has two Generic parameter. they are: T and K.

\n

The extension method of this class can refer to class

\n

CatException<T>

\n

Complex<T, J>

\n

ICatExtension

\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

Also it shouldn't be a geneic class

\n

Tom

\n

Tom class is only inherit from Object. Not any member inside itself.

\n

TomFromBaseClass

\n

TomFromBaseClass inherits from @

\n

Interfaces

\n

IAnimal

\n

This is basic interface of all animal.

\n

ICat

\n

Cat's interface

\n

Delegates

\n

FakeDelegate<T>

\n

Fake delegate

\n

MRefDelegate<K, T, L>

\n

Generic delegate with many constrains.

\n

MRefNormalDelegate

\n

Delegate in the namespace

\n", + "conceptual": "\n

Namespaces

\n

CatLibrary.Core

\n

Classes

\n

Cat<T, K>

\n

Here's main class of this Demo.

\n

You can see mostly type of article within this class and you for more detail, please see the remarks.

\n

\n

this class is a template class. It has two Generic parameter. they are: T and K.

\n

The extension method of this class can refer to class

\n

CatException<T>

\n

Complex<T, J>

\n

ICatExtension

\n

It's the class that contains ICat interface's extension method.

\n

This class must be public and static.

\n

Also it shouldn't be a geneic class

\n

Tom

\n

Tom class is only inherit from Object. Not any member inside itself.

\n

TomFromBaseClass

\n

TomFromBaseClass inherits from @

\n

Interfaces

\n

IAnimal

\n

This is basic interface of all animal.

\n

ICat

\n

Cat's interface

\n

Delegates

\n

FakeDelegate<T>

\n

Fake delegate

\n

MRefDelegate<K, T, L>

\n

Generic delegate with many constrains.

\n

MRefNormalDelegate

\n

Delegate in the namespace

\n", "type": "Conceptual", "source": { "remote": { diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.html.view.verified.json index 13e585813c0..2bc12ed1ed1 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.html.view.verified.json @@ -260,6 +260,24 @@ "items": [], "leaf": true }, + { + "name": "Inheritdoc.Issue9736", + "href": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.html", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, { "name": "Issue8725", "href": "BuildFromProject.Issue8725.html", @@ -312,6 +330,15 @@ "items": [], "leaf": true }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "tocHref": null, + "level": 3, + "items": [], + "leaf": true + }, { "name": "Enums", "topicHref": null, diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.json.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.json.view.verified.json index 769ecbab285..bfdc7d78b39 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.json.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.json.view.verified.json @@ -1,3 +1,3 @@ { - "content": "{\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"BuildFromAssembly.html\",\"topicHref\":\"BuildFromAssembly.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromAssembly.Class1.html\",\"topicHref\":\"BuildFromAssembly.Class1.html\"},{\"name\":\"Structs\"},{\"name\":\"Issue5432\",\"href\":\"BuildFromAssembly.Issue5432.html\",\"topicHref\":\"BuildFromAssembly.Issue5432.html\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"BuildFromCSharpSourceCode.html\",\"topicHref\":\"BuildFromCSharpSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"CSharp\",\"href\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"BuildFromCSharpSourceCode.CSharp.html\"}]},{\"name\":\"BuildFromProject\",\"href\":\"BuildFromProject.html\",\"topicHref\":\"BuildFromProject.html\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"BuildFromProject.Issue8540.html\",\"topicHref\":\"BuildFromProject.Issue8540.html\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.A.html\"}]},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.B.html\"}]}]},{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromProject.Class1.html\",\"topicHref\":\"BuildFromProject.Class1.html\"},{\"name\":\"Class1.Issue8665\",\"href\":\"BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8665.html\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8696Attribute.html\"},{\"name\":\"Class1.Issue8948\",\"href\":\"BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8948.html\"},{\"name\":\"Class1.Test\",\"href\":\"BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"BuildFromProject.Class1.Test-1.html\"},{\"name\":\"Dog\",\"href\":\"BuildFromProject.Dog.html\",\"topicHref\":\"BuildFromProject.Dog.html\"},{\"name\":\"Inheritdoc\",\"href\":\"BuildFromProject.Inheritdoc.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.html\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.html\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7035.html\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7484.html\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8101.html\"},{\"name\":\"Issue8725\",\"href\":\"BuildFromProject.Issue8725.html\",\"topicHref\":\"BuildFromProject.Issue8725.html\"},{\"name\":\"Structs\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8129.html\"},{\"name\":\"Interfaces\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"BuildFromProject.Class1.IIssue8948.html\"},{\"name\":\"IInheritdoc\",\"href\":\"BuildFromProject.IInheritdoc.html\",\"topicHref\":\"BuildFromProject.IInheritdoc.html\"},{\"name\":\"Enums\"},{\"name\":\"Class1.Issue9260\",\"href\":\"BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"BuildFromProject.Class1.Issue9260.html\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"BuildFromVBSourceCode.html\",\"topicHref\":\"BuildFromVBSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"BaseClass1\",\"href\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"BuildFromVBSourceCode.BaseClass1.html\"},{\"name\":\"Class1\",\"href\":\"BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"BuildFromVBSourceCode.Class1.html\"}]},{\"name\":\"CatLibrary\",\"href\":\"CatLibrary.html\",\"topicHref\":\"CatLibrary.html\",\"items\":[{\"name\":\"Core\",\"href\":\"CatLibrary.Core.html\",\"topicHref\":\"CatLibrary.Core.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"CatLibrary.Core.ExplicitLayoutClass.html\"},{\"name\":\"Issue231\",\"href\":\"CatLibrary.Core.Issue231.html\",\"topicHref\":\"CatLibrary.Core.Issue231.html\"},{\"name\":\"Structs\"},{\"name\":\"ContainersRefType\",\"href\":\"CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.html\"},{\"name\":\"Interfaces\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\"},{\"name\":\"Enums\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ColorType.html\"},{\"name\":\"Delegates\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\"}]},{\"name\":\"Classes\"},{\"name\":\"Cat\",\"href\":\"CatLibrary.Cat-2.html\",\"topicHref\":\"CatLibrary.Cat-2.html\"},{\"name\":\"CatException\",\"href\":\"CatLibrary.CatException-1.html\",\"topicHref\":\"CatLibrary.CatException-1.html\"},{\"name\":\"Complex\",\"href\":\"CatLibrary.Complex-2.html\",\"topicHref\":\"CatLibrary.Complex-2.html\"},{\"name\":\"ICatExtension\",\"href\":\"CatLibrary.ICatExtension.html\",\"topicHref\":\"CatLibrary.ICatExtension.html\"},{\"name\":\"Tom\",\"href\":\"CatLibrary.Tom.html\",\"topicHref\":\"CatLibrary.Tom.html\"},{\"name\":\"TomFromBaseClass\",\"href\":\"CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"CatLibrary.TomFromBaseClass.html\"},{\"name\":\"Interfaces\"},{\"name\":\"IAnimal\",\"href\":\"CatLibrary.IAnimal.html\",\"topicHref\":\"CatLibrary.IAnimal.html\"},{\"name\":\"ICat\",\"href\":\"CatLibrary.ICat.html\",\"topicHref\":\"CatLibrary.ICat.html\"},{\"name\":\"Delegates\"},{\"name\":\"FakeDelegate\",\"href\":\"CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"CatLibrary.FakeDelegate-1.html\"},{\"name\":\"MRefDelegate\",\"href\":\"CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"CatLibrary.MRefDelegate-3.html\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"CatLibrary.MRefNormalDelegate.html\"}]},{\"name\":\"MRef\",\"href\":\"MRef.html\",\"topicHref\":\"MRef.html\",\"items\":[{\"name\":\"Demo\",\"href\":\"MRef.Demo.html\",\"topicHref\":\"MRef.Demo.html\",\"items\":[{\"name\":\"Enumeration\",\"href\":\"MRef.Demo.Enumeration.html\",\"topicHref\":\"MRef.Demo.Enumeration.html\",\"items\":[{\"name\":\"Enums\"},{\"name\":\"ColorType\",\"href\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"MRef.Demo.Enumeration.ColorType.html\"}]}]}]}],\"pdf\":true,\"pdfTocPage\":true}" + "content": "{\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"BuildFromAssembly.html\",\"topicHref\":\"BuildFromAssembly.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromAssembly.Class1.html\",\"topicHref\":\"BuildFromAssembly.Class1.html\"},{\"name\":\"Structs\"},{\"name\":\"Issue5432\",\"href\":\"BuildFromAssembly.Issue5432.html\",\"topicHref\":\"BuildFromAssembly.Issue5432.html\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"BuildFromCSharpSourceCode.html\",\"topicHref\":\"BuildFromCSharpSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"CSharp\",\"href\":\"BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"BuildFromCSharpSourceCode.CSharp.html\"}]},{\"name\":\"BuildFromProject\",\"href\":\"BuildFromProject.html\",\"topicHref\":\"BuildFromProject.html\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"BuildFromProject.Issue8540.html\",\"topicHref\":\"BuildFromProject.Issue8540.html\",\"items\":[{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"A\",\"href\":\"BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"BuildFromProject.Issue8540.A.A.html\"}]},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"B\",\"href\":\"BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"BuildFromProject.Issue8540.B.B.html\"}]}]},{\"name\":\"Classes\"},{\"name\":\"Class1\",\"href\":\"BuildFromProject.Class1.html\",\"topicHref\":\"BuildFromProject.Class1.html\"},{\"name\":\"Class1.Issue8665\",\"href\":\"BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8665.html\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8696Attribute.html\"},{\"name\":\"Class1.Issue8948\",\"href\":\"BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"BuildFromProject.Class1.Issue8948.html\"},{\"name\":\"Class1.Test\",\"href\":\"BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"BuildFromProject.Class1.Test-1.html\"},{\"name\":\"Dog\",\"href\":\"BuildFromProject.Dog.html\",\"topicHref\":\"BuildFromProject.Dog.html\"},{\"name\":\"Inheritdoc\",\"href\":\"BuildFromProject.Inheritdoc.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.html\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.html\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue6366.Class2.html\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7035.html\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue7484.html\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8101.html\"},{\"name\":\"Inheritdoc.Issue9736\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.html\"},{\"name\":\"Inheritdoc.Issue9736.JsonApiOptions\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\"},{\"name\":\"Issue8725\",\"href\":\"BuildFromProject.Issue8725.html\",\"topicHref\":\"BuildFromProject.Issue8725.html\"},{\"name\":\"Structs\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue8129.html\"},{\"name\":\"Interfaces\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"BuildFromProject.Class1.IIssue8948.html\"},{\"name\":\"IInheritdoc\",\"href\":\"BuildFromProject.IInheritdoc.html\",\"topicHref\":\"BuildFromProject.IInheritdoc.html\"},{\"name\":\"Inheritdoc.Issue9736.IJsonApiOptions\",\"href\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\",\"topicHref\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\"},{\"name\":\"Enums\"},{\"name\":\"Class1.Issue9260\",\"href\":\"BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"BuildFromProject.Class1.Issue9260.html\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"BuildFromVBSourceCode.html\",\"topicHref\":\"BuildFromVBSourceCode.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"BaseClass1\",\"href\":\"BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"BuildFromVBSourceCode.BaseClass1.html\"},{\"name\":\"Class1\",\"href\":\"BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"BuildFromVBSourceCode.Class1.html\"}]},{\"name\":\"CatLibrary\",\"href\":\"CatLibrary.html\",\"topicHref\":\"CatLibrary.html\",\"items\":[{\"name\":\"Core\",\"href\":\"CatLibrary.Core.html\",\"topicHref\":\"CatLibrary.Core.html\",\"items\":[{\"name\":\"Classes\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"CatLibrary.Core.ExplicitLayoutClass.html\"},{\"name\":\"Issue231\",\"href\":\"CatLibrary.Core.Issue231.html\",\"topicHref\":\"CatLibrary.Core.Issue231.html\"},{\"name\":\"Structs\"},{\"name\":\"ContainersRefType\",\"href\":\"CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.html\"},{\"name\":\"Interfaces\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\"},{\"name\":\"Enums\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ColorType.html\"},{\"name\":\"Delegates\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\"}]},{\"name\":\"Classes\"},{\"name\":\"Cat\",\"href\":\"CatLibrary.Cat-2.html\",\"topicHref\":\"CatLibrary.Cat-2.html\"},{\"name\":\"CatException\",\"href\":\"CatLibrary.CatException-1.html\",\"topicHref\":\"CatLibrary.CatException-1.html\"},{\"name\":\"Complex\",\"href\":\"CatLibrary.Complex-2.html\",\"topicHref\":\"CatLibrary.Complex-2.html\"},{\"name\":\"ICatExtension\",\"href\":\"CatLibrary.ICatExtension.html\",\"topicHref\":\"CatLibrary.ICatExtension.html\"},{\"name\":\"Tom\",\"href\":\"CatLibrary.Tom.html\",\"topicHref\":\"CatLibrary.Tom.html\"},{\"name\":\"TomFromBaseClass\",\"href\":\"CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"CatLibrary.TomFromBaseClass.html\"},{\"name\":\"Interfaces\"},{\"name\":\"IAnimal\",\"href\":\"CatLibrary.IAnimal.html\",\"topicHref\":\"CatLibrary.IAnimal.html\"},{\"name\":\"ICat\",\"href\":\"CatLibrary.ICat.html\",\"topicHref\":\"CatLibrary.ICat.html\"},{\"name\":\"Delegates\"},{\"name\":\"FakeDelegate\",\"href\":\"CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"CatLibrary.FakeDelegate-1.html\"},{\"name\":\"MRefDelegate\",\"href\":\"CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"CatLibrary.MRefDelegate-3.html\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"CatLibrary.MRefNormalDelegate.html\"}]},{\"name\":\"MRef\",\"href\":\"MRef.html\",\"topicHref\":\"MRef.html\",\"items\":[{\"name\":\"Demo\",\"href\":\"MRef.Demo.html\",\"topicHref\":\"MRef.Demo.html\",\"items\":[{\"name\":\"Enumeration\",\"href\":\"MRef.Demo.Enumeration.html\",\"topicHref\":\"MRef.Demo.Enumeration.html\",\"items\":[{\"name\":\"Enums\"},{\"name\":\"ColorType\",\"href\":\"MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"MRef.Demo.Enumeration.ColorType.html\"}]}]}]}],\"pdf\":true,\"pdfTocPage\":true}" } \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.pdf.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.pdf.verified.json index b9ae5e5a3ba..d8ac6e50935 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.pdf.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.pdf.verified.json @@ -1,9 +1,9 @@ { - "NumberOfPages": 80, + "NumberOfPages": 84, "Pages": [ { "Number": 1, - "Text": "Table of ContentsBuildFromAssembly3ClassesClass14StructsIssue54325BuildFromCSharpSourceCode6ClassesCSharp7BuildFromProject8Issue854010A11ClassesA12B13ClassesB14ClassesClass115Class1.Issue866520Class1.Issue8696Attribute22Class1.Issue894824Class1.Test25Dog26Inheritdoc28Inheritdoc.Issue636629Inheritdoc.Issue6366.Class130Inheritdoc.Issue6366.Class231Inheritdoc.Issue703532Inheritdoc.Issue748433Inheritdoc.Issue810135Issue872537StructsInheritdoc.Issue812938InterfacesClass1.IIssue894839IInheritdoc40EnumsClass1.Issue926041", + "Text": "Table of Contents\nBuildFromAssembly 3\nClasses\nClass1 4\nStructs\nIssue5432 5\nBuildFromCSharpSourceCode 6\nClasses\nCSharp 7\nBuildFromProject 8\nIssue8540 10\nA 11\nClasses\nA 12\nB 13\nClasses\nB 14\nClasses\nClass1 15\nClass1.Issue8665 20\nClass1.Issue8696Attribute 22\nClass1.Issue8948 24\nClass1.Test 25\nDog 26\nInheritdoc 28\nInheritdoc.Issue6366 29\nInheritdoc.Issue6366.Class1 30\nInheritdoc.Issue6366.Class2 31\nInheritdoc.Issue7035 32\nInheritdoc.Issue7484 33\nInheritdoc.Issue8101 35\nInheritdoc.Issue9736 37\nInheritdoc.Issue9736.JsonApiOptions 38\nIssue8725 40\nStructs\nInheritdoc.Issue8129 41\nInterfaces\nClass1.IIssue8948 42\nIInheritdoc 43", "Links": [ { "Goto": { @@ -241,7 +241,7 @@ }, { "Goto": { - "PageNumber": 39, + "PageNumber": 40, "Type": 2, "Coordinates": { "Top": 0 @@ -250,7 +250,7 @@ }, { "Goto": { - "PageNumber": 40, + "PageNumber": 41, "Type": 2, "Coordinates": { "Top": 0 @@ -259,7 +259,16 @@ }, { "Goto": { - "PageNumber": 41, + "PageNumber": 42, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 43, "Type": 2, "Coordinates": { "Top": 0 @@ -270,11 +279,11 @@ }, { "Number": 2, - "Text": "BuildFromVBSourceCode42ClassesBaseClass143Class144CatLibrary46Core48ClassesContainersRefType.ContainersRefTypeChild49ExplicitLayoutClass50Issue23151StructsContainersRefType52InterfacesContainersRefType.ContainersRefTypeChildInterface54EnumsContainersRefType.ColorType55DelegatesContainersRefType.ContainersRefTypeDelegate56ClassesCat57CatException64Complex65ICatExtension66Tom68TomFromBaseClass70InterfacesIAnimal71ICat73DelegatesFakeDelegate74MRefDelegate75MRefNormalDelegate76MRef77Demo78Enumeration79EnumsColorType80", + "Text": "Inheritdoc.Issue9736.IJsonApiOptions 44\nEnums\nClass1.Issue9260 45\nBuildFromVBSourceCode 46\nClasses\nBaseClass1 47\nClass1 48\nCatLibrary 50\nCore 52\nClasses\nContainersRefType.ContainersRefTypeChild 53\nExplicitLayoutClass 54\nIssue231 55\nStructs\nContainersRefType 56\nInterfaces\nContainersRefType.ContainersRefTypeChildInterface 58\nEnums\nContainersRefType.ColorType 59\nDelegates\nContainersRefType.ContainersRefTypeDelegate 60\nClasses\nCat 61\nCatException 68\nComplex 69\nICatExtension 70\nTom 72\nTomFromBaseClass 74\nInterfaces\nIAnimal 75\nICat 77\nDelegates\nFakeDelegate 78\nMRefDelegate 79\nMRefNormalDelegate 80\nMRef 81\nDemo 82\nEnumeration 83\nEnums\nColorType 84", "Links": [ { "Goto": { - "PageNumber": 42, + "PageNumber": 44, "Type": 2, "Coordinates": { "Top": 0 @@ -283,7 +292,7 @@ }, { "Goto": { - "PageNumber": 43, + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -292,7 +301,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 46, "Type": 2, "Coordinates": { "Top": 0 @@ -301,7 +310,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -319,7 +328,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -328,7 +337,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -337,7 +346,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -346,7 +355,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -355,7 +364,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -364,7 +373,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -373,7 +382,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -382,7 +391,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -391,7 +400,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -400,7 +409,7 @@ }, { "Goto": { - "PageNumber": 65, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -409,7 +418,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -418,7 +427,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 69, "Type": 2, "Coordinates": { "Top": 0 @@ -436,7 +445,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -445,7 +454,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -454,7 +463,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -463,7 +472,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -472,7 +481,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -481,7 +490,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -490,7 +499,7 @@ }, { "Goto": { - "PageNumber": 78, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -499,7 +508,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -508,7 +517,25 @@ }, { "Goto": { - "PageNumber": 80, + "PageNumber": 82, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 83, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -519,7 +546,7 @@ }, { "Number": 3, - "Text": "3 / 80Namespace BuildFromAssemblyClassesClass1This is a test class.StructsIssue5432", + "Text": "3 / 84\nNamespace BuildFromAssembly\nClasses\nClass1\nThis is a test class.\nStructs\nIssue5432", "Links": [ { "Goto": { @@ -543,7 +570,7 @@ }, { "Number": 4, - "Text": "4 / 80Class Class1Namespace: BuildFromAssemblyAssembly: BuildFromAssembly.dllThis is a test class.Inheritanceobject\uF1C5 ← Class1Inherited Membersobject.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ToString()\uF1C5, object.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.GetHashCode()\uF1C5ConstructorsClass1()MethodsHelloWorld()Hello World.public class Class1public Class1()public static void HelloWorld()", + "Text": "4 / 84\nClass Class1\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nThis is a test class.\nInheritance\nobject\uF1C5 ← Class1\nInherited Members\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ToString()\uF1C5 , object.Equals(object?)\n\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.GetHashCode()\uF1C5\nConstructors\nClass1()\nMethods\nHelloWorld()\nHello World.\npublic class Class1\npublic Class1()\npublic static void HelloWorld()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -642,7 +669,7 @@ }, { "Number": 5, - "Text": "5 / 80Struct Issue5432Namespace: BuildFromAssemblyAssembly: BuildFromAssembly.dllInherited Membersobject.GetType()\uF1C5, object.ToString()\uF1C5, object.Equals(object?)\uF1C5, object.Equals(object?,object?)\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5PropertiesNameProperty Valuestring\uF1C5public struct Issue5432public string Name { get; }", + "Text": "5 / 84\nStruct Issue5432\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nInherited Members\nobject.GetType()\uF1C5 , object.ToString()\uF1C5 , object.Equals(object?)\uF1C5 , object.Equals(object?,\nobject?)\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5\nProperties\nName\nProperty Value\nstring\uF1C5\npublic struct Issue5432\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" @@ -723,7 +750,7 @@ }, { "Number": 6, - "Text": "6 / 80Namespace BuildFromCSharpSourceCodeClassesCSharp", + "Text": "6 / 84\nNamespace BuildFromCSharpSourceCode\nClasses\nCSharp", "Links": [ { "Goto": { @@ -738,7 +765,7 @@ }, { "Number": 7, - "Text": "7 / 80Class CSharpNamespace: BuildFromCSharpSourceCodeInheritanceobject\uF1C5 ← CSharpInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsMain(string[])Parametersargs string\uF1C5[]public class CSharppublic static void Main(string[] args)", + "Text": "7 / 84\nClass CSharp\nNamespace: BuildFromCSharpSourceCode\nInheritance\nobject\uF1C5 ← CSharp\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nMain(string[])\nParameters\nargs string\uF1C5 []\npublic class CSharp\npublic static void Main(string[] args)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -843,7 +870,7 @@ }, { "Number": 8, - "Text": "8 / 80Namespace BuildFromProjectNamespacesBuildFromProject.Issue8540ClassesInheritdoc.Issue6366.Class1Class1Inheritdoc.Issue6366.Class2DogClass representing a dog.InheritdocInheritdoc.Issue6366Inheritdoc.Issue7035Inheritdoc.Issue7484This is a test class to have something for DocFX to document.Inheritdoc.Issue8101Class1.Issue8665Class1.Issue8696AttributeIssue8725A nice classClass1.Issue8948Class1.TestStructsInheritdoc.Issue8129Interfaces", + "Text": "8 / 84\nNamespace BuildFromProject\nNamespaces\nBuildFromProject.Issue8540\nClasses\nInheritdoc.Issue6366.Class1\nClass1\nInheritdoc.Issue6366.Class2\nDog\nClass representing a dog.\nInheritdoc\nInheritdoc.Issue6366\nInheritdoc.Issue7035\nInheritdoc.Issue7484\nThis is a test class to have something for DocFX to document.\nInheritdoc.Issue8101\nClass1.Issue8665\nClass1.Issue8696Attribute\nIssue8725\nA nice class\nClass1.Issue8948\nInheritdoc.Issue9736\nInheritdoc.Issue9736.JsonApiOptions\nClass1.Test\nStructs", "Links": [ { "Goto": { @@ -955,7 +982,7 @@ }, { "Goto": { - "PageNumber": 37, + "PageNumber": 40, "Type": 2, "Coordinates": { "Top": 0 @@ -973,7 +1000,7 @@ }, { "Goto": { - "PageNumber": 25, + "PageNumber": 37, "Type": 2, "Coordinates": { "Top": 0 @@ -988,16 +1015,25 @@ "Top": 0 } } + }, + { + "Goto": { + "PageNumber": 25, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } } ] }, { "Number": 9, - "Text": "9 / 80IInheritdocClass1.IIssue8948EnumsClass1.Issue9260", + "Text": "9 / 84\nInheritdoc.Issue8129\nInterfaces\nIInheritdoc\nClass1.IIssue8948\nInheritdoc.Issue9736.IJsonApiOptions\nEnums\nClass1.Issue9260", "Links": [ { "Goto": { - "PageNumber": 40, + "PageNumber": 41, "Type": 2, "Coordinates": { "Top": 0 @@ -1006,7 +1042,7 @@ }, { "Goto": { - "PageNumber": 39, + "PageNumber": 43, "Type": 2, "Coordinates": { "Top": 0 @@ -1015,7 +1051,25 @@ }, { "Goto": { - "PageNumber": 41, + "PageNumber": 42, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 44, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -1026,7 +1080,7 @@ }, { "Number": 10, - "Text": "10 / 80Namespace BuildFromProject.Issue8540NamespacesBuildFromProject.Issue8540.ABuildFromProject.Issue8540.B", + "Text": "10 / 84\nNamespace BuildFromProject.Issue8540\nNamespaces\nBuildFromProject.Issue8540.A\nBuildFromProject.Issue8540.B", "Links": [ { "Goto": { @@ -1050,7 +1104,7 @@ }, { "Number": 11, - "Text": "11 / 80Namespace BuildFromProject.Issue8540.AClassesA", + "Text": "11 / 84\nNamespace BuildFromProject.Issue8540.A\nClasses\nA", "Links": [ { "Goto": { @@ -1065,7 +1119,7 @@ }, { "Number": 12, - "Text": "12 / 80Class ANamespace: BuildFromProject.Issue8540.AAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← AInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class A", + "Text": "12 / 84\nClass A\nNamespace: BuildFromProject.Issue8540.A\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← A\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class A", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1161,7 +1215,7 @@ }, { "Number": 13, - "Text": "13 / 80Namespace BuildFromProject.Issue8540.BClassesB", + "Text": "13 / 84\nNamespace BuildFromProject.Issue8540.B\nClasses\nB", "Links": [ { "Goto": { @@ -1176,7 +1230,7 @@ }, { "Number": 14, - "Text": "14 / 80Class BNamespace: BuildFromProject.Issue8540.BAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← BInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class B", + "Text": "14 / 84\nClass B\nNamespace: BuildFromProject.Issue8540.B\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← B\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class B", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1272,7 +1326,7 @@ }, { "Number": 15, - "Text": "15 / 80Class Class1Namespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Class1ImplementsIClass1Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsIssue1651()Pricing models are used to calculate theoretical option values1Black Scholes2Black763Black76Fut4Equity Tree5Variance Swap6Dividend ForecastIssue1887()IConfiguration related helper and extension routines.Issue2623()public class Class1 : IClass1public void Issue1651()public void Issue1887()", + "Text": "15 / 84\nClass Class1\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Class1\nImplements\nIClass1\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nIssue1651()\nPricing models are used to calculate theoretical option values\n1Black Scholes\n2Black76\n3Black76Fut\n4Equity Tree\n5Variance Swap\n6Dividend Forecast\nIssue1887()\nIConfiguration related helper and extension routines.\nIssue2623()\npublic class Class1 : IClass1\npublic void Issue1651()\npublic void Issue1887()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1368,7 +1422,7 @@ }, { "Number": 16, - "Text": "16 / 80ExamplesRemarksFor example:Issue2723()RemarksInline .link\uF1C5public void Issue2623()MyClass myClass = new MyClass();void Update(){ myClass.Execute();}MyClass myClass = new MyClass();void Update(){ myClass.Execute();}public void Issue2723()NOTEThis is a . & \" '\uF431for (var i = 0; i > 10; i++) // & \" 'var range = new Range { Min = 0, Max = 10 };", + "Text": "16 / 84\nExamples\nRemarks\nFor example:\nIssue2723()\nRemarks\nInline .\nlink\uF1C5\npublic void Issue2623()\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\npublic void Issue2723()\nNOTE\nThis is a . & \" '\n\uF431\nfor (var i = 0; i > 10; i++) // & \" '\nvar range = new Range { Min = 0, Max = 10 };", "Links": [ { "Uri": "https://www.github.com/" @@ -1383,12 +1437,12 @@ }, { "Number": 17, - "Text": "17 / 80Issue4017()ExamplesRemarksIssue4392()Remarks@\"\\\\?\\\" @\"\\\\?\\\"var range = new Range { Min = 0, Max = 10 };public void Issue4017()public void HookMessageDeleted(BaseSocketClient client){ client.MessageDeleted += HandleMessageDelete;}public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel){ // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask;}void Update(){ myClass.Execute();}public void Issue4392()", + "Text": "17 / 84\nIssue4017()\nExamples\nRemarks\nIssue4392()\nRemarks\n@\"\\\\?\\\" @\"\\\\?\\\"\nvar range = new Range { Min = 0, Max = 10 };\npublic void Issue4017()\npublic void HookMessageDeleted(BaseSocketClient client)\n{ \nclient.MessageDeleted += HandleMessageDelete;\n}\npublic Task HandleMessageDelete(Cacheable cachedMessage,\nISocketMessageChannel channel)\n{ \n// check if the message exists in cache; if not, we cannot report what\nwas removed\nif (!cachedMessage.HasValue) return;\nvar message = cachedMessage.Value;\nConsole.WriteLine($\"A message ({message.Id}) from {message.Author} was removed\nfrom the channel {channel.Name} ({channel.Id}):\"\n+ Environment.NewLine\n+ message.Content);\nreturn Task.CompletedTask;\n}\nvoid Update()\n{ \nmyClass.Execute();\n}\npublic void Issue4392()", "Links": [] }, { "Number": 18, - "Text": "18 / 80Issue7484()RemarksThere's really no reason to not believe that this class can test things.TermDescriptionA TermA DescriptionBee TermBee DescriptionIssue8764()Type ParametersTIssue896()TestSee AlsoClass1.Test, Class1Issue9216()Calculates the determinant of a 3-dimensional matrix:Returns the smallest value:public void Issue7484()public void Issue8764() where T : unmanagedpublic void Issue896()", + "Text": "18 / 84\nIssue7484()\nRemarks\nThere's really no reason to not believe that this class can test things.\nTerm Description\nA Term A Description\nBee Term Bee Description\nIssue8764()\nType Parameters\nT\nIssue896()\nTest\nSee Also\nClass1.Test, Class1\nIssue9216()\nCalculates the determinant of a 3-dimensional matrix:\nReturns the smallest value:\npublic void Issue7484()\npublic void Issue8764() where T : unmanaged\npublic void Issue896()", "Links": [ { "Goto": { @@ -1421,7 +1475,7 @@ }, { "Number": 19, - "Text": "19 / 80Returnsdouble\uF1C5XmlCommentIncludeTag()This method should do something...RemarksThis is remarks.public static double Issue9216()public void XmlCommentIncludeTag()", + "Text": "19 / 84\nReturns\ndouble\uF1C5\nXmlCommentIncludeTag()\nThis method should do something...\nRemarks\nThis is remarks.\npublic static double Issue9216()\npublic void XmlCommentIncludeTag()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.double" @@ -1436,7 +1490,7 @@ }, { "Number": 20, - "Text": "20 / 80Class Class1.Issue8665Namespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Class1.Issue8665Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5ConstructorsIssue8665()Issue8665(int)Parametersfoo int\uF1C5Issue8665(int, char)Parametersfoo int\uF1C5bar char\uF1C5Issue8665(int, char, string)public class Class1.Issue8665public Issue8665()public Issue8665(int foo)public Issue8665(int foo, char bar)", + "Text": "20 / 84\nClass Class1.Issue8665\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Class1.Issue8665\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nIssue8665()\nIssue8665(int)\nParameters\nfoo int\uF1C5\nIssue8665(int, char)\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nIssue8665(int, char, string)\npublic class Class1.Issue8665\npublic Issue8665()\npublic Issue8665(int foo)\npublic Issue8665(int foo, char bar)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1559,7 +1613,7 @@ }, { "Number": 21, - "Text": "21 / 80Parametersfoo int\uF1C5bar char\uF1C5baz string\uF1C5PropertiesBarProperty Valuechar\uF1C5BazProperty Valuestring\uF1C5FooProperty Valueint\uF1C5public Issue8665(int foo, char bar, string baz)public char Bar { get; }public string Baz { get; }public int Foo { get; }", + "Text": "21 / 84\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nbaz string\uF1C5\nProperties\nBar\nProperty Value\nchar\uF1C5\nBaz\nProperty Value\nstring\uF1C5\nFoo\nProperty Value\nint\uF1C5\npublic Issue8665(int foo, char bar, string baz)\npublic char Bar { get; }\npublic string Baz { get; }\npublic int Foo { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -1619,7 +1673,7 @@ }, { "Number": 22, - "Text": "22 / 80Class Class1.Issue8696AttributeNamespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Attribute\uF1C5 ← Class1.Issue8696AttributeInherited MembersAttribute.Equals(object?)\uF1C5, Attribute.GetCustomAttribute(Assembly, Type)\uF1C5,Attribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5,Attribute.GetCustomAttribute(MemberInfo, Type)\uF1C5,Attribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5,Attribute.GetCustomAttribute(Module, Type)\uF1C5, Attribute.GetCustomAttribute(Module, Type,bool)\uF1C5, Attribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5,Attribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5,Attribute.GetCustomAttributes(Assembly)\uF1C5, Attribute.GetCustomAttributes(Assembly, bool)\uF1C5, Attribute.GetCustomAttributes(Assembly, Type)\uF1C5,Attribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5,Attribute.GetCustomAttributes(MemberInfo)\uF1C5, Attribute.GetCustomAttributes(MemberInfo,bool)\uF1C5, Attribute.GetCustomAttributes(MemberInfo, Type)\uF1C5,Attribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5,Attribute.GetCustomAttributes(Module)\uF1C5, Attribute.GetCustomAttributes(Module, bool)\uF1C5,Attribute.GetCustomAttributes(Module, Type)\uF1C5, Attribute.GetCustomAttributes(Module,Type, bool)\uF1C5, Attribute.GetCustomAttributes(ParameterInfo)\uF1C5,Attribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5,Attribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5,Attribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5, Attribute.GetHashCode()\uF1C5,Attribute.IsDefaultAttribute()\uF1C5, Attribute.IsDefined(Assembly, Type)\uF1C5,Attribute.IsDefined(Assembly, Type, bool)\uF1C5, Attribute.IsDefined(MemberInfo, Type)\uF1C5,Attribute.IsDefined(MemberInfo, Type, bool)\uF1C5, Attribute.IsDefined(Module, Type)\uF1C5,Attribute.IsDefined(Module, Type, bool)\uF1C5, Attribute.IsDefined(ParameterInfo, Type)\uF1C5,Attribute.IsDefined(ParameterInfo, Type, bool)\uF1C5, Attribute.Match(object?)\uF1C5, Attribute.TypeId\uF1C5, object.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class Class1.Issue8696Attribute : Attribute", + "Text": "22 / 84\nClass Class1.Issue8696Attribute\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Attribute\uF1C5 ← Class1.Issue8696Attribute\nInherited Members\nAttribute.Equals(object?)\uF1C5 , Attribute.GetCustomAttribute(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(Module, Type)\uF1C5 , Attribute.GetCustomAttribute(Module, Type,\nbool)\uF1C5 , Attribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly)\uF1C5 , Attribute.GetCustomAttributes(Assembly, bool)\n\uF1C5 , Attribute.GetCustomAttributes(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo)\uF1C5 , Attribute.GetCustomAttributes(MemberInfo,\nbool)\uF1C5 , Attribute.GetCustomAttributes(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module)\uF1C5 , Attribute.GetCustomAttributes(Module, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module, Type)\uF1C5 , Attribute.GetCustomAttributes(Module,\nType, bool)\uF1C5 , Attribute.GetCustomAttributes(ParameterInfo)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5 , Attribute.GetHashCode()\uF1C5 ,\nAttribute.IsDefaultAttribute()\uF1C5 , Attribute.IsDefined(Assembly, Type)\uF1C5 ,\nAttribute.IsDefined(Assembly, Type, bool)\uF1C5 , Attribute.IsDefined(MemberInfo, Type)\uF1C5 ,\nAttribute.IsDefined(MemberInfo, Type, bool)\uF1C5 , Attribute.IsDefined(Module, Type)\uF1C5 ,\nAttribute.IsDefined(Module, Type, bool)\uF1C5 , Attribute.IsDefined(ParameterInfo, Type)\uF1C5 ,\nAttribute.IsDefined(ParameterInfo, Type, bool)\uF1C5 , Attribute.Match(object?)\uF1C5 , Attribute.TypeId\n\uF1C5 , object.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class Class1.Issue8696Attribute : Attribute", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2072,7 +2126,7 @@ }, { "Number": 23, - "Text": "23 / 80ConstructorsIssue8696Attribute(string?, int, int, string[]?, bool, Type?)Parametersdescription string\uF1C5?boundsMin int\uF1C5boundsMax int\uF1C5validGameModes string\uF1C5[]?hasMultipleSelections bool\uF1C5enumType Type\uF1C5?[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)]public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null)", + "Text": "23 / 84\nConstructors\nIssue8696Attribute(string?, int, int, string[]?, bool, Type?)\nParameters\ndescription string\uF1C5 ?\nboundsMin int\uF1C5\nboundsMax int\uF1C5\nvalidGameModes string\uF1C5 []?\nhasMultipleSelections bool\uF1C5\nenumType Type\uF1C5 ?\n[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null,\nfalse, null)]\npublic Issue8696Attribute(string? description = null, int boundsMin = 0, int\nboundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false,\nType? enumType = null)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -2132,7 +2186,7 @@ }, { "Number": 24, - "Text": "24 / 80Class Class1.Issue8948Namespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Class1.Issue8948ImplementsClass1.IIssue8948Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsDoNothing()Does nothing with generic type T.Type ParametersTA generic type.public class Class1.Issue8948 : Class1.IIssue8948public void DoNothing()", + "Text": "24 / 84\nClass Class1.Issue8948\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Class1.Issue8948\nImplements\nClass1.IIssue8948\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nDoNothing()\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\npublic class Class1.Issue8948 : Class1.IIssue8948\npublic void DoNothing()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2226,7 +2280,7 @@ }, { "Goto": { - "PageNumber": 39, + "PageNumber": 42, "Type": 2, "Coordinates": { "Top": 0 @@ -2237,7 +2291,7 @@ }, { "Number": 25, - "Text": "25 / 80Class Class1.TestNamespace: BuildFromProjectAssembly: BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 ← Class1.TestInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class Class1.Test", + "Text": "25 / 84\nClass Class1.Test\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 ← Class1.Test\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class Class1.Test", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2333,7 +2387,7 @@ }, { "Number": 26, - "Text": "26 / 80Class DogNamespace: BuildFromProjectAssembly: BuildFromProject.dllClass representing a dog.Inheritanceobject\uF1C5 ← DogInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5ConstructorsDog(string, int)Constructor.Parametersname string\uF1C5Name of the dog.age int\uF1C5Age of the dog.PropertiesAgeAge of the dog.public class Dogpublic Dog(string name, int age)public int Age { get; }", + "Text": "26 / 84\nClass Dog\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nClass representing a dog.\nInheritance\nobject\uF1C5 ← Dog\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nDog(string, int)\nConstructor.\nParameters\nname string\uF1C5\nName of the dog.\nage int\uF1C5\nAge of the dog.\nProperties\nAge\nAge of the dog.\npublic class Dog\npublic Dog(string name, int age)\npublic int Age { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2447,7 +2501,7 @@ }, { "Number": 27, - "Text": "27 / 80Property Valueint\uF1C5NameName of the dog.Property Valuestring\uF1C5public string Name { get; }", + "Text": "27 / 84\nProperty Value\nint\uF1C5\nName\nName of the dog.\nProperty Value\nstring\uF1C5\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -2471,7 +2525,7 @@ }, { "Number": 28, - "Text": "28 / 80Class InheritdocNamespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← InheritdocImplementsIInheritdoc, IDisposable\uF1C5Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsDispose()Performs application-defined tasks associated with freeing, releasing, or resettingunmanaged resources.Issue7628()This method should do something...Issue7629()This method should do something...public class Inheritdoc : IInheritdoc, IDisposablepublic void Dispose()public void Issue7628()public void Issue7629()", + "Text": "28 / 84\nClass Inheritdoc\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Inheritdoc\nImplements\nIInheritdoc, IDisposable\uF1C5\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nDispose()\nPerforms application-defined tasks associated with freeing, releasing, or resetting\nunmanaged resources.\nIssue7628()\nThis method should do something...\nIssue7629()\nThis method should do something...\npublic class Inheritdoc : IInheritdoc, IDisposable\npublic void Dispose()\npublic void Issue7628()\npublic void Issue7629()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2574,7 +2628,7 @@ }, { "Goto": { - "PageNumber": 40, + "PageNumber": 43, "Type": 2, "Coordinates": { "Top": 0 @@ -2585,7 +2639,7 @@ }, { "Number": 29, - "Text": "29 / 80Class Inheritdoc.Issue6366Namespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Inheritdoc.Issue6366Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class Inheritdoc.Issue6366", + "Text": "29 / 84\nClass Inheritdoc.Issue6366\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue6366\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class Inheritdoc.Issue6366", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2681,7 +2735,7 @@ }, { "Number": 30, - "Text": "30 / 80Class Inheritdoc.Issue6366.Class1Namespace: BuildFromProjectAssembly: BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 ← Inheritdoc.Issue6366.Class1Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsTestMethod1(T, int)This text inherited.Parametersparm1 TThis text NOT inherited.parm2 int\uF1C5This text inherited.ReturnsTThis text inherited.public abstract class Inheritdoc.Issue6366.Class1public abstract T TestMethod1(T parm1, int parm2)", + "Text": "30 / 84\nClass Inheritdoc.Issue6366.Class1\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue6366.Class1\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nTestMethod1(T, int)\nThis text inherited.\nParameters\nparm1 T\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nReturns\nT\nThis text inherited.\npublic abstract class Inheritdoc.Issue6366.Class1\npublic abstract T TestMethod1(T parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2786,7 +2840,7 @@ }, { "Number": 31, - "Text": "31 / 80Class Inheritdoc.Issue6366.Class2Namespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Inheritdoc.Issue6366.Class1 ← Inheritdoc.Issue6366.Class2Inherited MembersInheritdoc.Issue6366.Class1.TestMethod1(bool, int), object.Equals(object?)\uF1C5,object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5, object.GetType()\uF1C5,object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5, object.ToString()\uF1C5MethodsTestMethod1(bool, int)This text inherited.Parametersparm1 bool\uF1C5This text NOT inherited.parm2 int\uF1C5This text inherited.Returnsbool\uF1C5This text inherited.public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1public override bool TestMethod1(bool parm1, int parm2)", + "Text": "31 / 84\nClass Inheritdoc.Issue6366.Class2\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue6366.Class1 ← Inheritdoc.Issue6366.Class2\nInherited Members\nInheritdoc.Issue6366.Class1.TestMethod1(bool, int), object.Equals(object?)\uF1C5 ,\nobject.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nMethods\nTestMethod1(bool, int)\nThis text inherited.\nParameters\nparm1 bool\uF1C5\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nReturns\nbool\uF1C5\nThis text inherited.\npublic class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1\npublic override bool TestMethod1(bool parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2927,7 +2981,7 @@ }, { "Number": 32, - "Text": "32 / 80Class Inheritdoc.Issue7035Namespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Inheritdoc.Issue7035Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsA()B()public class Inheritdoc.Issue7035public void A()public void B()", + "Text": "32 / 84\nClass Inheritdoc.Issue7035\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue7035\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nA()\nB()\npublic class Inheritdoc.Issue7035\npublic void A()\npublic void B()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3023,7 +3077,7 @@ }, { "Number": 33, - "Text": "33 / 80Class Inheritdoc.Issue7484Namespace: BuildFromProjectAssembly: BuildFromProject.dllThis is a test class to have something for DocFX to document.Inheritanceobject\uF1C5 ← Inheritdoc.Issue7484Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5RemarksWe're going to talk about things now.BoolReturningMethod(bool)Simple method to generate docs for.DoDadA string that could have something.ConstructorsIssue7484()This is a constructor to document.PropertiesDoDadA string that could have something.public class Inheritdoc.Issue7484public Issue7484()public string DoDad { get; }", + "Text": "33 / 84\nClass Inheritdoc.Issue7484\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nThis is a test class to have something for DocFX to document.\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue7484\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nRemarks\nWe're going to talk about things now.\nBoolReturningMethod(bool) Simple method to generate docs for.\nDoDad A string that could have something.\nConstructors\nIssue7484()\nThis is a constructor to document.\nProperties\nDoDad\nA string that could have something.\npublic class Inheritdoc.Issue7484\npublic Issue7484()\npublic string DoDad { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3134,7 +3188,7 @@ }, { "Number": 34, - "Text": "34 / 80Property Valuestring\uF1C5MethodsBoolReturningMethod(bool)Simple method to generate docs for.Parameterssource bool\uF1C5A meaningless boolean value, much like most questions in the world.Returnsbool\uF1C5An exactly equivalently meaningless boolean value, much like most answers in the world.RemarksI'd like to take a moment to thank all of those who helped me get to a place where I canwrite documentation like this.public bool BoolReturningMethod(bool source)", + "Text": "34 / 84\nProperty Value\nstring\uF1C5\nMethods\nBoolReturningMethod(bool)\nSimple method to generate docs for.\nParameters\nsource bool\uF1C5\nA meaningless boolean value, much like most questions in the world.\nReturns\nbool\uF1C5\nAn exactly equivalently meaningless boolean value, much like most answers in the world.\nRemarks\nI'd like to take a moment to thank all of those who helped me get to a place where I can\nwrite documentation like this.\npublic bool BoolReturningMethod(bool source)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -3167,7 +3221,7 @@ }, { "Number": 35, - "Text": "35 / 80Class Inheritdoc.Issue8101Namespace: BuildFromProjectAssembly: BuildFromProject.dllInheritanceobject\uF1C5 ← Inheritdoc.Issue8101Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsTween(float, float, float, Action<float>)Create a new tween.Parametersfrom float\uF1C5The starting value.to float\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.onChange Action\uF1C5<float\uF1C5>A callback that will be invoked every time the tween value changes.Returnspublic class Inheritdoc.Issue8101public static object Tween(float from, float to, float duration, Action onChange)", + "Text": "35 / 84\nClass Inheritdoc.Issue8101\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue8101\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nTween(float, float, float, Action)\nCreate a new tween.\nParameters\nfrom float\uF1C5\nThe starting value.\nto float\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nonChange Action\uF1C5 \nA callback that will be invoked every time the tween value changes.\nReturns\npublic class Inheritdoc.Issue8101\npublic static object Tween(float from, float to, float duration,\nAction onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3308,7 +3362,7 @@ }, { "Number": 36, - "Text": "36 / 80object\uF1C5The newly created tween instance.Tween(int, int, float, Action)Create a new tween.Parametersfrom int\uF1C5The starting value.to int\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.onChange Action\uF1C5A callback that will be invoked every time the tween value changes.Returnsobject\uF1C5The newly created tween instance.public static object Tween(int from, int to, float duration, Action onChange)", + "Text": "36 / 84\nobject\uF1C5\nThe newly created tween instance.\nTween(int, int, float, Action)\nCreate a new tween.\nParameters\nfrom int\uF1C5\nThe starting value.\nto int\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nonChange Action\uF1C5 \nA callback that will be invoked every time the tween value changes.\nReturns\nobject\uF1C5\nThe newly created tween instance.\npublic static object Tween(int from, int to, float duration, Action onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3377,7 +3431,7 @@ }, { "Number": 37, - "Text": "37 / 80Class Issue8725Namespace: BuildFromProjectAssembly: BuildFromProject.dllA nice classInheritanceobject\uF1C5 ← Issue8725Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsMoreOperations()Another nice operationMyOperation()A nice operationSee AlsoClass1public class Issue8725public void MoreOperations()public void MyOperation()", + "Text": "37 / 84\nClass Inheritdoc.Issue9736\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue9736\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class Inheritdoc.Issue9736", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3468,22 +3522,22 @@ "Top": 0 } } - }, - { - "Goto": { - "PageNumber": 15, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } } ] }, { "Number": 38, - "Text": "38 / 80Struct Inheritdoc.Issue8129Namespace: BuildFromProjectAssembly: BuildFromProject.dllInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5, object.ToString()\uF1C5ConstructorsIssue8129(string)Parametersfoo string\uF1C5public struct Inheritdoc.Issue8129public Issue8129(string foo)", + "Text": "38 / 84\nClass Inheritdoc.Issue9736.JsonApiOptions\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 ← Inheritdoc.Issue9736.JsonApiOptions\nImplements\nInheritdoc.Issue9736.IJsonApiOptions\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nProperties\nUseRelativeLinks\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\npublic sealed class Inheritdoc.Issue9736.JsonApiOptions :\nInheritdoc.Issue9736.IJsonApiOptions\npublic bool UseRelativeLinks { get; set; }\noptions.UseRelativeLinks = true;\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",", "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" }, @@ -3539,13 +3593,13 @@ "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { "Goto": { @@ -3555,61 +3609,10 @@ "Top": 0 } } - } - ] - }, - { - "Number": 39, - "Text": "39 / 80Interface Class1.IIssue8948Namespace: BuildFromProjectAssembly: BuildFromProject.dllMethodsDoNothing()Does nothing with generic type T.Type ParametersTA generic type.public interface Class1.IIssue8948void DoNothing()", - "Links": [ - { - "Goto": { - "PageNumber": 8, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - } - ] - }, - { - "Number": 40, - "Text": "40 / 80Interface IInheritdocNamespace: BuildFromProjectAssembly: BuildFromProject.dllMethodsIssue7629()This method should do something...public interface IInheritdocvoid Issue7629()", - "Links": [ - { - "Goto": { - "PageNumber": 8, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - } - ] - }, - { - "Number": 41, - "Text": "41 / 80Enum Class1.Issue9260Namespace: BuildFromProjectAssembly: BuildFromProject.dllFieldsValue = 0This is a regular enum value.This is a remarks section. Very important remarks about Value go here.OldAndUnusedValue = 1This is old and unused. You shouldn't use it anymore.Don't use this, seriously! Use Value instead.OldAndUnusedValue2 = 2This is old and unused. You shouldn't use it anymore.Don't use this, seriously! Use Value instead.public enum Class1.Issue9260", - "Links": [ - { - "Goto": { - "PageNumber": 8, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - } - ] - }, - { - "Number": 42, - "Text": "42 / 80Namespace BuildFromVBSourceCodeClassesBaseClass1This is the BaseClassClass1This is summary from vb class...", - "Links": [ + }, { "Goto": { - "PageNumber": 43, + "PageNumber": 38, "Type": 2, "Coordinates": { "Top": 0 @@ -3628,8 +3631,13 @@ ] }, { - "Number": 43, - "Text": "43 / 80Class BaseClass1Namespace: BuildFromVBSourceCodeThis is the BaseClassInheritanceobject\uF1C5 ← BaseClass1DerivedClass1Inherited Membersobject.Equals(object)\uF1C5, object.Equals(object, object)\uF1C5, object.Finalize()\uF1C5,object.GetHashCode()\uF1C5, object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5,object.ReferenceEquals(object, object)\uF1C5, object.ToString()\uF1C5MethodsWithDeclarationKeyword(Class1)Parameterskeyword Class1ReturnsDateTime\uF1C5public abstract class BaseClass1public abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Number": 39, + "Text": "39 / 84\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", + "Links": [] + }, + { + "Number": 40, + "Text": "40 / 84\nClass Issue8725\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nA nice class\nInheritance\nobject\uF1C5 ← Issue8725\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nMoreOperations()\nAnother nice operation\nMyOperation()\nA nice operation\nSee Also\nClass1\npublic class Issue8725\npublic void MoreOperations()\npublic void MyOperation()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3658,15 +3666,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -3712,27 +3711,9 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" - }, - { - "Goto": { - "PageNumber": 42, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } - }, { "Goto": { - "PageNumber": 43, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 @@ -3741,7 +3722,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 40, "Type": 2, "Coordinates": { "Top": 0 @@ -3750,7 +3731,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 15, "Type": 2, "Coordinates": { "Top": 0 @@ -3760,18 +3741,9 @@ ] }, { - "Number": 44, - "Text": "44 / 80Class Class1Namespace: BuildFromVBSourceCodeThis is summary from vb class...Inheritanceobject\uF1C5 ← BaseClass1 ← Class1Inherited MembersBaseClass1.WithDeclarationKeyword(Class1), object.Equals(object)\uF1C5, object.Equals(object,object)\uF1C5, object.Finalize()\uF1C5, object.GetHashCode()\uF1C5, object.GetType()\uF1C5,object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object, object)\uF1C5, object.ToString()\uF1C5FieldsValueClassThis is a Value typeField ValueClass1PropertiesKeywordProperty ValueClass1MethodsValue(string)public class Class1 : BaseClass1public Class1 ValueClass[Obsolete(\"This member is obsolete.\", true)]public Class1 Keyword { get; }", + "Number": 41, + "Text": "41 / 84\nStruct Inheritdoc.Issue8129\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nConstructors\nIssue8129(string)\nParameters\nfoo string\uF1C5\npublic struct Inheritdoc.Issue8129\npublic Issue8129(string foo)", "Links": [ - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" }, @@ -3790,18 +3762,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -3820,15 +3780,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" }, @@ -3847,18 +3798,351 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.string" + }, { "Goto": { - "PageNumber": 42, + "PageNumber": 8, "Type": 2, "Coordinates": { "Top": 0 } } - }, + } + ] + }, + { + "Number": 42, + "Text": "42 / 84\nInterface Class1.IIssue8948\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nDoNothing()\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\npublic interface Class1.IIssue8948\nvoid DoNothing()", + "Links": [ + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 43, + "Text": "43 / 84\nInterface IInheritdoc\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nIssue7629()\nThis method should do something...\npublic interface IInheritdoc\nvoid Issue7629()", + "Links": [ + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 44, + "Text": "44 / 84\nInterface Inheritdoc.Issue9736.IJsonApi\nOptions\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nProperties\nUseRelativeLinks\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\npublic interface Inheritdoc.Issue9736.IJsonApiOptions\nbool UseRelativeLinks { get; }\noptions.UseRelativeLinks = true;\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 45, + "Text": "45 / 84\nEnum Class1.Issue9260\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nFields\nValue = 0\nThis is a regular enum value.\nThis is a remarks section. Very important remarks about Value go here.\nOldAndUnusedValue = 1\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\nOldAndUnusedValue2 = 2\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\npublic enum Class1.Issue9260", + "Links": [ + { + "Goto": { + "PageNumber": 8, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 46, + "Text": "46 / 84\nNamespace BuildFromVBSourceCode\nClasses\nBaseClass1\nThis is the BaseClass\nClass1\nThis is summary from vb class...", + "Links": [ + { + "Goto": { + "PageNumber": 47, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 47, + "Text": "47 / 84\nClass BaseClass1\nNamespace: BuildFromVBSourceCode\nThis is the BaseClass\nInheritance\nobject\uF1C5 ← BaseClass1\nDerived\nClass1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nMethods\nWithDeclarationKeyword(Class1)\nParameters\nkeyword Class1\nReturns\nDateTime\uF1C5\npublic abstract class BaseClass1\npublic abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Goto": { + "PageNumber": 46, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 47, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 48, + "Text": "48 / 84\nClass Class1\nNamespace: BuildFromVBSourceCode\nThis is summary from vb class...\nInheritance\nobject\uF1C5 ← BaseClass1 ← Class1\nInherited Members\nBaseClass1.WithDeclarationKeyword(Class1), object.Equals(object)\uF1C5 , object.Equals(object,\nobject)\uF1C5 , object.Finalize()\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nFields\nValueClass\nThis is a Value type\nField Value\nClass1\nProperties\nKeyword\nProperty Value\nClass1\nMethods\nValue(string)\npublic class Class1 : BaseClass1\npublic Class1 ValueClass\n[Obsolete(\"This member is obsolete.\", true)]\npublic Class1 Keyword { get; }", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Goto": { + "PageNumber": 46, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, { "Goto": { - "PageNumber": 43, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -3867,7 +4151,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -3876,7 +4160,7 @@ }, { "Goto": { - "PageNumber": 43, + "PageNumber": 47, "Coordinates": { "Left": 0, "Top": 411.75 @@ -3885,7 +4169,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -3894,7 +4178,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -3904,8 +4188,8 @@ ] }, { - "Number": 45, - "Text": "45 / 80This is a FunctionParametersname string\uF1C5Name as the String valueReturnsint\uF1C5Returns AhoooWithDeclarationKeyword(Class1)What is Sub?Parameterskeyword Class1ReturnsDateTime\uF1C5public int Value(string name)public override DateTime WithDeclarationKeyword(Class1 keyword)", + "Number": 49, + "Text": "49 / 84\nThis is a Function\nParameters\nname string\uF1C5\nName as the String value\nReturns\nint\uF1C5\nReturns Ahooo\nWithDeclarationKeyword(Class1)\nWhat is Sub?\nParameters\nkeyword Class1\nReturns\nDateTime\uF1C5\npublic int Value(string name)\npublic override DateTime WithDeclarationKeyword(Class1 keyword)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -3936,7 +4220,7 @@ }, { "Goto": { - "PageNumber": 44, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -3946,12 +4230,12 @@ ] }, { - "Number": 46, - "Text": "46 / 80Namespace CatLibraryNamespacesCatLibrary.CoreClassesCatHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classCatExceptionComplexICatExtensionIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classTomTom class is only inherit from Object. Not any member inside itself.TomFromBaseClassTomFromBaseClass inherits from @InterfacesIAnimalThis is basic interface of all animal.ICatCat's interface", + "Number": 50, + "Text": "50 / 84\nNamespace CatLibrary\nNamespaces\nCatLibrary.Core\nClasses\nCat\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nCatException\nComplex\nICatExtension\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nTom\nTom class is only inherit from Object. Not any member inside itself.\nTomFromBaseClass\nTomFromBaseClass inherits from @\nInterfaces\nIAnimal\nThis is basic interface of all animal.\nICat\nCat's interface", "Links": [ { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -3960,7 +4244,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -3975,7 +4259,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -3984,7 +4268,7 @@ }, { "Goto": { - "PageNumber": 65, + "PageNumber": 69, "Type": 2, "Coordinates": { "Top": 0 @@ -3993,7 +4277,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -4002,7 +4286,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -4011,7 +4295,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -4020,7 +4304,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -4029,7 +4313,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -4039,12 +4323,12 @@ ] }, { - "Number": 47, - "Text": "47 / 80DelegatesFakeDelegateFake delegateMRefDelegateGeneric delegate with many constrains.MRefNormalDelegateDelegate in the namespace", + "Number": 51, + "Text": "51 / 84\nDelegates\nFakeDelegate\nFake delegate\nMRefDelegate\nGeneric delegate with many constrains.\nMRefNormalDelegate\nDelegate in the namespace", "Links": [ { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -4053,7 +4337,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -4062,7 +4346,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -4072,12 +4356,12 @@ ] }, { - "Number": 48, - "Text": "48 / 80Namespace CatLibrary.CoreClassesContainersRefType.ContainersRefTypeChildExplicitLayoutClassIssue231Issue231StructsContainersRefTypeStruct ContainersRefTypeInterfacesContainersRefType.ContainersRefTypeChildInterfaceEnumsContainersRefType.ColorTypeEnumeration ColorTypeDelegatesContainersRefType.ContainersRefTypeDelegateDelegate ContainersRefTypeDelegate", + "Number": 52, + "Text": "52 / 84\nNamespace CatLibrary.Core\nClasses\nContainersRefType.ContainersRefTypeChild\nExplicitLayoutClass\nIssue231\nIssue231\nStructs\nContainersRefType\nStruct ContainersRefType\nInterfaces\nContainersRefType.ContainersRefTypeChildInterface\nEnums\nContainersRefType.ColorType\nEnumeration ColorType\nDelegates\nContainersRefType.ContainersRefTypeDelegate\nDelegate ContainersRefTypeDelegate", "Links": [ { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -4086,7 +4370,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -4095,7 +4379,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -4104,7 +4388,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -4113,7 +4397,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -4122,7 +4406,7 @@ }, { "Goto": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -4131,7 +4415,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -4140,7 +4424,7 @@ }, { "Goto": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -4150,8 +4434,8 @@ ] }, { - "Number": 49, - "Text": "49 / 80Class ContainersRefType.ContainersRefTypeChildNamespace: CatLibrary.CoreAssembly: CatLibrary.Core.dllInheritanceobject\uF1C5 ← ContainersRefType.ContainersRefTypeChildInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class ContainersRefType.ContainersRefTypeChild", + "Number": 53, + "Text": "53 / 84\nClass ContainersRefType.ContainersRefType\nChild\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ← ContainersRefType.ContainersRefTypeChild\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class ContainersRefType.ContainersRefTypeChild", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4227,7 +4511,7 @@ }, { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -4236,7 +4520,7 @@ }, { "Goto": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -4246,8 +4530,8 @@ ] }, { - "Number": 50, - "Text": "50 / 80Class ExplicitLayoutClassNamespace: CatLibrary.CoreAssembly: CatLibrary.Core.dllInheritanceobject\uF1C5 ← ExplicitLayoutClassInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class ExplicitLayoutClass", + "Number": 54, + "Text": "54 / 84\nClass ExplicitLayoutClass\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ← ExplicitLayoutClass\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class ExplicitLayoutClass", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4323,7 +4607,7 @@ }, { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -4332,7 +4616,7 @@ }, { "Goto": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -4342,8 +4626,8 @@ ] }, { - "Number": 51, - "Text": "51 / 80Class Issue231Namespace: CatLibrary.CoreAssembly: CatLibrary.dll, CatLibrary.Core.dllInheritanceobject\uF1C5 ← Issue231Inherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsBar(ContainersRefType)Parametersc ContainersRefTypeFoo(ContainersRefType)Parametersc ContainersRefTypepublic static class Issue231public static void Bar(this ContainersRefType c)public static void Foo(this ContainersRefType c)", + "Number": 55, + "Text": "55 / 84\nClass Issue231\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.dll, CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ← Issue231\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nBar(ContainersRefType)\nParameters\nc ContainersRefType\nFoo(ContainersRefType)\nParameters\nc ContainersRefType\npublic static class Issue231\npublic static void Bar(this ContainersRefType c)\npublic static void Foo(this ContainersRefType c)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4419,7 +4703,7 @@ }, { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -4428,7 +4712,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -4437,7 +4721,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -4446,7 +4730,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -4456,8 +4740,8 @@ ] }, { - "Number": 52, - "Text": "52 / 80Struct ContainersRefTypeNamespace: CatLibrary.CoreAssembly: CatLibrary.Core.dllStruct ContainersRefTypeInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5, object.ToString()\uF1C5Extension MethodsIssue231.Bar(ContainersRefType), Issue231.Foo(ContainersRefType)FieldsColorCountColorCountField Valuelong\uF1C5PropertiesGetColorCountGetColorCountProperty Valuelong\uF1C5Methodspublic struct ContainersRefTypepublic long ColorCountpublic long GetColorCount { get; }", + "Number": 56, + "Text": "56 / 84\nStruct ContainersRefType\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nStruct ContainersRefType\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\nExtension Methods\nIssue231.Bar(ContainersRefType), Issue231.Foo(ContainersRefType)\nFields\nColorCount\nColorCount\nField Value\nlong\uF1C5\nProperties\nGetColorCount\nGetColorCount\nProperty Value\nlong\uF1C5\nMethods\npublic struct ContainersRefType\npublic long ColorCount\npublic long GetColorCount { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" @@ -4533,7 +4817,7 @@ }, { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -4542,7 +4826,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Coordinates": { "Left": 0, "Top": 480 @@ -4551,7 +4835,7 @@ }, { "Goto": { - "PageNumber": 51, + "PageNumber": 55, "Coordinates": { "Left": 0, "Top": 346.5 @@ -4561,8 +4845,8 @@ ] }, { - "Number": 53, - "Text": "53 / 80ContainersRefTypeNonRefMethod(params object[])ContainersRefTypeNonRefMethodarrayParametersparmsArray object\uF1C5[]Returnsint\uF1C5ContainersRefTypeEventHandlerEvent TypeEventHandler\uF1C5public static int ContainersRefTypeNonRefMethod(params object[] parmsArray)public event EventHandler ContainersRefTypeEventHandler", + "Number": 57, + "Text": "57 / 84\nContainersRefTypeNonRefMethod(params object[])\nContainersRefTypeNonRefMethod\narray\nParameters\nparmsArray object\uF1C5 []\nReturns\nint\uF1C5\nContainersRefTypeEventHandler\nEvent Type\nEventHandler\uF1C5\npublic static int ContainersRefTypeNonRefMethod(params object[] parmsArray)\npublic event EventHandler ContainersRefTypeEventHandler", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4594,12 +4878,12 @@ ] }, { - "Number": 54, - "Text": "54 / 80Interface ContainersRefType.ContainersRefTypeChildInterfaceNamespace: CatLibrary.CoreAssembly: CatLibrary.Core.dllpublic interface ContainersRefType.ContainersRefTypeChildInterface", + "Number": 58, + "Text": "58 / 84\nInterface ContainersRefType.ContainersRef\nTypeChildInterface\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\npublic interface ContainersRefType.ContainersRefTypeChildInterface", "Links": [ { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -4609,12 +4893,12 @@ ] }, { - "Number": 55, - "Text": "55 / 80Enum ContainersRefType.ColorTypeNamespace: CatLibrary.CoreAssembly: CatLibrary.Core.dllEnumeration ColorTypeFieldsRed = 0redBlue = 1blueYellow = 2yellowpublic enum ContainersRefType.ColorType", + "Number": 59, + "Text": "59 / 84\nEnum ContainersRefType.ColorType\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nEnumeration ColorType\nFields\nRed = 0\nred\nBlue = 1\nblue\nYellow = 2\nyellow\npublic enum ContainersRefType.ColorType", "Links": [ { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -4624,12 +4908,12 @@ ] }, { - "Number": 56, - "Text": "56 / 80Delegate ContainersRefType.ContainersRefTypeDelegateNamespace: CatLibrary.CoreAssembly: CatLibrary.Core.dllDelegate ContainersRefTypeDelegatepublic delegate void ContainersRefType.ContainersRefTypeDelegate()", + "Number": 60, + "Text": "60 / 84\nDelegate ContainersRefType.ContainersRef\nTypeDelegate\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nDelegate ContainersRefTypeDelegate\npublic delegate void ContainersRefType.ContainersRefTypeDelegate()", "Links": [ { "Goto": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -4639,8 +4923,8 @@ ] }, { - "Number": 57, - "Text": "57 / 80Class CatNamespace: CatLibraryAssembly: CatLibrary.dllHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classType ParametersTThis type should be class and can new instance.KThis type is a struct type, class type can't be used for this parameter.Inheritanceobject\uF1C5 ← CatImplementsICat, IAnimalInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5Extension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long)Examples[Serializable][Obsolete]public class Cat : ICat, IAnimal where T : class, new() where K : struct", + "Number": 61, + "Text": "61 / 84\nClass Cat\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nType Parameters\nT\nThis type should be class and can new instance.\nK\nThis type is a struct type, class type can't be used for this parameter.\nInheritance\nobject\uF1C5 ← Cat\nImplements\nICat, IAnimal\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long)\nExamples\n[Serializable]\n[Obsolete]\npublic class Cat : ICat, IAnimal where T : class, new() where K : struct", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4716,7 +5000,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -4731,7 +5015,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -4740,7 +5024,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -4749,7 +5033,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -4758,7 +5042,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Coordinates": { "Left": 0, "Top": 390 @@ -4767,7 +5051,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Coordinates": { "Left": 0, "Top": 136.5 @@ -4777,13 +5061,13 @@ ] }, { - "Number": 58, - "Text": "58 / 80Here's example of how to create an instance of this class. As T is limited with class and K islimited with struct.As you see, here we bring in pointer so we need to add unsafe keyword.RemarksHere's all the content you can see in this class.ConstructorsCat()Default constructor.Cat(T)Constructor with one generic parameter.ParametersownType TThis parameter type defined by class.Cat(string, out int, string, bool)It's a complex constructor. The parameter will have some attributes.Parametersvar a = new Cat(object, int)();int catNumber = new int();unsafe{ a.GetFeetLength(catNumber);}public Cat()public Cat(T ownType)public Cat(string nickName, out int age, string realName, bool isHealthy)", + "Number": 62, + "Text": "62 / 84\nHere's example of how to create an instance of this class. As T is limited with class and K is\nlimited with struct.\nAs you see, here we bring in pointer so we need to add unsafe keyword.\nRemarks\nHere's all the content you can see in this class.\nConstructors\nCat()\nDefault constructor.\nCat(T)\nConstructor with one generic parameter.\nParameters\nownType T\nThis parameter type defined by class.\nCat(string, out int, string, bool)\nIt's a complex constructor. The parameter will have some attributes.\nParameters\nvar a = new Cat(object, int)();\nint catNumber = new int();\nunsafe\n{ \na.GetFeetLength(catNumber);\n}\npublic Cat()\npublic Cat(T ownType)\npublic Cat(string nickName, out int age, string realName, bool isHealthy)", "Links": [] }, { - "Number": 59, - "Text": "59 / 80nickName string\uF1C5it's string type.age int\uF1C5It's an out and ref parameter.realName string\uF1C5It's an out paramter.isHealthy bool\uF1C5It's an in parameter.FieldsisHealthyField with attribute.Field Valuebool\uF1C5PropertiesAgeHint cat's age.Property Valueint\uF1C5Name[ContextStatic][NonSerialized][Obsolete]public bool isHealthy[Obsolete]protected int Age { get; set; }", + "Number": 63, + "Text": "63 / 84\nnickName string\uF1C5\nit's string type.\nage int\uF1C5\nIt's an out and ref parameter.\nrealName string\uF1C5\nIt's an out paramter.\nisHealthy bool\uF1C5\nIt's an in parameter.\nFields\nisHealthy\nField with attribute.\nField Value\nbool\uF1C5\nProperties\nAge\nHint cat's age.\nProperty Value\nint\uF1C5\nName\n[ContextStatic]\n[NonSerialized]\n[Obsolete]\npublic bool isHealthy\n[Obsolete]\nprotected int Age { get; set; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -4842,8 +5126,8 @@ ] }, { - "Number": 60, - "Text": "60 / 80EII property.Property Valuestring\uF1C5this[string]This is index property of Cat. You can see that the visibility is different between get and setmethod.Property Valueint\uF1C5MethodsCalculateFood(DateTime)It's a method with complex return type.Parametersdate DateTime\uF1C5Date time to now.ReturnsDictionary\uF1C5>It's a relationship map of different kind food.Equals(object)Override the method of Object.Equals(object obj).public string Name { get; }public int this[string a] { protected get; set; }public Dictionary> CalculateFood(DateTime date)public override bool Equals(object obj)", + "Number": 64, + "Text": "64 / 84\nEII property.\nProperty Value\nstring\uF1C5\nthis[string]\nThis is index property of Cat. You can see that the visibility is different between get and set\nmethod.\nProperty Value\nint\uF1C5\nMethods\nCalculateFood(DateTime)\nIt's a method with complex return type.\nParameters\ndate DateTime\uF1C5\nDate time to now.\nReturns\nDictionary\uF1C5 >\nIt's a relationship map of different kind food.\nEquals(object)\nOverride the method of Object.Equals(object obj).\npublic string Name { get; }\npublic int this[string a] { protected get; set; }\npublic Dictionary> CalculateFood(DateTime date)\npublic override bool Equals(object obj)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -4911,8 +5195,8 @@ ] }, { - "Number": 61, - "Text": "61 / 80Parametersobj object\uF1C5Can pass any class type.Returnsbool\uF1C5The return value tell you whehter the compare operation is successful.GetTailLength(int*, params object[])It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.ParameterscatName int\uF1C5*Thie represent for cat name length.parameters object\uF1C5[]Optional parameters.Returnslong\uF1C5Return cat tail's length.Jump(T, K, ref bool)This method have attribute above it.ParametersownType TType come from class define.public long GetTailLength(int* catName, params object[] parameters)[Conditional(\"Debug\")]public void Jump(T ownType, K anotherOwnType, ref bool cheat)", + "Number": 65, + "Text": "65 / 84\nParameters\nobj object\uF1C5\nCan pass any class type.\nReturns\nbool\uF1C5\nThe return value tell you whehter the compare operation is successful.\nGetTailLength(int*, params object[])\nIt's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.\nParameters\ncatName int\uF1C5 *\nThie represent for cat name length.\nparameters object\uF1C5 []\nOptional parameters.\nReturns\nlong\uF1C5\nReturn cat tail's length.\nJump(T, K, ref bool)\nThis method have attribute above it.\nParameters\nownType T\nType come from class define.\npublic long GetTailLength(int* catName, params object[] parameters)\n[Conditional(\"Debug\")]\npublic void Jump(T ownType, K anotherOwnType, ref bool cheat)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4962,8 +5246,8 @@ ] }, { - "Number": 62, - "Text": "62 / 80anotherOwnType KType come from class define.cheat bool\uF1C5Hint whether this cat has cheat mode.ExceptionsArgumentException\uF1C5This is an argument exceptionownEatEat event of this catEvent TypeEventHandler\uF1C5Operatorsoperator +(Cat, int)Addition operator of this class.Parameterslsr Cat..rsr int\uF1C5~~Returnsint\uF1C5[Obsolete(\"This _event handler_ is deprecated.\")]public event EventHandler ownEatpublic static int operator +(Cat lsr, int rsr)", + "Number": 66, + "Text": "66 / 84\nanotherOwnType K\nType come from class define.\ncheat bool\uF1C5\nHint whether this cat has cheat mode.\nExceptions\nArgumentException\uF1C5\nThis is an argument exception\nownEat\nEat event of this cat\nEvent Type\nEventHandler\uF1C5\nOperators\noperator +(Cat, int)\nAddition operator of this class.\nParameters\nlsr Cat\n..\nrsr int\uF1C5\n~~\nReturns\nint\uF1C5\n[Obsolete(\"This _event handler_ is deprecated.\")]\npublic event EventHandler ownEat\npublic static int operator +(Cat lsr, int rsr)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" @@ -5012,7 +5296,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5022,8 +5306,8 @@ ] }, { - "Number": 63, - "Text": "63 / 80Result with int type.explicit operator Tom(Cat)Expilicit operator of this class.It means this cat can evolve to change to Tom. Tom and Jerry.Parameterssrc CatInstance of this class.ReturnsTomAdvanced class type of cat.operator -(Cat, int)Similar with operaotr +, refer to that topic.Parameterslsr Catrsr int\uF1C5Returnsint\uF1C5public static explicit operator Tom(Cat src)public static int operator -(Cat lsr, int rsr)", + "Number": 67, + "Text": "67 / 84\nResult with int type.\nexplicit operator Tom(Cat)\nExpilicit operator of this class.\nIt means this cat can evolve to change to Tom. Tom and Jerry.\nParameters\nsrc Cat\nInstance of this class.\nReturns\nTom\nAdvanced class type of cat.\noperator -(Cat, int)\nSimilar with operaotr +, refer to that topic.\nParameters\nlsr Cat\nrsr int\uF1C5\nReturns\nint\uF1C5\npublic static explicit operator Tom(Cat src)\npublic static int operator -(Cat lsr, int rsr)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -5045,7 +5329,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5054,7 +5338,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5063,7 +5347,7 @@ }, { "Goto": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -5073,8 +5357,8 @@ ] }, { - "Number": 64, - "Text": "64 / 80Class CatExceptionNamespace: CatLibraryAssembly: CatLibrary.dllType ParametersTInheritanceobject\uF1C5 ← Exception\uF1C5 ← CatExceptionImplementsISerializable\uF1C5Inherited MembersException.GetBaseException()\uF1C5, Exception.GetType()\uF1C5, Exception.ToString()\uF1C5,Exception.Data\uF1C5, Exception.HelpLink\uF1C5, Exception.HResult\uF1C5, Exception.InnerException\uF1C5,Exception.Message\uF1C5, Exception.Source\uF1C5, Exception.StackTrace\uF1C5, Exception.TargetSite\uF1C5,Exception.SerializeObjectState\uF1C5, object.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5,object.GetHashCode()\uF1C5, object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5,object.ReferenceEquals(object?, object?)\uF1C5, object.ToString()\uF1C5public class CatException : Exception, ISerializable", + "Number": 68, + "Text": "68 / 84\nClass CatException\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 ← Exception\uF1C5 ← CatException\nImplements\nISerializable\uF1C5\nInherited Members\nException.GetBaseException()\uF1C5 , Exception.GetType()\uF1C5 , Exception.ToString()\uF1C5 ,\nException.Data\uF1C5 , Exception.HelpLink\uF1C5 , Exception.HResult\uF1C5 , Exception.InnerException\uF1C5 ,\nException.Message\uF1C5 , Exception.Source\uF1C5 , Exception.StackTrace\uF1C5 , Exception.TargetSite\uF1C5 ,\nException.SerializeObjectState\uF1C5 , object.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object?, object?)\uF1C5 , object.ToString()\uF1C5\npublic class CatException : Exception, ISerializable", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5276,7 +5560,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -5285,7 +5569,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -5295,8 +5579,8 @@ ] }, { - "Number": 65, - "Text": "65 / 80Class ComplexNamespace: CatLibraryAssembly: CatLibrary.dllType ParametersTJInheritanceobject\uF1C5 ← ComplexInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5public class Complex", + "Number": 69, + "Text": "69 / 84\nClass Complex\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nJ\nInheritance\nobject\uF1C5 ← Complex\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\npublic class Complex", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5372,7 +5656,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -5381,7 +5665,7 @@ }, { "Goto": { - "PageNumber": 65, + "PageNumber": 69, "Type": 2, "Coordinates": { "Top": 0 @@ -5391,8 +5675,8 @@ ] }, { - "Number": 66, - "Text": "66 / 80Class ICatExtensionNamespace: CatLibraryAssembly: CatLibrary.dllIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classInheritanceobject\uF1C5 ← ICatExtensionInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsPlay(ICat, ColorType)Extension method to let cat playParametersicat ICatCattoy ContainersRefType.ColorTypeSomething to playSleep(ICat, long)Extension method hint that how long the cat can sleep.public static class ICatExtensionpublic static void Play(this ICat icat, ContainersRefType.ColorType toy)", + "Number": 70, + "Text": "70 / 84\nClass ICatExtension\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nInheritance\nobject\uF1C5 ← ICatExtension\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nPlay(ICat, ColorType)\nExtension method to let cat play\nParameters\nicat ICat\nCat\ntoy ContainersRefType.ColorType\nSomething to play\nSleep(ICat, long)\nExtension method hint that how long the cat can sleep.\npublic static class ICatExtension\npublic static void Play(this ICat icat, ContainersRefType.ColorType toy)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5468,7 +5752,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -5477,7 +5761,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5486,7 +5770,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5495,7 +5779,7 @@ }, { "Goto": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -5504,7 +5788,7 @@ }, { "Goto": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -5514,8 +5798,8 @@ ] }, { - "Number": 67, - "Text": "67 / 80Parametersicat ICatThe type will be extended.hours long\uF1C5The length of sleep.public static void Sleep(this ICat icat, long hours)", + "Number": 71, + "Text": "71 / 84\nParameters\nicat ICat\nThe type will be extended.\nhours long\uF1C5\nThe length of sleep.\npublic static void Sleep(this ICat icat, long hours)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -5528,7 +5812,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5538,8 +5822,8 @@ ] }, { - "Number": 68, - "Text": "68 / 80Class TomNamespace: CatLibraryAssembly: CatLibrary.dllTom class is only inherit from Object. Not any member inside itself.Inheritanceobject\uF1C5 ← TomDerivedTomFromBaseClassInherited Membersobject.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5MethodsTomMethod(Complex, Tuple)This is a Tom Method with complex type as returnParametersa ComplexA complex inputb Tuple\uF1C5Another complex inputReturnspublic class Tompublic Complex TomMethod(Complex a, Tuple b)", + "Number": 72, + "Text": "72 / 84\nClass Tom\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTom class is only inherit from Object. Not any member inside itself.\nInheritance\nobject\uF1C5 ← Tom\nDerived\nTomFromBaseClass\nInherited Members\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nTomMethod(Complex, Tuple)\nThis is a Tom Method with complex type as return\nParameters\na Complex\nA complex input\nb Tuple\uF1C5 \nAnother complex input\nReturns\npublic class Tom\npublic Complex TomMethod(Complex a, Tuple b)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5633,7 +5917,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -5642,7 +5926,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5651,7 +5935,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -5660,7 +5944,7 @@ }, { "Goto": { - "PageNumber": 65, + "PageNumber": 69, "Type": 2, "Coordinates": { "Top": 0 @@ -5669,7 +5953,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -5678,7 +5962,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -5687,7 +5971,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5697,8 +5981,8 @@ ] }, { - "Number": 69, - "Text": "69 / 80ComplexComplex TomFromBaseClassExceptionsNotImplementedException\uF1C5This is not implementedArgumentException\uF1C5This is the exception to be thrown when implementedCatExceptionThis is the exception in current documentation", + "Number": 73, + "Text": "73 / 84\nComplex\nComplex TomFromBaseClass\nExceptions\nNotImplementedException\uF1C5\nThis is not implemented\nArgumentException\uF1C5\nThis is the exception to be thrown when implemented\nCatException\nThis is the exception in current documentation", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -5729,7 +6013,7 @@ }, { "Goto": { - "PageNumber": 65, + "PageNumber": 69, "Type": 2, "Coordinates": { "Top": 0 @@ -5738,7 +6022,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -5759,7 +6043,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -5769,8 +6053,8 @@ ] }, { - "Number": 70, - "Text": "70 / 80Class TomFromBaseClassNamespace: CatLibraryAssembly: CatLibrary.dllTomFromBaseClass inherits from @Inheritanceobject\uF1C5 ← Tom ← TomFromBaseClassInherited MembersTom.TomMethod(Complex, Tuple),object.Equals(object?)\uF1C5, object.Equals(object?, object?)\uF1C5, object.GetHashCode()\uF1C5,object.GetType()\uF1C5, object.MemberwiseClone()\uF1C5, object.ReferenceEquals(object?, object?)\uF1C5,object.ToString()\uF1C5ConstructorsTomFromBaseClass(int)This is a #ctor with parameterParametersk int\uF1C5public class TomFromBaseClass : Tompublic TomFromBaseClass(int k)", + "Number": 74, + "Text": "74 / 84\nClass TomFromBaseClass\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTomFromBaseClass inherits from @\nInheritance\nobject\uF1C5 ← Tom ← TomFromBaseClass\nInherited Members\nTom.TomMethod(Complex, Tuple),\nobject.Equals(object?)\uF1C5 , object.Equals(object?, object?)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object?, object?)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nTomFromBaseClass(int)\nThis is a #ctor with parameter\nParameters\nk int\uF1C5\npublic class TomFromBaseClass : Tom\npublic TomFromBaseClass(int k)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5855,7 +6139,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -5864,7 +6148,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5873,7 +6157,7 @@ }, { "Goto": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -5882,7 +6166,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Coordinates": { "Left": 0, "Top": 393.75 @@ -5892,8 +6176,8 @@ ] }, { - "Number": 71, - "Text": "71 / 80Interface IAnimalNamespace: CatLibraryAssembly: CatLibrary.dllThis is basic interface of all animal.PropertiesNameName of Animal.Property Valuestring\uF1C5this[int]Return specific number animal's name.Property Valuestring\uF1C5MethodsEat()Animal's eat method.Eat(Tool)Overload method of eat. This define the animal eat by which tool.public interface IAnimalstring Name { get; }string this[int index] { get; }void Eat()", + "Number": 75, + "Text": "75 / 84\nInterface IAnimal\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nThis is basic interface of all animal.\nProperties\nName\nName of Animal.\nProperty Value\nstring\uF1C5\nthis[int]\nReturn specific number animal's name.\nProperty Value\nstring\uF1C5\nMethods\nEat()\nAnimal's eat method.\nEat(Tool)\nOverload method of eat. This define the animal eat by which tool.\npublic interface IAnimal\nstring Name { get; }\nstring this[int index] { get; }\nvoid Eat()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -5915,7 +6199,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -5925,8 +6209,8 @@ ] }, { - "Number": 72, - "Text": "72 / 80Parameterstool ToolTool name.Type ParametersToolIt's a class type.Eat(string)Feed the animal with some foodParametersfood string\uF1C5Food to eatvoid Eat(Tool tool) where Tool : classvoid Eat(string food)", + "Number": 76, + "Text": "76 / 84\nParameters\ntool Tool\nTool name.\nType Parameters\nTool\nIt's a class type.\nEat(string)\nFeed the animal with some food\nParameters\nfood string\uF1C5\nFood to eat\nvoid Eat(Tool tool) where Tool : class\nvoid Eat(string food)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -5940,8 +6224,8 @@ ] }, { - "Number": 73, - "Text": "73 / 80Interface ICatNamespace: CatLibraryAssembly: CatLibrary.dllCat's interfaceImplementsIAnimalExtension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long)eateat event of cat. Every cat must implement this event.Event TypeEventHandler\uF1C5public interface ICat : IAnimalevent EventHandler eat", + "Number": 77, + "Text": "77 / 84\nInterface ICat\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nCat's interface\nImplements\nIAnimal\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType), ICatExtension.Sleep(ICat, long)\neat\neat event of cat. Every cat must implement this event.\nEvent Type\nEventHandler\uF1C5\npublic interface ICat : IAnimal\nevent EventHandler eat", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.eventhandler" @@ -5954,7 +6238,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -5963,7 +6247,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -5972,7 +6256,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Coordinates": { "Left": 0, "Top": 390 @@ -5981,7 +6265,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Coordinates": { "Left": 0, "Top": 136.5 @@ -5991,8 +6275,8 @@ ] }, { - "Number": 74, - "Text": "74 / 80Delegate FakeDelegateNamespace: CatLibraryAssembly: CatLibrary.dllFake delegateParametersnum long\uF1C5Fake paraname string\uF1C5Fake parascores object\uF1C5[]Optional Parameter.Returnsint\uF1C5Return a fake number to confuse you.Type ParametersTFake parapublic delegate int FakeDelegate(long num, string name, params object[] scores)", + "Number": 78, + "Text": "78 / 84\nDelegate FakeDelegate\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nFake delegate\nParameters\nnum long\uF1C5\nFake para\nname string\uF1C5\nFake para\nscores object\uF1C5 []\nOptional Parameter.\nReturns\nint\uF1C5\nReturn a fake number to confuse you.\nType Parameters\nT\nFake para\npublic delegate int FakeDelegate(long num, string name, params object[] scores)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -6032,7 +6316,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -6042,12 +6326,12 @@ ] }, { - "Number": 75, - "Text": "75 / 80Delegate MRefDelegateNamespace: CatLibraryAssembly: CatLibrary.dllGeneric delegate with many constrains.Parametersk KType K.t TType T.l LType L.Type ParametersKGeneric K.TGeneric T.LGeneric L.public delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable", + "Number": 79, + "Text": "79 / 84\nDelegate MRefDelegate\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nGeneric delegate with many constrains.\nParameters\nk K\nType K.\nt T\nType T.\nl L\nType L.\nType Parameters\nK\nGeneric K.\nT\nGeneric T.\nL\nGeneric L.\npublic delegate void MRefDelegate(K k, T t, L l) where K : class,\nIComparable where T : struct where L : Tom, IEnumerable", "Links": [ { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -6057,8 +6341,8 @@ ] }, { - "Number": 76, - "Text": "76 / 80Delegate MRefNormalDelegateNamespace: CatLibraryAssembly: CatLibrary.dllDelegate in the namespaceParameterspics List\uF1C5a name list of pictures.name string\uF1C5give out the needed name.public delegate void MRefNormalDelegate(List pics, out string name)", + "Number": 80, + "Text": "80 / 84\nDelegate MRefNormalDelegate\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nDelegate in the namespace\nParameters\npics List\uF1C5 \na name list of pictures.\nname string\uF1C5\ngive out the needed name.\npublic delegate void MRefNormalDelegate(List pics, out string name)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1" @@ -6089,7 +6373,7 @@ }, { "Goto": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -6099,12 +6383,12 @@ ] }, { - "Number": 77, - "Text": "77 / 80Namespace MRefNamespacesMRef.Demo", + "Number": 81, + "Text": "81 / 84\nNamespace MRef\nNamespaces\nMRef.Demo", "Links": [ { "Goto": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -6114,12 +6398,12 @@ ] }, { - "Number": 78, - "Text": "78 / 80Namespace MRef.DemoNamespacesMRef.Demo.Enumeration", + "Number": 82, + "Text": "82 / 84\nNamespace MRef.Demo\nNamespaces\nMRef.Demo.Enumeration", "Links": [ { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -6129,12 +6413,12 @@ ] }, { - "Number": 79, - "Text": "79 / 80Namespace MRef.Demo.EnumerationEnumsColorTypeEnumeration ColorType", + "Number": 83, + "Text": "83 / 84\nNamespace MRef.Demo.Enumeration\nEnums\nColorType\nEnumeration ColorType", "Links": [ { "Goto": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -6144,8 +6428,8 @@ ] }, { - "Number": 80, - "Text": "80 / 80Enum ColorTypeNamespace: MRef.Demo.EnumerationAssembly: CatLibrary.dllEnumeration ColorTypeFieldsRed = 0this color is redBlue = 1blue like riverYellow = 2yellow comes from desertRemarksRed/Blue/Yellow can become all color you want.See Alsoobject\uF1C5public enum ColorType", + "Number": 84, + "Text": "84 / 84\nEnum ColorType\nNamespace: MRef.Demo.Enumeration\nAssembly: CatLibrary.dll\nEnumeration ColorType\nFields\nRed = 0\nthis color is red\nBlue = 1\nblue like river\nYellow = 2\nyellow comes from desert\nRemarks\nRed/Blue/Yellow can become all color you want.\nSee Also\nobject\uF1C5\npublic enum ColorType", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -6158,7 +6442,7 @@ }, { "Goto": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -6497,7 +6781,7 @@ } }, { - "Title": "Issue8725", + "Title": "Inheritdoc.Issue9736", "Children": [], "Destination": { "PageNumber": 37, @@ -6508,7 +6792,7 @@ } }, { - "Title": "Structs", + "Title": "Inheritdoc.Issue9736.JsonApiOptions", "Children": [], "Destination": { "PageNumber": 38, @@ -6518,11 +6802,33 @@ } } }, + { + "Title": "Issue8725", + "Children": [], + "Destination": { + "PageNumber": 40, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Structs", + "Children": [], + "Destination": { + "PageNumber": 41, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, { "Title": "Inheritdoc.Issue8129", "Children": [], "Destination": { - "PageNumber": 38, + "PageNumber": 41, "Type": 2, "Coordinates": { "Top": 0 @@ -6533,7 +6839,7 @@ "Title": "Interfaces", "Children": [], "Destination": { - "PageNumber": 39, + "PageNumber": 42, "Type": 2, "Coordinates": { "Top": 0 @@ -6544,7 +6850,7 @@ "Title": "Class1.IIssue8948", "Children": [], "Destination": { - "PageNumber": 39, + "PageNumber": 42, "Type": 2, "Coordinates": { "Top": 0 @@ -6555,7 +6861,18 @@ "Title": "IInheritdoc", "Children": [], "Destination": { - "PageNumber": 40, + "PageNumber": 43, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Inheritdoc.Issue9736.IJsonApiOptions", + "Children": [], + "Destination": { + "PageNumber": 44, "Type": 2, "Coordinates": { "Top": 0 @@ -6566,7 +6883,7 @@ "Title": "Enums", "Children": [], "Destination": { - "PageNumber": 41, + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -6577,7 +6894,7 @@ "Title": "Class1.Issue9260", "Children": [], "Destination": { - "PageNumber": 41, + "PageNumber": 45, "Type": 2, "Coordinates": { "Top": 0 @@ -6600,7 +6917,7 @@ "Title": "Classes", "Children": [], "Destination": { - "PageNumber": 43, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -6611,7 +6928,7 @@ "Title": "BaseClass1", "Children": [], "Destination": { - "PageNumber": 43, + "PageNumber": 47, "Type": 2, "Coordinates": { "Top": 0 @@ -6622,7 +6939,7 @@ "Title": "Class1", "Children": [], "Destination": { - "PageNumber": 44, + "PageNumber": 48, "Type": 2, "Coordinates": { "Top": 0 @@ -6631,7 +6948,7 @@ } ], "Destination": { - "PageNumber": 42, + "PageNumber": 46, "Type": 2, "Coordinates": { "Top": 0 @@ -6648,7 +6965,7 @@ "Title": "Classes", "Children": [], "Destination": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6659,7 +6976,7 @@ "Title": "ContainersRefType.ContainersRefTypeChild", "Children": [], "Destination": { - "PageNumber": 49, + "PageNumber": 53, "Type": 2, "Coordinates": { "Top": 0 @@ -6670,7 +6987,7 @@ "Title": "ExplicitLayoutClass", "Children": [], "Destination": { - "PageNumber": 50, + "PageNumber": 54, "Type": 2, "Coordinates": { "Top": 0 @@ -6681,7 +6998,7 @@ "Title": "Issue231", "Children": [], "Destination": { - "PageNumber": 51, + "PageNumber": 55, "Type": 2, "Coordinates": { "Top": 0 @@ -6692,7 +7009,7 @@ "Title": "Structs", "Children": [], "Destination": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -6703,7 +7020,7 @@ "Title": "ContainersRefType", "Children": [], "Destination": { - "PageNumber": 52, + "PageNumber": 56, "Type": 2, "Coordinates": { "Top": 0 @@ -6714,7 +7031,7 @@ "Title": "Interfaces", "Children": [], "Destination": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -6725,7 +7042,7 @@ "Title": "ContainersRefType.ContainersRefTypeChildInterface", "Children": [], "Destination": { - "PageNumber": 54, + "PageNumber": 58, "Type": 2, "Coordinates": { "Top": 0 @@ -6736,7 +7053,7 @@ "Title": "Enums", "Children": [], "Destination": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -6747,7 +7064,7 @@ "Title": "ContainersRefType.ColorType", "Children": [], "Destination": { - "PageNumber": 55, + "PageNumber": 59, "Type": 2, "Coordinates": { "Top": 0 @@ -6758,7 +7075,7 @@ "Title": "Delegates", "Children": [], "Destination": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -6769,7 +7086,7 @@ "Title": "ContainersRefType.ContainersRefTypeDelegate", "Children": [], "Destination": { - "PageNumber": 56, + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -6778,7 +7095,7 @@ } ], "Destination": { - "PageNumber": 48, + "PageNumber": 52, "Type": 2, "Coordinates": { "Top": 0 @@ -6789,7 +7106,7 @@ "Title": "Classes", "Children": [], "Destination": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -6800,7 +7117,7 @@ "Title": "Cat", "Children": [], "Destination": { - "PageNumber": 57, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -6811,7 +7128,7 @@ "Title": "CatException", "Children": [], "Destination": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -6822,7 +7139,7 @@ "Title": "Complex", "Children": [], "Destination": { - "PageNumber": 65, + "PageNumber": 69, "Type": 2, "Coordinates": { "Top": 0 @@ -6833,7 +7150,7 @@ "Title": "ICatExtension", "Children": [], "Destination": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6844,7 +7161,7 @@ "Title": "Tom", "Children": [], "Destination": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -6855,7 +7172,7 @@ "Title": "TomFromBaseClass", "Children": [], "Destination": { - "PageNumber": 70, + "PageNumber": 74, "Type": 2, "Coordinates": { "Top": 0 @@ -6866,7 +7183,7 @@ "Title": "Interfaces", "Children": [], "Destination": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -6877,7 +7194,7 @@ "Title": "IAnimal", "Children": [], "Destination": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -6888,7 +7205,7 @@ "Title": "ICat", "Children": [], "Destination": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -6899,7 +7216,7 @@ "Title": "Delegates", "Children": [], "Destination": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -6910,7 +7227,7 @@ "Title": "FakeDelegate", "Children": [], "Destination": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -6921,7 +7238,7 @@ "Title": "MRefDelegate", "Children": [], "Destination": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -6932,7 +7249,7 @@ "Title": "MRefNormalDelegate", "Children": [], "Destination": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -6941,7 +7258,7 @@ } ], "Destination": { - "PageNumber": 46, + "PageNumber": 50, "Type": 2, "Coordinates": { "Top": 0 @@ -6961,7 +7278,7 @@ "Title": "Enums", "Children": [], "Destination": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -6972,7 +7289,7 @@ "Title": "ColorType", "Children": [], "Destination": { - "PageNumber": 80, + "PageNumber": 84, "Type": 2, "Coordinates": { "Top": 0 @@ -6981,7 +7298,7 @@ } ], "Destination": { - "PageNumber": 79, + "PageNumber": 83, "Type": 2, "Coordinates": { "Top": 0 @@ -6990,7 +7307,7 @@ } ], "Destination": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -6999,7 +7316,7 @@ } ], "Destination": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.verified.json index 7438292da37..41c2f91ce3b 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/md/toc.verified.json @@ -148,6 +148,16 @@ "href": "BuildFromProject.Inheritdoc.Issue8101.html", "topicHref": "BuildFromProject.Inheritdoc.Issue8101.html" }, + { + "name": "Inheritdoc.Issue9736", + "href": "BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.html" + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html" + }, { "name": "Issue8725", "href": "BuildFromProject.Issue8725.html", @@ -174,6 +184,11 @@ "href": "BuildFromProject.IInheritdoc.html", "topicHref": "BuildFromProject.IInheritdoc.html" }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html" + }, { "name": "Enums" }, diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.html.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.html.view.verified.json index e4fa2a6576d..43a1cf74854 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.html.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.html.view.verified.json @@ -380,6 +380,39 @@ "items": [], "leaf": true }, + { + "name": "Inheritdoc.Issue9736", + "href": "../api/BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "../api/BuildFromProject.Inheritdoc.Issue9736.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736", + "type": "Class", + "tocHref": null, + "level": 4, + "items": [], + "leaf": true + }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "../api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "../api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "type": "Interface", + "tocHref": null, + "level": 4, + "items": [], + "leaf": true + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "../api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "../api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions", + "type": "Class", + "tocHref": null, + "level": 4, + "items": [], + "leaf": true + }, { "name": "Issue8725", "href": "../api/BuildFromProject.Issue8725.html", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.json.view.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.json.view.verified.json index 4c6851c08ef..c1a21731f2e 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.json.view.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.json.view.verified.json @@ -1,3 +1,3 @@ { - "content": "{\"order\":200,\"items\":[{\"name\":\"Articles\",\"includedFrom\":\"~/articles/toc.yml\",\"items\":[{\"name\":\"Getting Started with docfx\",\"href\":\"../articles/docfx_getting_started.html\",\"topicHref\":\"../articles/docfx_getting_started.html\"},{\"name\":\"Engineering Docs\",\"items\":[{\"name\":\"Section 1\"},{\"name\":\"Engineering Guidelines\",\"href\":\"../articles/engineering_guidelines.html\",\"topicHref\":\"../articles/engineering_guidelines.html\"},{\"name\":\"C# Coding Standards\",\"href\":\"../articles/csharp_coding_standards.html\",\"topicHref\":\"../articles/csharp_coding_standards.html\"}],\"expanded\":true},{\"name\":\"Markdown\",\"href\":\"../articles/markdown.html\",\"topicHref\":\"../articles/markdown.html\"},{\"name\":\"Microsoft Docs\",\"href\":\"https://docs.microsoft.com/en-us/\",\"topicHref\":\"https://docs.microsoft.com/en-us/\"}]},{\"name\":\"API Documentation\",\"includedFrom\":\"~/obj/api/toc.yml\",\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"../api/BuildFromAssembly.html\",\"topicHref\":\"../api/BuildFromAssembly.html\",\"topicUid\":\"BuildFromAssembly\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Class1\",\"href\":\"../api/BuildFromAssembly.Class1.html\",\"topicHref\":\"../api/BuildFromAssembly.Class1.html\",\"topicUid\":\"BuildFromAssembly.Class1\",\"type\":\"Class\"},{\"name\":\"Issue5432\",\"href\":\"../api/BuildFromAssembly.Issue5432.html\",\"topicHref\":\"../api/BuildFromAssembly.Issue5432.html\",\"topicUid\":\"BuildFromAssembly.Issue5432\",\"type\":\"Struct\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"../api/BuildFromCSharpSourceCode.html\",\"topicHref\":\"../api/BuildFromCSharpSourceCode.html\",\"topicUid\":\"BuildFromCSharpSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"CSharp\",\"href\":\"../api/BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"../api/BuildFromCSharpSourceCode.CSharp.html\",\"topicUid\":\"BuildFromCSharpSourceCode.CSharp\",\"type\":\"Class\"}]},{\"name\":\"BuildFromProject\",\"href\":\"../api/BuildFromProject.html\",\"topicHref\":\"../api/BuildFromProject.html\",\"topicUid\":\"BuildFromProject\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"../api/BuildFromProject.Issue8540.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.html\",\"topicUid\":\"BuildFromProject.Issue8540\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"../api/BuildFromProject.Issue8540.A.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"../api/BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.A.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A.A\",\"type\":\"Class\"}]},{\"name\":\"B\",\"href\":\"../api/BuildFromProject.Issue8540.B.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B\",\"type\":\"Namespace\",\"items\":[{\"name\":\"B\",\"href\":\"../api/BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.B.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B.B\",\"type\":\"Class\"}]}]},{\"name\":\"Class1\",\"href\":\"../api/BuildFromProject.Class1.html\",\"topicHref\":\"../api/BuildFromProject.Class1.html\",\"topicUid\":\"BuildFromProject.Class1\",\"type\":\"Class\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"../api/BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"../api/BuildFromProject.Class1.IIssue8948.html\",\"topicUid\":\"BuildFromProject.Class1.IIssue8948\",\"type\":\"Interface\"},{\"name\":\"Class1.Issue8665\",\"href\":\"../api/BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue8665.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8665\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"../api/BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue8696Attribute.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8696Attribute\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8948\",\"href\":\"../api/BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue8948.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8948\",\"type\":\"Class\"},{\"name\":\"Class1.Issue9260\",\"href\":\"../api/BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue9260.html\",\"topicUid\":\"BuildFromProject.Class1.Issue9260\",\"type\":\"Enum\"},{\"name\":\"Class1.Test\",\"href\":\"../api/BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Test-1.html\",\"topicUid\":\"BuildFromProject.Class1.Test`1\",\"type\":\"Class\"},{\"name\":\"Dog\",\"href\":\"../api/BuildFromProject.Dog.html\",\"topicHref\":\"../api/BuildFromProject.Dog.html\",\"topicUid\":\"BuildFromProject.Dog\",\"type\":\"Class\"},{\"name\":\"IInheritdoc\",\"href\":\"../api/BuildFromProject.IInheritdoc.html\",\"topicHref\":\"../api/BuildFromProject.IInheritdoc.html\",\"topicUid\":\"BuildFromProject.IInheritdoc\",\"type\":\"Interface\"},{\"name\":\"Inheritdoc\",\"href\":\"../api/BuildFromProject.Inheritdoc.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.html\",\"topicUid\":\"BuildFromProject.Inheritdoc\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue6366.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class1`1\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class2\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue7035.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7035\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue7484.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7484\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue8101.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8101\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue8129.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8129\",\"type\":\"Struct\"},{\"name\":\"Issue8725\",\"href\":\"../api/BuildFromProject.Issue8725.html\",\"topicHref\":\"../api/BuildFromProject.Issue8725.html\",\"topicUid\":\"BuildFromProject.Issue8725\",\"type\":\"Class\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"../api/BuildFromVBSourceCode.html\",\"topicHref\":\"../api/BuildFromVBSourceCode.html\",\"topicUid\":\"BuildFromVBSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"BaseClass1\",\"href\":\"../api/BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"../api/BuildFromVBSourceCode.BaseClass1.html\",\"topicUid\":\"BuildFromVBSourceCode.BaseClass1\",\"type\":\"Class\"},{\"name\":\"Class1\",\"href\":\"../api/BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"../api/BuildFromVBSourceCode.Class1.html\",\"topicUid\":\"BuildFromVBSourceCode.Class1\",\"type\":\"Class\"}]},{\"name\":\"CatLibrary\",\"href\":\"../api/CatLibrary.html\",\"topicHref\":\"../api/CatLibrary.html\",\"topicUid\":\"CatLibrary\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Core\",\"href\":\"../api/CatLibrary.Core.html\",\"topicHref\":\"../api/CatLibrary.Core.html\",\"topicUid\":\"CatLibrary.Core\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ContainersRefType\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType\",\"type\":\"Struct\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ColorType\",\"type\":\"Enum\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild\",\"type\":\"Class\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface\",\"type\":\"Interface\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate\",\"type\":\"Delegate\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"../api/CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"../api/CatLibrary.Core.ExplicitLayoutClass.html\",\"topicUid\":\"CatLibrary.Core.ExplicitLayoutClass\",\"type\":\"Class\"},{\"name\":\"Issue231\",\"href\":\"../api/CatLibrary.Core.Issue231.html\",\"topicHref\":\"../api/CatLibrary.Core.Issue231.html\",\"topicUid\":\"CatLibrary.Core.Issue231\",\"type\":\"Class\"}]},{\"name\":\"CatException\",\"href\":\"../api/CatLibrary.CatException-1.html\",\"topicHref\":\"../api/CatLibrary.CatException-1.html\",\"topicUid\":\"CatLibrary.CatException`1\",\"type\":\"Class\"},{\"name\":\"Cat\",\"href\":\"../api/CatLibrary.Cat-2.html\",\"topicHref\":\"../api/CatLibrary.Cat-2.html\",\"topicUid\":\"CatLibrary.Cat`2\",\"type\":\"Class\"},{\"name\":\"Complex\",\"href\":\"../api/CatLibrary.Complex-2.html\",\"topicHref\":\"../api/CatLibrary.Complex-2.html\",\"topicUid\":\"CatLibrary.Complex`2\",\"type\":\"Class\"},{\"name\":\"FakeDelegate\",\"href\":\"../api/CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"../api/CatLibrary.FakeDelegate-1.html\",\"topicUid\":\"CatLibrary.FakeDelegate`1\",\"type\":\"Delegate\"},{\"name\":\"IAnimal\",\"href\":\"../api/CatLibrary.IAnimal.html\",\"topicHref\":\"../api/CatLibrary.IAnimal.html\",\"topicUid\":\"CatLibrary.IAnimal\",\"type\":\"Interface\"},{\"name\":\"ICat\",\"href\":\"../api/CatLibrary.ICat.html\",\"topicHref\":\"../api/CatLibrary.ICat.html\",\"topicUid\":\"CatLibrary.ICat\",\"type\":\"Interface\"},{\"name\":\"ICatExtension\",\"href\":\"../api/CatLibrary.ICatExtension.html\",\"topicHref\":\"../api/CatLibrary.ICatExtension.html\",\"topicUid\":\"CatLibrary.ICatExtension\",\"type\":\"Class\"},{\"name\":\"MRefDelegate\",\"href\":\"../api/CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"../api/CatLibrary.MRefDelegate-3.html\",\"topicUid\":\"CatLibrary.MRefDelegate`3\",\"type\":\"Delegate\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"../api/CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"../api/CatLibrary.MRefNormalDelegate.html\",\"topicUid\":\"CatLibrary.MRefNormalDelegate\",\"type\":\"Delegate\"},{\"name\":\"Tom\",\"href\":\"../api/CatLibrary.Tom.html\",\"topicHref\":\"../api/CatLibrary.Tom.html\",\"topicUid\":\"CatLibrary.Tom\",\"type\":\"Class\"},{\"name\":\"TomFromBaseClass\",\"href\":\"../api/CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"../api/CatLibrary.TomFromBaseClass.html\",\"topicUid\":\"CatLibrary.TomFromBaseClass\",\"type\":\"Class\"}]},{\"name\":\"MRef.Demo.Enumeration\",\"href\":\"../api/MRef.Demo.Enumeration.html\",\"topicHref\":\"../api/MRef.Demo.Enumeration.html\",\"topicUid\":\"MRef.Demo.Enumeration\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ColorType\",\"href\":\"../api/MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"../api/MRef.Demo.Enumeration.ColorType.html\",\"topicUid\":\"MRef.Demo.Enumeration.ColorType\",\"type\":\"Enum\"}]}]},{\"name\":\"REST API\",\"includedFrom\":\"~/restapi/toc.md\",\"items\":[{\"name\":\"Pet Store API\",\"href\":\"../restapi/petstore.html\",\"topicHref\":\"../restapi/petstore.html\"},{\"name\":\"Contacts API\",\"href\":\"../restapi/contacts.html\",\"topicHref\":\"../restapi/contacts.html\"}]}],\"pdf\":true,\"pdfTocPage\":true}" + "content": "{\"order\":200,\"items\":[{\"name\":\"Articles\",\"includedFrom\":\"~/articles/toc.yml\",\"items\":[{\"name\":\"Getting Started with docfx\",\"href\":\"../articles/docfx_getting_started.html\",\"topicHref\":\"../articles/docfx_getting_started.html\"},{\"name\":\"Engineering Docs\",\"items\":[{\"name\":\"Section 1\"},{\"name\":\"Engineering Guidelines\",\"href\":\"../articles/engineering_guidelines.html\",\"topicHref\":\"../articles/engineering_guidelines.html\"},{\"name\":\"C# Coding Standards\",\"href\":\"../articles/csharp_coding_standards.html\",\"topicHref\":\"../articles/csharp_coding_standards.html\"}],\"expanded\":true},{\"name\":\"Markdown\",\"href\":\"../articles/markdown.html\",\"topicHref\":\"../articles/markdown.html\"},{\"name\":\"Microsoft Docs\",\"href\":\"https://docs.microsoft.com/en-us/\",\"topicHref\":\"https://docs.microsoft.com/en-us/\"}]},{\"name\":\"API Documentation\",\"includedFrom\":\"~/obj/api/toc.yml\",\"items\":[{\"name\":\"BuildFromAssembly\",\"href\":\"../api/BuildFromAssembly.html\",\"topicHref\":\"../api/BuildFromAssembly.html\",\"topicUid\":\"BuildFromAssembly\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Class1\",\"href\":\"../api/BuildFromAssembly.Class1.html\",\"topicHref\":\"../api/BuildFromAssembly.Class1.html\",\"topicUid\":\"BuildFromAssembly.Class1\",\"type\":\"Class\"},{\"name\":\"Issue5432\",\"href\":\"../api/BuildFromAssembly.Issue5432.html\",\"topicHref\":\"../api/BuildFromAssembly.Issue5432.html\",\"topicUid\":\"BuildFromAssembly.Issue5432\",\"type\":\"Struct\"}]},{\"name\":\"BuildFromCSharpSourceCode\",\"href\":\"../api/BuildFromCSharpSourceCode.html\",\"topicHref\":\"../api/BuildFromCSharpSourceCode.html\",\"topicUid\":\"BuildFromCSharpSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"CSharp\",\"href\":\"../api/BuildFromCSharpSourceCode.CSharp.html\",\"topicHref\":\"../api/BuildFromCSharpSourceCode.CSharp.html\",\"topicUid\":\"BuildFromCSharpSourceCode.CSharp\",\"type\":\"Class\"}]},{\"name\":\"BuildFromProject\",\"href\":\"../api/BuildFromProject.html\",\"topicHref\":\"../api/BuildFromProject.html\",\"topicUid\":\"BuildFromProject\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Issue8540\",\"href\":\"../api/BuildFromProject.Issue8540.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.html\",\"topicUid\":\"BuildFromProject.Issue8540\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"../api/BuildFromProject.Issue8540.A.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A\",\"type\":\"Namespace\",\"items\":[{\"name\":\"A\",\"href\":\"../api/BuildFromProject.Issue8540.A.A.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.A.A.html\",\"topicUid\":\"BuildFromProject.Issue8540.A.A\",\"type\":\"Class\"}]},{\"name\":\"B\",\"href\":\"../api/BuildFromProject.Issue8540.B.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B\",\"type\":\"Namespace\",\"items\":[{\"name\":\"B\",\"href\":\"../api/BuildFromProject.Issue8540.B.B.html\",\"topicHref\":\"../api/BuildFromProject.Issue8540.B.B.html\",\"topicUid\":\"BuildFromProject.Issue8540.B.B\",\"type\":\"Class\"}]}]},{\"name\":\"Class1\",\"href\":\"../api/BuildFromProject.Class1.html\",\"topicHref\":\"../api/BuildFromProject.Class1.html\",\"topicUid\":\"BuildFromProject.Class1\",\"type\":\"Class\"},{\"name\":\"Class1.IIssue8948\",\"href\":\"../api/BuildFromProject.Class1.IIssue8948.html\",\"topicHref\":\"../api/BuildFromProject.Class1.IIssue8948.html\",\"topicUid\":\"BuildFromProject.Class1.IIssue8948\",\"type\":\"Interface\"},{\"name\":\"Class1.Issue8665\",\"href\":\"../api/BuildFromProject.Class1.Issue8665.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue8665.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8665\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8696Attribute\",\"href\":\"../api/BuildFromProject.Class1.Issue8696Attribute.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue8696Attribute.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8696Attribute\",\"type\":\"Class\"},{\"name\":\"Class1.Issue8948\",\"href\":\"../api/BuildFromProject.Class1.Issue8948.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue8948.html\",\"topicUid\":\"BuildFromProject.Class1.Issue8948\",\"type\":\"Class\"},{\"name\":\"Class1.Issue9260\",\"href\":\"../api/BuildFromProject.Class1.Issue9260.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Issue9260.html\",\"topicUid\":\"BuildFromProject.Class1.Issue9260\",\"type\":\"Enum\"},{\"name\":\"Class1.Test\",\"href\":\"../api/BuildFromProject.Class1.Test-1.html\",\"topicHref\":\"../api/BuildFromProject.Class1.Test-1.html\",\"topicUid\":\"BuildFromProject.Class1.Test`1\",\"type\":\"Class\"},{\"name\":\"Dog\",\"href\":\"../api/BuildFromProject.Dog.html\",\"topicHref\":\"../api/BuildFromProject.Dog.html\",\"topicUid\":\"BuildFromProject.Dog\",\"type\":\"Class\"},{\"name\":\"IInheritdoc\",\"href\":\"../api/BuildFromProject.IInheritdoc.html\",\"topicHref\":\"../api/BuildFromProject.IInheritdoc.html\",\"topicUid\":\"BuildFromProject.IInheritdoc\",\"type\":\"Interface\"},{\"name\":\"Inheritdoc\",\"href\":\"../api/BuildFromProject.Inheritdoc.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.html\",\"topicUid\":\"BuildFromProject.Inheritdoc\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue6366.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue6366.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class1\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class1-1.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class1`1\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue6366.Class2\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue6366.Class2.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue6366.Class2\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7035\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue7035.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue7035.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7035\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue7484\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue7484.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue7484.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue7484\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8101\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue8101.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue8101.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8101\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue8129\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue8129.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue8129.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue8129\",\"type\":\"Struct\"},{\"name\":\"Inheritdoc.Issue9736\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue9736.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue9736.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue9736\",\"type\":\"Class\"},{\"name\":\"Inheritdoc.Issue9736.IJsonApiOptions\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions\",\"type\":\"Interface\"},{\"name\":\"Inheritdoc.Issue9736.JsonApiOptions\",\"href\":\"../api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\",\"topicHref\":\"../api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html\",\"topicUid\":\"BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions\",\"type\":\"Class\"},{\"name\":\"Issue8725\",\"href\":\"../api/BuildFromProject.Issue8725.html\",\"topicHref\":\"../api/BuildFromProject.Issue8725.html\",\"topicUid\":\"BuildFromProject.Issue8725\",\"type\":\"Class\"}]},{\"name\":\"BuildFromVBSourceCode\",\"href\":\"../api/BuildFromVBSourceCode.html\",\"topicHref\":\"../api/BuildFromVBSourceCode.html\",\"topicUid\":\"BuildFromVBSourceCode\",\"type\":\"Namespace\",\"items\":[{\"name\":\"BaseClass1\",\"href\":\"../api/BuildFromVBSourceCode.BaseClass1.html\",\"topicHref\":\"../api/BuildFromVBSourceCode.BaseClass1.html\",\"topicUid\":\"BuildFromVBSourceCode.BaseClass1\",\"type\":\"Class\"},{\"name\":\"Class1\",\"href\":\"../api/BuildFromVBSourceCode.Class1.html\",\"topicHref\":\"../api/BuildFromVBSourceCode.Class1.html\",\"topicUid\":\"BuildFromVBSourceCode.Class1\",\"type\":\"Class\"}]},{\"name\":\"CatLibrary\",\"href\":\"../api/CatLibrary.html\",\"topicHref\":\"../api/CatLibrary.html\",\"topicUid\":\"CatLibrary\",\"type\":\"Namespace\",\"items\":[{\"name\":\"Core\",\"href\":\"../api/CatLibrary.Core.html\",\"topicHref\":\"../api/CatLibrary.Core.html\",\"topicUid\":\"CatLibrary.Core\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ContainersRefType\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType\",\"type\":\"Struct\"},{\"name\":\"ContainersRefType.ColorType\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ColorType.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ColorType\",\"type\":\"Enum\"},{\"name\":\"ContainersRefType.ContainersRefTypeChild\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChild.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChild\",\"type\":\"Class\"},{\"name\":\"ContainersRefType.ContainersRefTypeChildInterface\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeChildInterface\",\"type\":\"Interface\"},{\"name\":\"ContainersRefType.ContainersRefTypeDelegate\",\"href\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicHref\":\"../api/CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate.html\",\"topicUid\":\"CatLibrary.Core.ContainersRefType.ContainersRefTypeDelegate\",\"type\":\"Delegate\"},{\"name\":\"ExplicitLayoutClass\",\"href\":\"../api/CatLibrary.Core.ExplicitLayoutClass.html\",\"topicHref\":\"../api/CatLibrary.Core.ExplicitLayoutClass.html\",\"topicUid\":\"CatLibrary.Core.ExplicitLayoutClass\",\"type\":\"Class\"},{\"name\":\"Issue231\",\"href\":\"../api/CatLibrary.Core.Issue231.html\",\"topicHref\":\"../api/CatLibrary.Core.Issue231.html\",\"topicUid\":\"CatLibrary.Core.Issue231\",\"type\":\"Class\"}]},{\"name\":\"CatException\",\"href\":\"../api/CatLibrary.CatException-1.html\",\"topicHref\":\"../api/CatLibrary.CatException-1.html\",\"topicUid\":\"CatLibrary.CatException`1\",\"type\":\"Class\"},{\"name\":\"Cat\",\"href\":\"../api/CatLibrary.Cat-2.html\",\"topicHref\":\"../api/CatLibrary.Cat-2.html\",\"topicUid\":\"CatLibrary.Cat`2\",\"type\":\"Class\"},{\"name\":\"Complex\",\"href\":\"../api/CatLibrary.Complex-2.html\",\"topicHref\":\"../api/CatLibrary.Complex-2.html\",\"topicUid\":\"CatLibrary.Complex`2\",\"type\":\"Class\"},{\"name\":\"FakeDelegate\",\"href\":\"../api/CatLibrary.FakeDelegate-1.html\",\"topicHref\":\"../api/CatLibrary.FakeDelegate-1.html\",\"topicUid\":\"CatLibrary.FakeDelegate`1\",\"type\":\"Delegate\"},{\"name\":\"IAnimal\",\"href\":\"../api/CatLibrary.IAnimal.html\",\"topicHref\":\"../api/CatLibrary.IAnimal.html\",\"topicUid\":\"CatLibrary.IAnimal\",\"type\":\"Interface\"},{\"name\":\"ICat\",\"href\":\"../api/CatLibrary.ICat.html\",\"topicHref\":\"../api/CatLibrary.ICat.html\",\"topicUid\":\"CatLibrary.ICat\",\"type\":\"Interface\"},{\"name\":\"ICatExtension\",\"href\":\"../api/CatLibrary.ICatExtension.html\",\"topicHref\":\"../api/CatLibrary.ICatExtension.html\",\"topicUid\":\"CatLibrary.ICatExtension\",\"type\":\"Class\"},{\"name\":\"MRefDelegate\",\"href\":\"../api/CatLibrary.MRefDelegate-3.html\",\"topicHref\":\"../api/CatLibrary.MRefDelegate-3.html\",\"topicUid\":\"CatLibrary.MRefDelegate`3\",\"type\":\"Delegate\"},{\"name\":\"MRefNormalDelegate\",\"href\":\"../api/CatLibrary.MRefNormalDelegate.html\",\"topicHref\":\"../api/CatLibrary.MRefNormalDelegate.html\",\"topicUid\":\"CatLibrary.MRefNormalDelegate\",\"type\":\"Delegate\"},{\"name\":\"Tom\",\"href\":\"../api/CatLibrary.Tom.html\",\"topicHref\":\"../api/CatLibrary.Tom.html\",\"topicUid\":\"CatLibrary.Tom\",\"type\":\"Class\"},{\"name\":\"TomFromBaseClass\",\"href\":\"../api/CatLibrary.TomFromBaseClass.html\",\"topicHref\":\"../api/CatLibrary.TomFromBaseClass.html\",\"topicUid\":\"CatLibrary.TomFromBaseClass\",\"type\":\"Class\"}]},{\"name\":\"MRef.Demo.Enumeration\",\"href\":\"../api/MRef.Demo.Enumeration.html\",\"topicHref\":\"../api/MRef.Demo.Enumeration.html\",\"topicUid\":\"MRef.Demo.Enumeration\",\"type\":\"Namespace\",\"items\":[{\"name\":\"ColorType\",\"href\":\"../api/MRef.Demo.Enumeration.ColorType.html\",\"topicHref\":\"../api/MRef.Demo.Enumeration.ColorType.html\",\"topicUid\":\"MRef.Demo.Enumeration.ColorType\",\"type\":\"Enum\"}]}]},{\"name\":\"REST API\",\"includedFrom\":\"~/restapi/toc.md\",\"items\":[{\"name\":\"Pet Store API\",\"href\":\"../restapi/petstore.html\",\"topicHref\":\"../restapi/petstore.html\"},{\"name\":\"Contacts API\",\"href\":\"../restapi/contacts.html\",\"topicHref\":\"../restapi/contacts.html\"}]}],\"pdf\":true,\"pdfTocPage\":true}" } \ No newline at end of file diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.pdf.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.pdf.verified.json index ed854978ac2..1d810f16bd5 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.pdf.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.pdf.verified.json @@ -1,9 +1,9 @@ { - "NumberOfPages": 127, + "NumberOfPages": 131, "Pages": [ { "Number": 1, - "Text": "Table of ContentsArticlesGetting Started with docfx3Engineering DocsSection 1Engineering Guidelines5C# Coding Standards8Markdown15Microsoft DocsAPI DocumentationBuildFromAssembly20Class121Issue543222BuildFromCSharpSourceCode23CSharp24BuildFromProject25Issue854027A28A29B30B31Class132Class1.IIssue894837Class1.Issue866538Class1.Issue8696Attribute41Class1.Issue894843Class1.Issue926044Class1.Test45Dog46IInheritdoc48Inheritdoc49Inheritdoc.Issue636651Inheritdoc.Issue6366.Class152Inheritdoc.Issue6366.Class254Inheritdoc.Issue703555Inheritdoc.Issue748456Inheritdoc.Issue810158Inheritdoc.Issue812960Issue872561", + "Text": "Table of Contents\nArticles\nGetting Started with docfx 3\nEngineering Docs\nSection 1\nEngineering Guidelines 5\nC# Coding Standards 8\nMarkdown 15\nMicrosoft Docs\nAPI Documentation\nBuildFromAssembly 20\nClass1 21\nIssue5432 22\nBuildFromCSharpSourceCode 23\nCSharp 24\nBuildFromProject 25\nIssue8540 27\nA 28\nA 29\nB 30\nB 31\nClass1 32\nClass1.IIssue8948 37\nClass1.Issue8665 38\nClass1.Issue8696Attribute 41\nClass1.Issue8948 43\nClass1.Issue9260 44\nClass1.Test 45\nDog 46\nIInheritdoc 48\nInheritdoc 49\nInheritdoc.Issue6366 51\nInheritdoc.Issue6366.Class1 52\nInheritdoc.Issue6366.Class2 54\nInheritdoc.Issue7035 55\nInheritdoc.Issue7484 56\nInheritdoc.Issue8101 58\nInheritdoc.Issue8129 60\nInheritdoc.Issue9736 61", "Links": [ { "Uri": "https://docs.microsoft.com/en-us/" @@ -309,7 +309,7 @@ }, { "Number": 2, - "Text": "BuildFromVBSourceCode62BaseClass163Class164CatLibrary66Core68ContainersRefType69ContainersRefType.ColorType71ContainersRefType.ContainersRefTypeChild72ContainersRefType.ContainersRefTypeChildInterface73ContainersRefType.ContainersRefTypeDelegate74ExplicitLayoutClass75Issue23176CatException77Cat78Complex87FakeDelegate88IAnimal89ICat92ICatExtension93MRefDelegate95MRefNormalDelegate96Tom97TomFromBaseClass99MRef.Demo.Enumeration100ColorType101REST APIPet Store API102Contacts API117", + "Text": "Inheritdoc.Issue9736.IJsonApiOptions 62\nInheritdoc.Issue9736.JsonApiOptions 63\nIssue8725 65\nBuildFromVBSourceCode 66\nBaseClass1 67\nClass1 68\nCatLibrary 70\nCore 72\nContainersRefType 73\nContainersRefType.ColorType 75\nContainersRefType.ContainersRefTypeChild 76\nContainersRefType.ContainersRefTypeChildInterface 77\nContainersRefType.ContainersRefTypeDelegate 78\nExplicitLayoutClass 79\nIssue231 80\nCatException 81\nCat 82\nComplex 91\nFakeDelegate 92\nIAnimal 93\nICat 96\nICatExtension 97\nMRefDelegate 99\nMRefNormalDelegate 100\nTom 101\nTomFromBaseClass 103\nMRef.Demo.Enumeration 104\nColorType 105\nREST API\nPet Store API 106\nContacts API 121", "Links": [ { "Goto": { @@ -331,7 +331,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 65, "Type": 2, "Coordinates": { "Top": 0 @@ -349,7 +349,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -358,7 +358,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -367,7 +367,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -394,7 +394,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -403,7 +403,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -412,7 +412,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -421,7 +421,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -430,7 +430,7 @@ }, { "Goto": { - "PageNumber": 78, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -439,7 +439,7 @@ }, { "Goto": { - "PageNumber": 87, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -448,7 +448,7 @@ }, { "Goto": { - "PageNumber": 88, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -457,7 +457,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -466,7 +466,7 @@ }, { "Goto": { - "PageNumber": 92, + "PageNumber": 91, "Type": 2, "Coordinates": { "Top": 0 @@ -475,7 +475,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 92, "Type": 2, "Coordinates": { "Top": 0 @@ -484,7 +484,7 @@ }, { "Goto": { - "PageNumber": 95, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -538,7 +538,34 @@ }, { "Goto": { - "PageNumber": 102, + "PageNumber": 103, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 104, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 105, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 106, "Type": 2, "Coordinates": { "Top": 0 @@ -547,7 +574,7 @@ }, { "Goto": { - "PageNumber": 117, + "PageNumber": 121, "Type": 2, "Coordinates": { "Top": 0 @@ -559,7 +586,7 @@ { "Number": 3, "NumberOfImages": 1, - "Text": "3 / 127Getting Started with docfxGetting StartedThis is a seed.", + "Text": "3 / 131\nGetting Started with docfx\nGetting Started\nThis is a seed.", "Links": [ { "Uri": "" @@ -571,22 +598,22 @@ }, { "Number": 4, - "Text": "4 / 127docfx is an API documentation generator for .NET, currently support C# and VB. It has theability to extract triple slash comments out from your source code. What's more, it hassyntax to link additional files to API to add additional remarks. docfx will scan your sourcecode and your additional conceptual files and generate a complete HTML documentationwebsite for you. docfx provides the flexibility for you to customize the website throughtemplates. We currently have several embedded templates, including websites containingpure static html pages and also website managed by AngularJS.Click \"View Source\" for an API to route to the source code in GitHub (your API must bepushed to GitHub)docfx provide DNX version for cross platform use.docfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nugetpackage is now in pre-release version. You can also build your own with source codeand use it locally.We support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is100% compatible with Github Flavored Markdown(GFM) and add several new featuresincluding file inclusion, cross reference, and yaml header.", + "Text": "4 / 131\ndocfx is an API documentation generator for .NET, currently support C# and VB. It has the\nability to extract triple slash comments out from your source code. What's more, it has\nsyntax to link additional files to API to add additional remarks. docfx will scan your source\ncode and your additional conceptual files and generate a complete HTML documentation\nwebsite for you. docfx provides the flexibility for you to customize the website through\ntemplates. We currently have several embedded templates, including websites containing\npure static html pages and also website managed by AngularJS.\nClick \"View Source\" for an API to route to the source code in GitHub (your API must be\npushed to GitHub)\ndocfx provide DNX version for cross platform use.\ndocfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nuget\npackage is now in pre-release version. You can also build your own with source code\nand use it locally.\nWe support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is\n100% compatible with Github Flavored Markdown(GFM) and add several new features\nincluding file inclusion, cross reference, and yaml header.", "Links": [] }, { "Number": 5, - "Text": "5 / 127Engineering GuidelinesBasicsCopyright header and license noticeAll source code files require the following exact header according to its language (please donot make any changes to it).extension: .csextension: .jsextension: .cssextension: .tmpl, .tmpl.partialExternal dependenciesThis refers to dependencies on projects (i.e. NuGet packages) outside of the docfx repo, andespecially outside of Microsoft. Adding new dependencies require additional approval.Current approved dependencies are:Newtonsoft.JsonJintHtmlAgilityPack// Licensed to the .NET Foundation under one or more agreements.// The .NET Foundation licenses this file to you under the MIT license.// Licensed to the .NET Foundation under one or more agreements.// The .NET Foundation licenses this file to you under the MIT license./** * Licensed to the .NET Foundation under one or more agreements. * The .NET Foundation licenses this file to you under the MIT license. */{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation lic", + "Text": "5 / 131\nEngineering Guidelines\nBasics\nCopyright header and license notice\nAll source code files require the following exact header according to its language (please do\nnot make any changes to it).\nextension: .cs\nextension: .js\nextension: .css\nextension: .tmpl, .tmpl.partial\nExternal dependencies\nThis refers to dependencies on projects (i.e. NuGet packages) outside of the docfx repo, and\nespecially outside of Microsoft. Adding new dependencies require additional approval.\nCurrent approved dependencies are:\nNewtonsoft.Json\nJint\nHtmlAgilityPack\n// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under the MIT license.\n/**\n* Licensed to the .NET Foundation under one or more agreements.\n* The .NET Foundation licenses this file to you under the MIT license.\n*/\n{{!Licensed to the .NET Foundation under one or more agreements. The .NET Foundation lic", "Links": [] }, { "Number": 6, - "Text": "6 / 127NustacheYamlDotNetCode reviews and checkinsTo help ensure that only the highest quality code makes its way into the project, pleasesubmit all your code changes to GitHub as PRs. This includes runtime code changes, unittest updates, and deployment scripts. For example, sending a PR for just an update to aunit test might seem like a waste of time but the unit tests are just as important as theproduct code and as such, reviewing changes to them is also just as important.The advantages are numerous: improving code quality, more visibility on changes and theirpotential impact, avoiding duplication of effort, and creating general awareness of progressbeing made in various areas.In general a PR should be signed off(using the \uD83D\uDC4D emoticon) by the Owner of that code.To commit the PR to the repo do not use the Big Green Button. Instead, do a typicalpush that you would use with Git (e.g. local pull, rebase, merge, push).Source Code ManagementBranch strategyIn general:master has the code for the latest release on NuGet.org. (e.g. 1.0.0, 1.1.0)dev has the code that is being worked on but not yet released. This is the branch intowhich devs normally submit pull requests and merge changes into. We run daily CItowards dev branch and generate pre-release nuget package, e.g. 1.0.1-alpha-9-abcdefsd.hotfix has the code for fixing master bug after it is released. hotfix changes will bemerged back to master and dev once it is verified.Solution and project folder structure and namingSolution files go in the repo root. The default entry point is All.sln.Every project also needs a project.json and a matching .xproj file. This project.json is thesource of truth for a project's dependencies and configuration options.Solution need to contain solution folders that match the physical folder (src, test, tools,etc.).Assembly naming pattern", + "Text": "6 / 131\nNustache\nYamlDotNet\nCode reviews and checkins\nTo help ensure that only the highest quality code makes its way into the project, please\nsubmit all your code changes to GitHub as PRs. This includes runtime code changes, unit\ntest updates, and deployment scripts. For example, sending a PR for just an update to a\nunit test might seem like a waste of time but the unit tests are just as important as the\nproduct code and as such, reviewing changes to them is also just as important.\nThe advantages are numerous: improving code quality, more visibility on changes and their\npotential impact, avoiding duplication of effort, and creating general awareness of progress\nbeing made in various areas.\nIn general a PR should be signed off(using the \uD83D\uDC4D emoticon) by the Owner of that code.\nTo commit the PR to the repo do not use the Big Green Button. Instead, do a typical\npush that you would use with Git (e.g. local pull, rebase, merge, push).\nSource Code Management\nBranch strategy\nIn general:\nmaster has the code for the latest release on NuGet.org. (e.g. 1.0.0, 1.1.0)\ndev has the code that is being worked on but not yet released. This is the branch into\nwhich devs normally submit pull requests and merge changes into. We run daily CI\ntowards dev branch and generate pre-release nuget package, e.g. 1.0.1-alpha-9-\nabcdefsd.\nhotfix has the code for fixing master bug after it is released. hotfix changes will be\nmerged back to master and dev once it is verified.\nSolution and project folder structure and naming\nSolution files go in the repo root. The default entry point is All.sln.\nEvery project also needs a project.json and a matching .xproj file. This project.json is the\nsource of truth for a project's dependencies and configuration options.\nSolution need to contain solution folders that match the physical folder (src, test, tools,\netc.).\nAssembly naming pattern", "Links": [] }, { "Number": 7, - "Text": "7 / 127The general naming pattern is Docfx...Unit testsWe use xUnit.net for all unit testing.Coding StandardsPlease refer to C# Coding standards for detailed guideline for C# coding standards.TODO Template Coding standardsTODO Template Preprocess JS Coding standards", + "Text": "7 / 131\nThe general naming pattern is Docfx...\nUnit tests\nWe use xUnit.net for all unit testing.\nCoding Standards\nPlease refer to C# Coding standards for detailed guideline for C# coding standards.\nTODO Template Coding standards\nTODO Template Preprocess JS Coding standards", "Links": [ { "Goto": { @@ -601,7 +628,7 @@ }, { "Number": 8, - "Text": "8 / 127C# Coding StandardsIntroductionThe coding standard will be used in conjunction with customized version of StyleCop andFxCop [TODO] during both development and build process. This will help ensure that thestandard is followed by all developers on the team in a consistent manner.\"Any fool can write code that a computer can understand. Good programmers writecode that humans understand\".Martin Fowler. Refactoring: Improving the design of existing code.PurposeThe aim of this section is to define a set of C# coding standards to be used by CAPS buildteam to guarantee maximum legibility, reliability, re-usability and homogeneity of our code.Each section is marked Mandatory or Recommended. Mandatory sections, will be enforcedduring code reviews as well as tools like StyleCop and FxCop, and code will not beconsidered complete until it is compliant.ScopeThis section contains general C# coding standards which can be applied to any type ofapplication developed in C#, based on Framework Design Guidelines\uF1C5.It does not pretend to be a tutorial on C#. It only includes a set of limitations andrecommendations focused on clarifying the development.ToolsResharper\uF1C5 is a great 3rd party code cleanup and style tool.StyleCop\uF1C5 analyzes C# srouce code to enforce a set of style and consistency rules andhas been integrated into many 3rd party development tools such as Resharper.FxCop\uF1C5 is an application that analyzes managed code assemblies (code that targetsthe .NET Framework common language runtime) and reports information about theassemblies, such as possible design, localization, performance, and securityimprovements.C# Stylizer\uF1C5 does many of the style rules automaticallyHighlights of Coding StandardsThis section is not intended to give a summary of all the coding standards that enabled byour customized StyleCop, but to give a highlight of some rules one will possibly meet in", + "Text": "8 / 131\nC# Coding Standards\nIntroduction\nThe coding standard will be used in conjunction with customized version of StyleCop and\nFxCop [TODO] during both development and build process. This will help ensure that the\nstandard is followed by all developers on the team in a consistent manner.\n\"Any fool can write code that a computer can understand. Good programmers write\ncode that humans understand\".\nMartin Fowler. Refactoring: Improving the design of existing code.\nPurpose\nThe aim of this section is to define a set of C# coding standards to be used by CAPS build\nteam to guarantee maximum legibility, reliability, re-usability and homogeneity of our code.\nEach section is marked Mandatory or Recommended. Mandatory sections, will be enforced\nduring code reviews as well as tools like StyleCop and FxCop, and code will not be\nconsidered complete until it is compliant.\nScope\nThis section contains general C# coding standards which can be applied to any type of\napplication developed in C#, based on Framework Design Guidelines\uF1C5 .\nIt does not pretend to be a tutorial on C#. It only includes a set of limitations and\nrecommendations focused on clarifying the development.\nTools\nResharper\uF1C5 is a great 3rd party code cleanup and style tool.\nStyleCop\uF1C5 analyzes C# srouce code to enforce a set of style and consistency rules and\nhas been integrated into many 3rd party development tools such as Resharper.\nFxCop\uF1C5 is an application that analyzes managed code assemblies (code that targets\nthe .NET Framework common language runtime) and reports information about the\nassemblies, such as possible design, localization, performance, and security\nimprovements.\nC# Stylizer\uF1C5 does many of the style rules automatically\nHighlights of Coding Standards\nThis section is not intended to give a summary of all the coding standards that enabled by\nour customized StyleCop, but to give a highlight of some rules one will possibly meet in", "Links": [ { "Uri": "http://msdn.microsoft.com/en-us/library/ms229042.aspx" @@ -652,12 +679,12 @@ }, { "Number": 9, - "Text": "9 / 127daily coding life. It also provides some recommended however not mandatory(which meansnot enabled in StyleCop) coding standards.File Layout (Recommended)Only one public class is allowed per file.The file name is derived from the class name.Class Definition Order (Mandatory)The class definition contains class members in the following order, from less restrictedscope (public) to more restrictive (private):Nested types, e.g. classes, enum, struct, etc.Field members, e.g. member variables, const, etc.Member functionsConstructorsFinalizer (Do not use unless absolutely necessary)Methods (Properties, Events, Operations, Overridables, Static)Private nested typesNaming (Mandatory)DO use PascalCasing for all public member, type, and namespace names consisting ofmultiple words.NOTE: A special case is made for two-letter acronyms in which both letters are capitalized,e.g. IOStreamDO use camelCasing for parameter names.Class : ObserverFilename: Observer.cs PropertyDescriptor HtmlTag IOStream propertyDescriptor htmlTag ioStream", + "Text": "9 / 131\ndaily coding life. It also provides some recommended however not mandatory(which means\nnot enabled in StyleCop) coding standards.\nFile Layout (Recommended)\nOnly one public class is allowed per file.\nThe file name is derived from the class name.\nClass Definition Order (Mandatory)\nThe class definition contains class members in the following order, from less restricted\nscope (public) to more restrictive (private):\nNested types, e.g. classes, enum, struct, etc.\nField members, e.g. member variables, const, etc.\nMember functions\nConstructors\nFinalizer (Do not use unless absolutely necessary)\nMethods (Properties, Events, Operations, Overridables, Static)\nPrivate nested types\nNaming (Mandatory)\nDO use PascalCasing for all public member, type, and namespace names consisting of\nmultiple words.\nNOTE: A special case is made for two-letter acronyms in which both letters are capitalized,\ne.g. IOStream\nDO use camelCasing for parameter names.\nClass : Observer\nFilename: Observer.cs\nPropertyDescriptor\nHtmlTag\nIOStream\npropertyDescriptor\nhtmlTag\nioStream", "Links": [] }, { "Number": 10, - "Text": "10 / 127DO start with underscore for private fieldsDO start static readonly fields, constants with capitalized caseDO NOT capitalize each word in so-called closed-form compound words\uF1C5.DO have \"Async\" explicitly in the Async method name to notice people how to use itproperlyFormatting (Mandatory)DO use spaces over tabs, and always show all spaces/tabs in IDETipsVisual Studio > TOOLS > Options > Text Editor > C# > Tabs > Insert spaces (Tab size:4)Visual Studio > Edit > Advanced > View White SpaceDO add using inside namespace declarationDO add a space when:1. for (var i = 0; i < 1; i++)2. if (a == b)Cross-platform codingOur code should supports multiple operating systems. Don't assume we only run (anddevelop) on Windows. Code should be sensitvie to the differences between OS's. Here aresome specifics to consider. private readonly Guid _userId = Guid.NewGuid(); private static readonly IEntityAccessor EntityAccessor = null; private const string MetadataName = \"MetadataName\"; namespace Microsoft.Content.Build.BuildWorker.UnitTest { using System; }", + "Text": "10 / 131\nDO start with underscore for private fields\nDO start static readonly fields, constants with capitalized case\nDO NOT capitalize each word in so-called closed-form compound words\uF1C5 .\nDO have \"Async\" explicitly in the Async method name to notice people how to use it\nproperly\nFormatting (Mandatory)\nDO use spaces over tabs, and always show all spaces/tabs in IDE\nTips\nVisual Studio > TOOLS > Options > Text Editor > C# > Tabs > Insert spaces (Tab size:\n4)\nVisual Studio > Edit > Advanced > View White Space\nDO add using inside namespace declaration\nDO add a space when:\n1. for (var i = 0; i < 1; i++)\n2. if (a == b)\nCross-platform coding\nOur code should supports multiple operating systems. Don't assume we only run (and\ndevelop) on Windows. Code should be sensitvie to the differences between OS's. Here are\nsome specifics to consider.\nprivate readonly Guid _userId = Guid.NewGuid();\nprivate static readonly IEntityAccessor EntityAccessor = null;\nprivate const string MetadataName = \"MetadataName\";\nnamespace Microsoft.Content.Build.BuildWorker.UnitTest\n{ \nusing System;\n}", "Links": [ { "Uri": "http://msdn.microsoft.com/en-us/library/ms229043.aspx" @@ -672,27 +699,27 @@ }, { "Number": 11, - "Text": "11 / 127DO use Enviroment.NewLine instead of hard-coding the line break instead of \\r\\n, asWindows uses \\r\\n and OSX/Linux uses \\n.NoteBe aware that thes line-endings may cause problems in code when using @\"\" text blockswith line breaks.DO Use Path.Combine() or Path.DirectorySeparatorChar to separate directories. If this isnot possible (such as in scripting), use a forward slash /. Windows is more forgivingthan Linux in this regard.Unit tests and functional testsAssembly namingThe unit tests for the Microsoft.Foo assembly live in the Microsoft.Foo.Tests assembly.The functional tests for the Microsoft.Foo assmebly live in theMicrosoft.Foo.FunctionalTests assmebly.In general there should be exactly one unit test assebmly for each product runtimeassembly. In general there should be one functional test assembly per repo. Exceptions canbe made for both.Unit test class namingTest class names end with Test and live in the same namespace as the class being tested.For example, the unit tests for the Microsoft.Foo.Boo class would be in a Microsoft.Foo.Booclass in the test assembly.Unit test method namingUnit test method names must be descriptive about what is being tested, under whatconditions, and what the expectations are. Pascal casing and underscores can be used toimprove readability. The following test names are correct:The following test names are incorrect:PublicApiArgumentsShouldHaveNotNullAnnotationPublic_api_arguments_should_have_not_null_annotationTest1Constructor", + "Text": "11 / 131\nDO use Enviroment.NewLine instead of hard-coding the line break instead of \\r\\n, as\nWindows uses \\r\\n and OSX/Linux uses \\n.\nNote\nBe aware that thes line-endings may cause problems in code when using @\"\" text blocks\nwith line breaks.\nDO Use Path.Combine() or Path.DirectorySeparatorChar to separate directories. If this is\nnot possible (such as in scripting), use a forward slash /. Windows is more forgiving\nthan Linux in this regard.\nUnit tests and functional tests\nAssembly naming\nThe unit tests for the Microsoft.Foo assembly live in the Microsoft.Foo.Tests assembly.\nThe functional tests for the Microsoft.Foo assmebly live in the\nMicrosoft.Foo.FunctionalTests assmebly.\nIn general there should be exactly one unit test assebmly for each product runtime\nassembly. In general there should be one functional test assembly per repo. Exceptions can\nbe made for both.\nUnit test class naming\nTest class names end with Test and live in the same namespace as the class being tested.\nFor example, the unit tests for the Microsoft.Foo.Boo class would be in a Microsoft.Foo.Boo\nclass in the test assembly.\nUnit test method naming\nUnit test method names must be descriptive about what is being tested, under what\nconditions, and what the expectations are. Pascal casing and underscores can be used to\nimprove readability. The following test names are correct:\nThe following test names are incorrect:\nPublicApiArgumentsShouldHaveNotNullAnnotation\nPublic_api_arguments_should_have_not_null_annotation\nTest1\nConstructor", "Links": [] }, { "Number": 12, - "Text": "12 / 127Unit test structureThe contents of every unit test should be split into three distinct stages, optionallyseparated by these comments:The crucial thing here is the Act stage is exactly one statement. That one statement isnothing more than a call to the one method that you are trying to test. keeping that onestatement as simple as possible is also very important. For example, this is not ideal:This style is not recomended because way too many things can go wrong in this onestatement. All the GetComplexParamN() calls can throw for a variety of reasons unrelated tothe test itself. It is thus unclear to someone running into a problem why the failure occured.The ideal pattern is to move the complex parameter building into the `Arrange section:Now the only reason the line with CallSomeMethod() can fail is if the method itself blew up.Testing exception messagesIn general testing the specific exception message in a unit test is important. This ensuresthat the exact desired exception is what is being tested rather than a different exception ofFormatStringGetData// Arrange// Act// Assertint result = myObj.CallSomeMethod(GetComplexParam1(), GetComplexParam2(), GetComplexParam3());// ArrangeP1 p1 = GetComplexParam1();P2 p2 = GetComplexParam2();P3 p3 = GetComplexParam3();// Actint result = myObj.CallSomeMethod(p1, p2, p3);// AssertAssert.AreEqual(1234, result);", + "Text": "12 / 131\nUnit test structure\nThe contents of every unit test should be split into three distinct stages, optionally\nseparated by these comments:\nThe crucial thing here is the Act stage is exactly one statement. That one statement is\nnothing more than a call to the one method that you are trying to test. keeping that one\nstatement as simple as possible is also very important. For example, this is not ideal:\nThis style is not recomended because way too many things can go wrong in this one\nstatement. All the GetComplexParamN() calls can throw for a variety of reasons unrelated to\nthe test itself. It is thus unclear to someone running into a problem why the failure occured.\nThe ideal pattern is to move the complex parameter building into the `Arrange section:\nNow the only reason the line with CallSomeMethod() can fail is if the method itself blew up.\nTesting exception messages\nIn general testing the specific exception message in a unit test is important. This ensures\nthat the exact desired exception is what is being tested rather than a different exception of\nFormatString\nGetData\n// Arrange\n// Act\n// Assert\nint result = myObj.CallSomeMethod(GetComplexParam1(), GetComplexParam2(),\nGetComplexParam3());\n// Arrange\nP1 p1 = GetComplexParam1();\nP2 p2 = GetComplexParam2();\nP3 p3 = GetComplexParam3();\n// Act\nint result = myObj.CallSomeMethod(p1, p2, p3);\n// Assert\nAssert.AreEqual(1234, result);", "Links": [] }, { "Number": 13, - "Text": "13 / 127the same type. In order to verify the exact exception it is important to verify the message.Use xUnit.net's plethora of built-in assertionsxUnit.net includes many kinds of assertions – please use the most appropriate one for yourtest. This will make the tests a lot more readable and also allow the test runner report thebest possible errors (whether it's local or the CI machine). For example, these are bad:These are good:Parallel testsBy default all unit test assemblies should run in parallel mode, which is the default. Unittests shouldn't depend on any shared state, and so should generally be runnable inparallel. If the tests fail in parallel, the first thing to do is to figure out why; do not justdisable parallel tests!var ex = Assert.Throws( () => fruitBasket.GetBananaById(1234));Assert.Equal( \"1234\", ex.Message);Assert.Equal(true, someBool);Assert.True(\"abc123\" == someString);Assert.True(list1.Length == list2.Length);for (int i = 0; i < list1.Length; i++) { Assert.True( String.Equals list1[i], list2[i], StringComparison.OrdinalIgnoreCase));}Assert.True(someBool);Assert.Equal(\"abc123\", someString);// built-in collection assertions!Assert.Equal(list1, list2, StringComparer.OrdinalIgnoreCase);", + "Text": "13 / 131\nthe same type. In order to verify the exact exception it is important to verify the message.\nUse xUnit.net's plethora of built-in assertions\nxUnit.net includes many kinds of assertions – please use the most appropriate one for your\ntest. This will make the tests a lot more readable and also allow the test runner report the\nbest possible errors (whether it's local or the CI machine). For example, these are bad:\nThese are good:\nParallel tests\nBy default all unit test assemblies should run in parallel mode, which is the default. Unit\ntests shouldn't depend on any shared state, and so should generally be runnable in\nparallel. If the tests fail in parallel, the first thing to do is to figure out why; do not just\ndisable parallel tests!\nvar ex = Assert.Throws(\n() => fruitBasket.GetBananaById(1234));\nAssert.Equal(\n\"1234\",\nex.Message);\nAssert.Equal(true, someBool);\nAssert.True(\"abc123\" == someString);\nAssert.True(list1.Length == list2.Length);\nfor (int i = 0; i < list1.Length; i++) {\nAssert.True(\nString.Equals\nlist1[i],\nlist2[i],\nStringComparison.OrdinalIgnoreCase));\n}\nAssert.True(someBool);\nAssert.Equal(\"abc123\", someString);\n// built-in collection assertions!\nAssert.Equal(list1, list2, StringComparer.OrdinalIgnoreCase);", "Links": [] }, { "Number": 14, - "Text": "14 / 127For functional tests it is reasonable to disable parallel tests.", + "Text": "14 / 131\nFor functional tests it is reasonable to disable parallel tests.", "Links": [] }, { "Number": 15, - "Text": "15 / 127MarkdownMarkdown\uF1C5 is a lightweight markup language with plain text formatting syntax. Docfxsupports CommonMark\uF1C5 compliant Markdown parsed through the Markdig\uF1C5 parsingengine.Link to Math ExpressionsBlock QuotesThis is a block quote.AlertsNOTEInformation the user should notice even if skimming.\uF431TIPOptional information to help a user be more successful.\uF431IMPORTANTEssential information required for user success.\uF623CAUTIONNegative potential consequences of an action.\uF623WARNINGDangerous certain consequences of an action.\uF333", + "Text": "15 / 131\nMarkdown\nMarkdown\uF1C5 is a lightweight markup language with plain text formatting syntax. Docfx\nsupports CommonMark\uF1C5 compliant Markdown parsed through the Markdig\uF1C5 parsing\nengine.\nLink to Math Expressions\nBlock Quotes\nThis is a block quote.\nAlerts\nNOTE\nInformation the user should notice even if skimming.\n\uF431\nTIP\nOptional information to help a user be more successful.\n\uF431\nIMPORTANT\nEssential information required for user success.\n\uF623\nCAUTION\nNegative potential consequences of an action.\n\uF623\nWARNING\nDangerous certain consequences of an action.\n\uF333", "Links": [ { "Uri": "https://daringfireball.net/projects/markdown/" @@ -735,7 +762,7 @@ { "Number": 16, "NumberOfImages": 1, - "Text": "16 / 127ImageMermaid DiagramsFlowchartCode SnippetThe example highlights lines 2, line 5 to 7 and lines 9 to the end of the file.MY TODOThis is a TODO.TextOneTwoHardRoundDecisionResult 1Result 2", + "Text": "16 / 131\nImage\nMermaid Diagrams\nFlowchart\nCode Snippet\nThe example highlights lines 2, line 5 to 7 and lines 9 to the end of the file.\nMY TODO\nThis is a TODO.\nText\nOne\nTwo\nHard Round Decision\nResult 1\nResult 2", "Links": [ { "Uri": "https://learn.microsoft.com/en-us/media/learn/not-found/learn-not-found-light-mode.png?branch=main" @@ -747,12 +774,12 @@ }, { "Number": 17, - "Text": "17 / 127Math ExpressionsThis sentence uses $ delimiters to show math inline: The Cauchy-Schwarz InequalityThis expression uses \\$ to display a dollar sign: To split $100 in half, we calculate using System;using Azure;using Azure.Storage;using Azure.Storage.Blobs;class Program{ static void Main(string[] args) { // Define the connection string for the storage account string connectionString = \"DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.windows.net\"; // Create a new BlobServiceClient using the connection string var blobServiceClient = new BlobServiceClient(connectionString); // Create a new container var container = blobServiceClient.CreateBlobContainer(\"mycontainer\"); // Upload a file to the container using (var fileStream = File.OpenRead(\"path/to/file.txt\")) { container.UploadBlob(\"file.txt\", fileStream); } // Download the file from the container var downloadedBlob = container.GetBlobClient(\"file.txt\").Download(); using (var fileStream = File.OpenWrite(\"path/to/downloaded-file.txt\")) { downloadedBlob.Value.Content.CopyTo(fileStream); } }}", + "Text": "17 / 131\nMath Expressions\nThis sentence uses $ delimiters to show math inline:\nThe Cauchy-Schwarz Inequality\nThis expression uses \\$ to display a dollar sign:\nTo split $100 in half, we calculate\nusing System;\nusing Azure;\nusing Azure.Storage;\nusing Azure.Storage.Blobs;\nclass Program\n{ \nstatic void Main(string[] args)\n{ \n// Define the connection string for the storage account\nstring connectionString = \"DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.windows.net\";\n// Create a new BlobServiceClient using the connection string\nvar blobServiceClient = new BlobServiceClient(connectionString);\n// Create a new container\nvar container = blobServiceClient.CreateBlobContainer(\"mycontainer\");\n// Upload a file to the container\nusing (var fileStream = File.OpenRead(\"path/to/file.txt\"))\n{ \ncontainer.UploadBlob(\"file.txt\", fileStream);\n} \n// Download the file from the container\nvar downloadedBlob = container.GetBlobClient(\"file.txt\").Download();\nusing (var fileStream = File.OpenWrite(\"path/to/downloaded-file.txt\"))\n{ \ndownloadedBlob.Value.Content.CopyTo(fileStream);\n} \n}\n}", "Links": [] }, { "Number": 18, - "Text": "18 / 127Custom Syntax HighlightingTabsLinuxWindowsThe above tab group was created with the following syntax:Tabs are indicated by using a specific link syntax within a Markdown header. The syntax canbe described as follows:A tab starts with a Markdown header, #, and is followed by a Markdown link [](). The textof the link will become the text of the tab header, displayed to the customer. In order forthe header to be recognized as a tab, the link itself must start with #tab/ and be followedby an ID representing the content of the tab. The ID is used to sync all same-ID tabs acrossthe page. Using the above example, when a user selects a tab with the link #tab/windows, alltabs with the link #tab/windows on the page will be selected.Dependent tabsresource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = { name: 'hello' // (...)}Content for Linux...# [Linux](#tab/linux)Content for Linux...# [Windows](#tab/windows)Content for Windows...---# [Tab Display Name](#tab/tab-id)", + "Text": "18 / 131\nCustom Syntax Highlighting\nTabs\nLinux Windows\nThe above tab group was created with the following syntax:\nTabs are indicated by using a specific link syntax within a Markdown header. The syntax can\nbe described as follows:\nA tab starts with a Markdown header, #, and is followed by a Markdown link [](). The text\nof the link will become the text of the tab header, displayed to the customer. In order for\nthe header to be recognized as a tab, the link itself must start with #tab/ and be followed\nby an ID representing the content of the tab. The ID is used to sync all same-ID tabs across\nthe page. Using the above example, when a user selects a tab with the link #tab/windows, all\ntabs with the link #tab/windows on the page will be selected.\nDependent tabs\nresource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {\nname: 'hello'\n// (...)\n}\nContent for Linux...\n# [Linux](#tab/linux)\nContent for Linux...\n# [Windows](#tab/windows)\nContent for Windows...\n---\n# [Tab Display Name](#tab/tab-id)", "Links": [ { "Goto": { @@ -767,7 +794,7 @@ }, { "Number": 19, - "Text": "19 / 127It's possible to make the selection in one set of tabs dependent on the selection in anotherset of tabs. Here's an example of that in action:.NETTypeScriptREST APINotice how changing the Linux/Windows selection above changes the content in the .NETand TypeScript tabs. This is because the tab group defines two versions for each .NET andTypeScript, where the Windows/Linux selection above determines which version is shownfor .NET/TypeScript. Here's the markup that shows how this is done:DetailsDemo.NET content for Linux...# [.NET](#tab/dotnet/linux).NET content for Linux...# [.NET](#tab/dotnet/windows).NET content for Windows...# [TypeScript](#tab/typescript/linux)TypeScript content for Linux...# [TypeScript](#tab/typescript/windows)TypeScript content for Windows...# [REST API](#tab/rest)REST API content, independent of platform...---", + "Text": "19 / 131\nIt's possible to make the selection in one set of tabs dependent on the selection in another\nset of tabs. Here's an example of that in action:\n.NET TypeScript REST API\nNotice how changing the Linux/Windows selection above changes the content in the .NET\nand TypeScript tabs. This is because the tab group defines two versions for each .NET and\nTypeScript, where the Windows/Linux selection above determines which version is shown\nfor .NET/TypeScript. Here's the markup that shows how this is done:\nDetails\nDemo\n.NET content for Linux...\n# [.NET](#tab/dotnet/linux)\n.NET content for Linux...\n# [.NET](#tab/dotnet/windows)\n.NET content for Windows...\n# [TypeScript](#tab/typescript/linux)\nTypeScript content for Linux...\n# [TypeScript](#tab/typescript/windows)\nTypeScript content for Windows...\n# [REST API](#tab/rest)\nREST API content, independent of platform...\n---", "Links": [ { "Goto": { @@ -782,7 +809,7 @@ }, { "Number": 20, - "Text": "20 / 127ClassesClass1This is a test class.StructsIssue5432Namespace BuildFromAssembly", + "Text": "20 / 131\nClasses\nClass1\nThis is a test class.\nStructs\nIssue5432\nNamespace BuildFromAssembly", "Links": [ { "Goto": { @@ -806,7 +833,7 @@ }, { "Number": 21, - "Text": "21 / 127Namespace:BuildFromAssemblyAssembly:BuildFromAssembly.dllThis is a test class.Inheritanceobject\uF1C5 Class1Inherited Membersobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ToString()\uF1C5 ,object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5 , object.GetHashCode()\uF1C5ConstructorsMethodsHello World.Class Class1public class Class1\uF12CClass1()public Class1()HelloWorld()public static void HelloWorld()", + "Text": "21 / 131\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nThis is a test class.\nInheritance\nobject\uF1C5 Class1\nInherited Members\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ToString()\uF1C5 ,\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.GetHashCode()\uF1C5\nConstructors\nMethods\nHello World.\nClass Class1\npublic class Class1\n\uF12C\nClass1()\npublic Class1()\nHelloWorld()\npublic static void HelloWorld()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -911,7 +938,7 @@ }, { "Number": 22, - "Text": "22 / 127Namespace:BuildFromAssemblyAssembly:BuildFromAssembly.dllInherited MembersValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,object.GetType()\uF1C5 , object.Equals(object, object)\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5PropertiesProperty Valuestring\uF1C5Struct Issue5432public struct Issue5432Namepublic string Name { get; }", + "Text": "22 / 131\nNamespace: BuildFromAssembly\nAssembly: BuildFromAssembly.dll\nInherited Members\nValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,\nobject.GetType()\uF1C5 , object.Equals(object, object)\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nProperties\nProperty Value\nstring\uF1C5\nStruct Issue5432\npublic struct Issue5432\nName\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.valuetype.equals" @@ -1007,7 +1034,7 @@ }, { "Number": 23, - "Text": "23 / 127ClassesCSharpNamespace BuildFromCSharpSourceCode", + "Text": "23 / 131\nClasses\nCSharp\nNamespace BuildFromCSharpSourceCode", "Links": [ { "Goto": { @@ -1022,7 +1049,7 @@ }, { "Number": 24, - "Text": "24 / 127Namespace:BuildFromCSharpSourceCodeInheritanceobject\uF1C5 CSharpInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsParametersargs string\uF1C5[]Class CSharppublic class CSharp\uF12CMain(string[])public static void Main(string[] args)", + "Text": "24 / 131\nNamespace: BuildFromCSharpSourceCode\nInheritance\nobject\uF1C5 CSharp\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nParameters\nargs string\uF1C5 []\nClass CSharp\npublic class CSharp\n\uF12C\nMain(string[])\npublic static void Main(string[] args)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1154,7 +1181,7 @@ }, { "Number": 25, - "Text": "25 / 127NamespacesBuildFromProject.Issue8540ClassesClass1Class1.Issue8665Class1.Issue8696AttributeClass1.Issue8948Class1.TestDogClass representing a dog.InheritdocInheritdoc.Issue6366Inheritdoc.Issue6366.Class1Inheritdoc.Issue6366.Class2Inheritdoc.Issue7035Inheritdoc.Issue7484This is a test class to have something for DocFX to document.Inheritdoc.Issue8101Issue8725A nice classStructsInheritdoc.Issue8129InterfacesClass1.IIssue8948IInheritdocNamespace BuildFromProject", + "Text": "25 / 131\nNamespaces\nBuildFromProject.Issue8540\nClasses\nClass1\nClass1.Issue8665\nClass1.Issue8696Attribute\nClass1.Issue8948\nClass1.Test\nDog\nClass representing a dog.\nInheritdoc\nInheritdoc.Issue6366\nInheritdoc.Issue6366.Class1\nInheritdoc.Issue6366.Class2\nInheritdoc.Issue7035\nInheritdoc.Issue7484\nThis is a test class to have something for DocFX to document.\nInheritdoc.Issue8101\nInheritdoc.Issue9736\nInheritdoc.Issue9736.JsonApiOptions\nIssue8725\nA nice class\nStructs\nInheritdoc.Issue8129\nNamespace BuildFromProject", "Links": [ { "Goto": { @@ -1410,7 +1437,7 @@ }, { "Goto": { - "PageNumber": 60, + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -1419,7 +1446,7 @@ }, { "Goto": { - "PageNumber": 60, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -1428,7 +1455,7 @@ }, { "Goto": { - "PageNumber": 37, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -1437,7 +1464,7 @@ }, { "Goto": { - "PageNumber": 37, + "PageNumber": 63, "Type": 2, "Coordinates": { "Top": 0 @@ -1446,7 +1473,43 @@ }, { "Goto": { - "PageNumber": 48, + "PageNumber": 63, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 63, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 65, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 60, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 60, "Type": 2, "Coordinates": { "Top": 0 @@ -1457,8 +1520,80 @@ }, { "Number": 26, - "Text": "26 / 127EnumsClass1.Issue9260", + "Text": "26 / 131\nInterfaces\nClass1.IIssue8948\nIInheritdoc\nInheritdoc.Issue9736.IJsonApiOptions\nEnums\nClass1.Issue9260", "Links": [ + { + "Goto": { + "PageNumber": 37, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 37, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 48, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 62, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 62, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 62, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 62, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 62, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, { "Goto": { "PageNumber": 44, @@ -1481,7 +1616,7 @@ }, { "Number": 27, - "Text": "27 / 127NamespacesBuildFromProject.Issue8540.ABuildFromProject.Issue8540.BNamespace BuildFromProject.Issue8540", + "Text": "27 / 131\nNamespaces\nBuildFromProject.Issue8540.A\nBuildFromProject.Issue8540.B\nNamespace BuildFromProject.Issue8540", "Links": [ { "Goto": { @@ -1577,7 +1712,7 @@ }, { "Number": 28, - "Text": "28 / 127ClassesANamespace BuildFromProject.Issue8540.A", + "Text": "28 / 131\nClasses\nA\nNamespace BuildFromProject.Issue8540.A", "Links": [ { "Goto": { @@ -1592,7 +1727,7 @@ }, { "Number": 29, - "Text": "29 / 127Namespace:BuildFromProject.Issue8540.AAssembly:BuildFromProject.dllInheritanceobject\uF1C5 AInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Apublic class A\uF12C", + "Text": "29 / 131\nNamespace: BuildFromProject.Issue8540.A\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 A\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass A\npublic class A\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1715,7 +1850,7 @@ }, { "Number": 30, - "Text": "30 / 127ClassesBNamespace BuildFromProject.Issue8540.B", + "Text": "30 / 131\nClasses\nB\nNamespace BuildFromProject.Issue8540.B", "Links": [ { "Goto": { @@ -1730,7 +1865,7 @@ }, { "Number": 31, - "Text": "31 / 127Namespace:BuildFromProject.Issue8540.BAssembly:BuildFromProject.dllInheritanceobject\uF1C5 BInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Bpublic class B\uF12C", + "Text": "31 / 131\nNamespace: BuildFromProject.Issue8540.B\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 B\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass B\npublic class B\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1853,7 +1988,7 @@ }, { "Number": 32, - "Text": "32 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1ImplementsIClass1Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsPricing models are used to calculate theoretical option values1-Black Scholes2-Black763-Black76Fut4-Equity Tree5-Variance Swap6-Dividend ForecastIConfiguration related helper and extension routines.Class Class1public class Class1 : IClass1\uF12CIssue1651()public void Issue1651()Issue1887()", + "Text": "32 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1\nImplements\nIClass1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nPricing models are used to calculate theoretical option values\n1 - Black Scholes\n2 - Black76\n3 - Black76Fut\n4 - Equity Tree\n5 - Variance Swap\n6 - Dividend Forecast\nIConfiguration related helper and extension routines.\nClass Class1\npublic class Class1 : IClass1\n\uF12C\nIssue1651()\npublic void Issue1651()\nIssue1887()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -1958,12 +2093,12 @@ }, { "Number": 33, - "Text": "33 / 127ExamplesRemarksFor example:Remarkspublic void Issue1887()Issue2623()public void Issue2623()MyClass myClass = new MyClass();void Update(){ myClass.Execute();}MyClass myClass = new MyClass();void Update(){ myClass.Execute();}Issue2723()public void Issue2723()NOTEThis is a . & \" '\uF431", + "Text": "33 / 131\nExamples\nRemarks\nFor example:\nRemarks\npublic void Issue1887()\nIssue2623()\npublic void Issue2623()\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\nMyClass myClass = new MyClass();\nvoid Update()\n{ \nmyClass.Execute();\n}\nIssue2723()\npublic void Issue2723()\nNOTE\nThis is a . & \" '\n\uF431", "Links": [] }, { "Number": 34, - "Text": "34 / 127Inline .link\uF1C5ExamplesRemarksfor (var i = 0; i > 10; i++) // & \" 'var range = new Range { Min = 0, Max = 10 };var range = new Range { Min = 0, Max = 10 };Issue4017()public void Issue4017()public void HookMessageDeleted(BaseSocketClient client){ client.MessageDeleted += HandleMessageDelete;}public Task HandleMessageDelete(Cacheable cachedMessage, ISocketMessageChannel channel){ // check if the message exists in cache; if not, we cannot report what was removed if (!cachedMessage.HasValue) return; var message = cachedMessage.Value; Console.WriteLine($\"A message ({message.Id}) from {message.Author} was removed from the channel {channel.Name} ({channel.Id}):\" + Environment.NewLine + message.Content); return Task.CompletedTask;}void Update(){", + "Text": "34 / 131\nInline .\nlink\uF1C5\nExamples\nRemarks\nfor (var i = 0; i > 10; i++) // & \" '\nvar range = new Range { Min = 0, Max = 10 };\nvar range = new Range { Min = 0, Max = 10 };\nIssue4017()\npublic void Issue4017()\npublic void HookMessageDeleted(BaseSocketClient client)\n{ \nclient.MessageDeleted += HandleMessageDelete;\n}\npublic Task HandleMessageDelete(Cacheable cachedMessage,\nISocketMessageChannel channel)\n{ \n// check if the message exists in cache; if not, we cannot report what\nwas removed\nif (!cachedMessage.HasValue) return;\nvar message = cachedMessage.Value;\nConsole.WriteLine($\"A message ({message.Id}) from {message.Author} was removed\nfrom the channel {channel.Name} ({channel.Id}):\"\n+ Environment.NewLine\n+ message.Content);\nreturn Task.CompletedTask;\n}\nvoid Update()\n{", "Links": [ { "Uri": "https://www.github.com/" @@ -1978,12 +2113,12 @@ }, { "Number": 35, - "Text": "35 / 127Remarks@\"\\\\?\\\" @\"\\\\?\\\"RemarksThere's really no reason to not believe that this class can test things.TermDescriptionA TermA DescriptionBee TermBee DescriptionType ParametersT myClass.Execute();}Issue4392()public void Issue4392()Issue7484()public void Issue7484()Issue8764()public void Issue8764() where T : unmanagedIssue896()", + "Text": "35 / 131\nRemarks\n@\"\\\\?\\\" @\"\\\\?\\\"\nRemarks\nThere's really no reason to not believe that this class can test things.\nTerm Description\nA Term A Description\nBee Term Bee Description\nType Parameters\nT \nmyClass.Execute();\n}\nIssue4392()\npublic void Issue4392()\nIssue7484()\npublic void Issue7484()\nIssue8764()\npublic void Issue8764() where T : unmanaged\nIssue896()", "Links": [] }, { "Number": 36, - "Text": "36 / 127TestSee AlsoClass1.Test, Class1Calculates the determinant of a 3-dimensional matrix:Returns the smallest value:Returnsdouble\uF1C5This method should do something...RemarksThis is remarks.public void Issue896()Issue9216()public static double Issue9216()XmlCommentIncludeTag()public void XmlCommentIncludeTag()", + "Text": "36 / 131\nTest\nSee Also\nClass1.Test, Class1\nCalculates the determinant of a 3-dimensional matrix:\nReturns the smallest value:\nReturns\ndouble\uF1C5\nThis method should do something...\nRemarks\nThis is remarks.\npublic void Issue896()\nIssue9216()\npublic static double Issue9216()\nXmlCommentIncludeTag()\npublic void XmlCommentIncludeTag()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.double" @@ -2025,7 +2160,7 @@ }, { "Number": 37, - "Text": "37 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllMethodsDoes nothing with generic type T.Type ParametersTA generic type.Interface Class1.IIssue8948public interface Class1.IIssue8948DoNothing()void DoNothing()", + "Text": "37 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\nInterface Class1.IIssue8948\npublic interface Class1.IIssue8948\nDoNothing()\nvoid DoNothing()", "Links": [ { "Goto": { @@ -2058,7 +2193,7 @@ }, { "Number": 38, - "Text": "38 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1.Issue8665Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ConstructorsParametersfoo int\uF1C5Class Class1.Issue8665public class Class1.Issue8665\uF12CIssue8665()public Issue8665()Issue8665(int)public Issue8665(int foo)Issue8665(int, char)public Issue8665(int foo, char bar)", + "Text": "38 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1.Issue8665\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nParameters\nfoo int\uF1C5\nClass Class1.Issue8665\npublic class Class1.Issue8665\n\uF12C\nIssue8665()\npublic Issue8665()\nIssue8665(int)\npublic Issue8665(int foo)\nIssue8665(int, char)\npublic Issue8665(int foo, char bar)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2172,7 +2307,7 @@ }, { "Number": 39, - "Text": "39 / 127Parametersfoo int\uF1C5bar char\uF1C5Parametersfoo int\uF1C5bar char\uF1C5baz string\uF1C5PropertiesProperty Valuechar\uF1C5Property Valuestring\uF1C5Issue8665(int, char, string)public Issue8665(int foo, char bar, string baz)Barpublic char Bar { get; }Bazpublic string Baz { get; }", + "Text": "39 / 131\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nParameters\nfoo int\uF1C5\nbar char\uF1C5\nbaz string\uF1C5\nProperties\nProperty Value\nchar\uF1C5\nProperty Value\nstring\uF1C5\nIssue8665(int, char, string)\npublic Issue8665(int foo, char bar, string baz)\nBar\npublic char Bar { get; }\nBaz\npublic string Baz { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -2241,7 +2376,7 @@ }, { "Number": 40, - "Text": "40 / 127Property Valueint\uF1C5Foopublic int Foo { get; }", + "Text": "40 / 131\nProperty Value\nint\uF1C5\nFoo\npublic int Foo { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -2256,7 +2391,7 @@ }, { "Number": 41, - "Text": "41 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Attribute\uF1C5 Class1.Issue8696AttributeInherited MembersAttribute.Equals(object)\uF1C5 , Attribute.GetCustomAttribute(Assembly, Type)\uF1C5 ,Attribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(MemberInfo, Type)\uF1C5 ,Attribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(Module, Type)\uF1C5 ,Attribute.GetCustomAttribute(Module, Type, bool)\uF1C5 ,Attribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5 ,Attribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(Assembly)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, bool)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, Type)\uF1C5 ,Attribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, bool)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, Type)\uF1C5 ,Attribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(Module)\uF1C5 , Attribute.GetCustomAttributes(Module, bool)\uF1C5 ,Attribute.GetCustomAttributes(Module, Type)\uF1C5 ,Attribute.GetCustomAttributes(Module, Type, bool)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5 ,Attribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5 , Attribute.GetHashCode()\uF1C5 ,Attribute.IsDefaultAttribute()\uF1C5 , Attribute.IsDefined(Assembly, Type)\uF1C5 ,Attribute.IsDefined(Assembly, Type, bool)\uF1C5 , Attribute.IsDefined(MemberInfo, Type)\uF1C5 ,Attribute.IsDefined(MemberInfo, Type, bool)\uF1C5 , Attribute.IsDefined(Module, Type)\uF1C5 ,Attribute.IsDefined(Module, Type, bool)\uF1C5 , Attribute.IsDefined(ParameterInfo, Type)\uF1C5 ,Attribute.IsDefined(ParameterInfo, Type, bool)\uF1C5 , Attribute.Match(object)\uF1C5 ,Class Class1.Issue8696Attributepublic class Class1.Issue8696Attribute : Attribute\uF12C\uF12C", + "Text": "41 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Attribute\uF1C5 Class1.Issue8696Attribute\nInherited Members\nAttribute.Equals(object)\uF1C5 , Attribute.GetCustomAttribute(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(Module, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(Module, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttribute(ParameterInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttribute(ParameterInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(Assembly, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(MemberInfo, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module)\uF1C5 , Attribute.GetCustomAttributes(Module, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(Module, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(Module, Type, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, bool)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, Type)\uF1C5 ,\nAttribute.GetCustomAttributes(ParameterInfo, Type, bool)\uF1C5 , Attribute.GetHashCode()\uF1C5 ,\nAttribute.IsDefaultAttribute()\uF1C5 , Attribute.IsDefined(Assembly, Type)\uF1C5 ,\nAttribute.IsDefined(Assembly, Type, bool)\uF1C5 , Attribute.IsDefined(MemberInfo, Type)\uF1C5 ,\nAttribute.IsDefined(MemberInfo, Type, bool)\uF1C5 , Attribute.IsDefined(Module, Type)\uF1C5 ,\nAttribute.IsDefined(Module, Type, bool)\uF1C5 , Attribute.IsDefined(ParameterInfo, Type)\uF1C5 ,\nAttribute.IsDefined(ParameterInfo, Type, bool)\uF1C5 , Attribute.Match(object)\uF1C5 ,\nClass Class1.Issue8696Attribute\npublic class Class1.Issue8696Attribute : Attribute\n\uF12C \uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2631,7 +2766,7 @@ }, { "Number": 42, - "Text": "42 / 127Attribute.TypeId\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5ConstructorsParametersdescription string\uF1C5boundsMin int\uF1C5boundsMax int\uF1C5validGameModes string\uF1C5[]hasMultipleSelections bool\uF1C5enumType Type\uF1C5Issue8696Attribute(string?, int, int, string[]?, bool,Type?)[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null, false, null)]public Issue8696Attribute(string? description = null, int boundsMin = 0, int boundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false, Type? enumType = null)", + "Text": "42 / 131\nAttribute.TypeId\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nConstructors\nParameters\ndescription string\uF1C5\nboundsMin int\uF1C5\nboundsMax int\uF1C5\nvalidGameModes string\uF1C5 []\nhasMultipleSelections bool\uF1C5\nenumType Type\uF1C5\nIssue8696Attribute(string?, int, int, string[]?, bool,\nType?)\n[Class1.Issue8696(\"Changes the name of the server in the server list\", 0, 0, null,\nfalse, null)]\npublic Issue8696Attribute(string? description = null, int boundsMin = 0, int\nboundsMax = 0, string[]? validGameModes = null, bool hasMultipleSelections = false,\nType? enumType = null)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.attribute.typeid" @@ -2745,7 +2880,7 @@ }, { "Number": 43, - "Text": "43 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Class1.Issue8948ImplementsClass1.IIssue8948Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsDoes nothing with generic type T.Type ParametersTA generic type.Class Class1.Issue8948public class Class1.Issue8948 : Class1.IIssue8948\uF12CDoNothing()public void DoNothing()", + "Text": "43 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Class1.Issue8948\nImplements\nClass1.IIssue8948\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nDoes nothing with generic type T.\nType Parameters\nT\nA generic type.\nClass Class1.Issue8948\npublic class Class1.Issue8948 : Class1.IIssue8948\n\uF12C\nDoNothing()\npublic void DoNothing()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -2868,7 +3003,7 @@ }, { "Number": 44, - "Text": "44 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllFieldsValue = 0This is a regular enum value.[Obsolete] OldAndUnusedValue = 1This is old and unused. You shouldn't use it anymore.[Obsolete(\"Use Value\")] OldAndUnusedValue2 = 2This is old and unused. You shouldn't use it anymore.Enum Class1.Issue9260public enum Class1.Issue9260", + "Text": "44 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nFields\nValue = 0\nThis is a regular enum value.\nThis is a remarks section. Very important remarks about Value go here.\n[Obsolete] OldAndUnusedValue = 1\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\n[Obsolete(\"Use Value\")] OldAndUnusedValue2 = 2\nThis is old and unused. You shouldn't use it anymore.\nDon't use this, seriously! Use Value instead.\nEnum Class1.Issue9260\npublic enum Class1.Issue9260", "Links": [ { "Goto": { @@ -2901,7 +3036,7 @@ }, { "Number": 45, - "Text": "45 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 Class1.TestInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Class1.Testpublic class Class1.Test\uF12C", + "Text": "45 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Class1.Test\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Class1.Test\npublic class Class1.Test\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3006,7 +3141,7 @@ }, { "Number": 46, - "Text": "46 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllClass representing a dog.Inheritanceobject\uF1C5 DogInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ConstructorsConstructor.Parametersname string\uF1C5Name of the dog.age int\uF1C5Age of the dog.PropertiesClass Dogpublic class Dog\uF12CDog(string, int)public Dog(string name, int age)", + "Text": "46 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nClass representing a dog.\nInheritance\nobject\uF1C5 Dog\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nConstructor.\nParameters\nname string\uF1C5\nName of the dog.\nage int\uF1C5\nAge of the dog.\nProperties\nClass Dog\npublic class Dog\n\uF12C\nDog(string, int)\npublic Dog(string name, int age)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3129,7 +3264,7 @@ }, { "Number": 47, - "Text": "47 / 127Age of the dog.Property Valueint\uF1C5Name of the dog.Property Valuestring\uF1C5Agepublic int Age { get; }Namepublic string Name { get; }", + "Text": "47 / 131\nAge of the dog.\nProperty Value\nint\uF1C5\nName of the dog.\nProperty Value\nstring\uF1C5\nAge\npublic int Age { get; }\nName\npublic string Name { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -3153,7 +3288,7 @@ }, { "Number": 48, - "Text": "48 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllMethodsThis method should do something...Interface IInheritdocpublic interface IInheritdocIssue7629()void Issue7629()", + "Text": "48 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nMethods\nThis method should do something...\nInterface IInheritdoc\npublic interface IInheritdoc\nIssue7629()\nvoid Issue7629()", "Links": [ { "Goto": { @@ -3186,7 +3321,7 @@ }, { "Number": 49, - "Text": "49 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 InheritdocImplementsIInheritdoc, IDisposable\uF1C5Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsPerforms application-defined tasks associated with freeing, releasing, or resettingunmanaged resources.This method should do something...Class Inheritdocpublic class Inheritdoc : IInheritdoc, IDisposable\uF12CDispose()public void Dispose()Issue7628()public void Issue7628()Issue7629()", + "Text": "49 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc\nImplements\nIInheritdoc, IDisposable\uF1C5\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nPerforms application-defined tasks associated with freeing, releasing, or resetting\nunmanaged resources.\nThis method should do something...\nClass Inheritdoc\npublic class Inheritdoc : IInheritdoc, IDisposable\n\uF12C\nDispose()\npublic void Dispose()\nIssue7628()\npublic void Issue7628()\nIssue7629()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3309,12 +3444,12 @@ }, { "Number": 50, - "Text": "50 / 127This method should do something...public void Issue7629()", + "Text": "50 / 131\nThis method should do something...\npublic void Issue7629()", "Links": [] }, { "Number": 51, - "Text": "51 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue6366Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Inheritdoc.Issue6366public class Inheritdoc.Issue6366\uF12C", + "Text": "51 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Inheritdoc.Issue6366\npublic class Inheritdoc.Issue6366\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3419,7 +3554,7 @@ }, { "Number": 52, - "Text": "52 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllType ParametersTInheritanceobject\uF1C5 Inheritdoc.Issue6366.Class1DerivedInheritdoc.Issue6366.Class2Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsThis text inherited.Parametersparm1 TThis text NOT inherited.parm2 int\uF1C5This text inherited.Class Inheritdoc.Issue6366.Class1public abstract class Inheritdoc.Issue6366.Class1\uF12CTestMethod1(T, int)public abstract T TestMethod1(T parm1, int parm2)", + "Text": "52 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366.Class1\nDerived\nInheritdoc.Issue6366.Class2\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nThis text inherited.\nParameters\nparm1 T\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nClass Inheritdoc.Issue6366.Class1\npublic abstract class Inheritdoc.Issue6366.Class1\n\uF12C\nTestMethod1(T, int)\npublic abstract T TestMethod1(T parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3560,12 +3695,12 @@ }, { "Number": 53, - "Text": "53 / 127ReturnsTThis text inherited.", + "Text": "53 / 131\nReturns\nT\nThis text inherited.", "Links": [] }, { "Number": 54, - "Text": "54 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsThis text inherited.Parametersparm1 bool\uF1C5This text NOT inherited.parm2 int\uF1C5This text inherited.Returnsbool\uF1C5This text inherited.Class Inheritdoc.Issue6366.Class2public class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1\uF12C\uF12CTestMethod1(bool, int)public override bool TestMethod1(bool parm1, int parm2)", + "Text": "54 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue6366.Class1 Inheritdoc.Issue6366.Class2\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nThis text inherited.\nParameters\nparm1 bool\uF1C5\nThis text NOT inherited.\nparm2 int\uF1C5\nThis text inherited.\nReturns\nbool\uF1C5\nThis text inherited.\nClass Inheritdoc.Issue6366.Class2\npublic class Inheritdoc.Issue6366.Class2 : Inheritdoc.Issue6366.Class1\n\uF12C \uF12C\nTestMethod1(bool, int)\npublic override bool TestMethod1(bool parm1, int parm2)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3733,7 +3868,7 @@ }, { "Number": 55, - "Text": "55 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue7035Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsClass Inheritdoc.Issue7035public class Inheritdoc.Issue7035\uF12CA()public void A()B()public void B()", + "Text": "55 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue7035\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nClass Inheritdoc.Issue7035\npublic class Inheritdoc.Issue7035\n\uF12C\nA()\npublic void A()\nB()\npublic void B()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3838,7 +3973,7 @@ }, { "Number": 56, - "Text": "56 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllThis is a test class to have something for DocFX to document.Inheritanceobject\uF1C5 Inheritdoc.Issue7484Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5RemarksWe're going to talk about things now.BoolReturningMethod(bool)Simple method to generate docs for.DoDadA string that could have something.ConstructorsThis is a constructor to document.PropertiesClass Inheritdoc.Issue7484public class Inheritdoc.Issue7484\uF12CIssue7484()public Issue7484()DoDad", + "Text": "56 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nThis is a test class to have something for DocFX to document.\nInheritance\nobject\uF1C5 Inheritdoc.Issue7484\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nRemarks\nWe're going to talk about things now.\nBoolReturningMethod(bool) Simple method to generate docs for.\nDoDad A string that could have something.\nConstructors\nThis is a constructor to document.\nProperties\nClass Inheritdoc.Issue7484\npublic class Inheritdoc.Issue7484\n\uF12C\nIssue7484()\npublic Issue7484()\nDoDad", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -3988,7 +4123,7 @@ }, { "Number": 57, - "Text": "57 / 127A string that could have something.Property Valuestring\uF1C5MethodsSimple method to generate docs for.Parameterssource bool\uF1C5A meaningless boolean value, much like most questions in the world.Returnsbool\uF1C5An exactly equivalently meaningless boolean value, much like most answers in the world.RemarksI'd like to take a moment to thank all of those who helped me get to a place where I canwrite documentation like this.public string DoDad { get; }BoolReturningMethod(bool)public bool BoolReturningMethod(bool source)", + "Text": "57 / 131\nA string that could have something.\nProperty Value\nstring\uF1C5\nMethods\nSimple method to generate docs for.\nParameters\nsource bool\uF1C5\nA meaningless boolean value, much like most questions in the world.\nReturns\nbool\uF1C5\nAn exactly equivalently meaningless boolean value, much like most answers in the world.\nRemarks\nI'd like to take a moment to thank all of those who helped me get to a place where I can\nwrite documentation like this.\npublic string DoDad { get; }\nBoolReturningMethod(bool)\npublic bool BoolReturningMethod(bool source)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -4021,7 +4156,7 @@ }, { "Number": 58, - "Text": "58 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInheritanceobject\uF1C5 Inheritdoc.Issue8101Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsCreate a new tween.Parametersfrom int\uF1C5The starting value.to int\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.onChange Action\uF1C5Class Inheritdoc.Issue8101public class Inheritdoc.Issue8101\uF12CTween(int, int, float, Action)public static object Tween(int from, int to, float duration, Action onChange)", + "Text": "58 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue8101\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nCreate a new tween.\nParameters\nfrom int\uF1C5\nThe starting value.\nto int\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nonChange Action\uF1C5 \nClass Inheritdoc.Issue8101\npublic class Inheritdoc.Issue8101\n\uF12C\nTween(int, int, float, Action)\npublic static object Tween(int from, int to, float duration, Action onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4171,7 +4306,7 @@ }, { "Number": 59, - "Text": "59 / 127A callback that will be invoked every time the tween value changes.Returnsobject\uF1C5The newly created tween instance.Create a new tween.Parametersfrom float\uF1C5The starting value.to float\uF1C5The end value.duration float\uF1C5Total tween duration in seconds.onChange Action\uF1C5<float\uF1C5>A callback that will be invoked every time the tween value changes.Returnsobject\uF1C5The newly created tween instance.Tween(float, float, float, Action<float>)public static object Tween(float from, float to, float duration, Action onChange)", + "Text": "59 / 131\nA callback that will be invoked every time the tween value changes.\nReturns\nobject\uF1C5\nThe newly created tween instance.\nCreate a new tween.\nParameters\nfrom float\uF1C5\nThe starting value.\nto float\uF1C5\nThe end value.\nduration float\uF1C5\nTotal tween duration in seconds.\nonChange Action\uF1C5 \nA callback that will be invoked every time the tween value changes.\nReturns\nobject\uF1C5\nThe newly created tween instance.\nTween(float, float, float, Action)\npublic static object Tween(float from, float to, float duration,\nAction onChange)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4240,7 +4375,7 @@ }, { "Number": 60, - "Text": "60 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllInherited MembersValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5ConstructorsParametersfoo string\uF1C5Struct Inheritdoc.Issue8129public struct Inheritdoc.Issue8129Issue8129(string)public Issue8129(string foo)", + "Text": "60 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInherited Members\nValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,\nobject.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nConstructors\nParameters\nfoo string\uF1C5\nStruct Inheritdoc.Issue8129\npublic struct Inheritdoc.Issue8129\nIssue8129(string)\npublic Issue8129(string foo)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.valuetype.equals" @@ -4336,7 +4471,7 @@ }, { "Number": 61, - "Text": "61 / 127Namespace:BuildFromProjectAssembly:BuildFromProject.dllA nice classInheritanceobject\uF1C5 Issue8725Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsAnother nice operationA nice operationSee AlsoClass1Class Issue8725public class Issue8725\uF12CMoreOperations()public void MoreOperations()MyOperation()public void MyOperation()", + "Text": "61 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue9736\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Inheritdoc.Issue9736\npublic class Inheritdoc.Issue9736\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4436,25 +4571,25 @@ "Top": 0 } } - }, - { - "Goto": { - "PageNumber": 32, - "Type": 2, - "Coordinates": { - "Top": 0 - } - } } ] }, { "Number": 62, - "Text": "62 / 127ClassesBaseClass1This is the BaseClassClass1This is summary from vb class...Namespace BuildFromVBSourceCode", + "Text": "62 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nProperties\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\nInterface\nInheritdoc.Issue9736.IJsonApiOptions\npublic interface Inheritdoc.Issue9736.IJsonApiOptions\nUseRelativeLinks\nbool UseRelativeLinks { get; }\noptions.UseRelativeLinks = true;\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" + }, { "Goto": { - "PageNumber": 63, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4463,7 +4598,7 @@ }, { "Goto": { - "PageNumber": 63, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4472,7 +4607,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4483,7 +4618,7 @@ }, { "Number": 63, - "Text": "63 / 127Namespace:BuildFromVBSourceCodeThis is the BaseClassInheritanceobject\uF1C5 BaseClass1DerivedClass1Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5MethodsParameterskeyword Class1ReturnsDateTime\uF1C5Class BaseClass1public abstract class BaseClass1\uF12CWithDeclarationKeyword(Class1)public abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Text": "63 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nInheritance\nobject\uF1C5 Inheritdoc.Issue9736.JsonApiOptions\nImplements\nInheritdoc.Issue9736.IJsonApiOptions\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nProperties\nWhether to use relative links for all resources. false by default.\nProperty Value\nbool\uF1C5\nExamples\nClass Inheritdoc.Issue9736.JsonApiOptions\npublic sealed class Inheritdoc.Issue9736.JsonApiOptions :\nInheritdoc.Issue9736.IJsonApiOptions\n\uF12C\nUseRelativeLinks\npublic bool UseRelativeLinks { get; set; }\noptions.UseRelativeLinks = true;\n{ \n\"type\": \"articles\",\n\"id\": \"4309\",", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4512,15 +4647,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -4539,15 +4665,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" }, @@ -4567,17 +4684,17 @@ "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { - "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" }, { "Goto": { - "PageNumber": 62, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4586,7 +4703,7 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4595,7 +4712,25 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 25, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 49, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 61, "Type": 2, "Coordinates": { "Top": 0 @@ -4613,7 +4748,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4622,7 +4757,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 62, "Type": 2, "Coordinates": { "Top": 0 @@ -4633,7 +4768,12 @@ }, { "Number": 64, - "Text": "64 / 127Namespace:BuildFromVBSourceCodeThis is summary from vb class...Inheritanceobject\uF1C5 BaseClass1 Class1Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5FieldsThis is a Value typeField ValueClass1PropertiesProperty ValueClass Class1public class Class1 : BaseClass1\uF12C\uF12CValueClasspublic Class1 ValueClassKeyword[Obsolete(\"This member is obsolete.\", true)]public Class1 Keyword { get; }", + "Text": "64 / 131\n\"relationships\": {\n\"author\": {\n\"links\": {\n\"self\": \"/api/shopping/articles/4309/relationships/author\",\n\"related\": \"/api/shopping/articles/4309/author\"\n} \n} \n}\n}", + "Links": [] + }, + { + "Number": 65, + "Text": "65 / 131\nNamespace: BuildFromProject\nAssembly: BuildFromProject.dll\nA nice class\nInheritance\nobject\uF1C5 Issue8725\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nAnother nice operation\nA nice operation\nSee Also\nClass1\nClass Issue8725\npublic class Issue8725\n\uF12C\nMoreOperations()\npublic void MoreOperations()\nMyOperation()\npublic void MyOperation()", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -4662,15 +4802,6 @@ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, - { - "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" - }, { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" }, @@ -4718,7 +4849,7 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4727,7 +4858,7 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4736,7 +4867,7 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 25, "Type": 2, "Coordinates": { "Top": 0 @@ -4745,16 +4876,22 @@ }, { "Goto": { - "PageNumber": 62, + "PageNumber": 32, "Type": 2, "Coordinates": { "Top": 0 } } - }, + } + ] + }, + { + "Number": 66, + "Text": "66 / 131\nClasses\nBaseClass1\nThis is the BaseClass\nClass1\nThis is summary from vb class...\nNamespace BuildFromVBSourceCode", + "Links": [ { "Goto": { - "PageNumber": 63, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -4763,7 +4900,7 @@ }, { "Goto": { - "PageNumber": 63, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -4772,7 +4909,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -4782,8 +4919,308 @@ ] }, { - "Number": 65, - "Text": "65 / 127Class1MethodsThis is a FunctionParametersname string\uF1C5Name as the String valueReturnsint\uF1C5Returns AhoooWhat is Sub?Parameterskeyword Class1ReturnsDateTime\uF1C5Value(string)public int Value(string name)WithDeclarationKeyword(Class1)public override DateTime WithDeclarationKeyword(Class1 keyword)", + "Number": 67, + "Text": "67 / 131\nNamespace: BuildFromVBSourceCode\nThis is the BaseClass\nInheritance\nobject\uF1C5 BaseClass1\nDerived\nClass1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nMethods\nParameters\nkeyword Class1\nReturns\nDateTime\uF1C5\nClass BaseClass1\npublic abstract class BaseClass1\n\uF12C\nWithDeclarationKeyword(Class1)\npublic abstract DateTime WithDeclarationKeyword(Class1 keyword)", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.datetime" + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 68, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 68, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 68, + "Text": "68 / 131\nNamespace: BuildFromVBSourceCode\nThis is summary from vb class...\nInheritance\nobject\uF1C5 BaseClass1 Class1\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.Finalize()\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nFields\nThis is a Value type\nField Value\nClass1\nProperties\nProperty Value\nClass Class1\npublic class Class1 : BaseClass1\n\uF12C \uF12C\nValueClass\npublic Class1 ValueClass\nKeyword\n[Obsolete(\"This member is obsolete.\", true)]\npublic Class1 Keyword { get; }", + "Links": [ + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.finalize" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gethashcode" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.gettype" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.referenceequals" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Uri": "https://learn.microsoft.com/dotnet/api/system.object.tostring" + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 66, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 67, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 67, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Goto": { + "PageNumber": 68, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + } + ] + }, + { + "Number": 69, + "Text": "69 / 131\nClass1\nMethods\nThis is a Function\nParameters\nname string\uF1C5\nName as the String value\nReturns\nint\uF1C5\nReturns Ahooo\nWhat is Sub?\nParameters\nkeyword Class1\nReturns\nDateTime\uF1C5\nValue(string)\npublic int Value(string name)\nWithDeclarationKeyword(Class1)\npublic override DateTime WithDeclarationKeyword(Class1 keyword)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -4814,7 +5251,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -4823,7 +5260,7 @@ }, { "Goto": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -4833,12 +5270,12 @@ ] }, { - "Number": 66, - "Text": "66 / 127NamespacesCatLibrary.CoreClassesCatExceptionCatHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classComplexICatExtensionIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classTomTom class is only inherit from Object. Not any member inside itself.TomFromBaseClassTomFromBaseClass inherits from @InterfacesIAnimalThis is basic interface of all animal.ICatCat's interfaceDelegatesFakeDelegateFake delegateNamespace CatLibrary", + "Number": 70, + "Text": "70 / 131\nNamespaces\nCatLibrary.Core\nClasses\nCatException\nCat\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nComplex\nICatExtension\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nTom\nTom class is only inherit from Object. Not any member inside itself.\nTomFromBaseClass\nTomFromBaseClass inherits from @\nInterfaces\nIAnimal\nThis is basic interface of all animal.\nICat\nCat's interface\nDelegates\nFakeDelegate\nFake delegate\nNamespace CatLibrary", "Links": [ { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -4847,7 +5284,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -4856,7 +5293,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -4865,7 +5302,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -4874,7 +5311,7 @@ }, { "Goto": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -4883,7 +5320,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Type": 2, "Coordinates": { "Top": 0 @@ -4892,7 +5329,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Type": 2, "Coordinates": { "Top": 0 @@ -4901,7 +5338,7 @@ }, { "Goto": { - "PageNumber": 87, + "PageNumber": 91, "Type": 2, "Coordinates": { "Top": 0 @@ -4910,7 +5347,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Type": 2, "Coordinates": { "Top": 0 @@ -4919,7 +5356,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Type": 2, "Coordinates": { "Top": 0 @@ -4928,7 +5365,7 @@ }, { "Goto": { - "PageNumber": 97, + "PageNumber": 101, "Type": 2, "Coordinates": { "Top": 0 @@ -4937,7 +5374,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -4946,7 +5383,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -4955,7 +5392,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -4964,7 +5401,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -4973,7 +5410,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -4982,7 +5419,7 @@ }, { "Goto": { - "PageNumber": 92, + "PageNumber": 96, "Type": 2, "Coordinates": { "Top": 0 @@ -4991,7 +5428,7 @@ }, { "Goto": { - "PageNumber": 88, + "PageNumber": 92, "Type": 2, "Coordinates": { "Top": 0 @@ -5001,12 +5438,12 @@ ] }, { - "Number": 67, - "Text": "67 / 127MRefDelegateGeneric delegate with many constrains.MRefNormalDelegateDelegate in the namespace", + "Number": 71, + "Text": "71 / 131\nMRefDelegate\nGeneric delegate with many constrains.\nMRefNormalDelegate\nDelegate in the namespace", "Links": [ { "Goto": { - "PageNumber": 95, + "PageNumber": 99, "Type": 2, "Coordinates": { "Top": 0 @@ -5015,7 +5452,7 @@ }, { "Goto": { - "PageNumber": 96, + "PageNumber": 100, "Type": 2, "Coordinates": { "Top": 0 @@ -5024,7 +5461,7 @@ }, { "Goto": { - "PageNumber": 96, + "PageNumber": 100, "Type": 2, "Coordinates": { "Top": 0 @@ -5033,7 +5470,7 @@ }, { "Goto": { - "PageNumber": 96, + "PageNumber": 100, "Type": 2, "Coordinates": { "Top": 0 @@ -5043,12 +5480,12 @@ ] }, { - "Number": 68, - "Text": "68 / 127ClassesContainersRefType.ContainersRefTypeChildExplicitLayoutClassIssue231StructsContainersRefTypeStruct ContainersRefTypeInterfacesContainersRefType.ContainersRefTypeChildInterfaceEnumsContainersRefType.ColorTypeEnumeration ColorTypeDelegatesContainersRefType.ContainersRefTypeDelegateDelegate ContainersRefTypeDelegateNamespace CatLibrary.Core", + "Number": 72, + "Text": "72 / 131\nClasses\nContainersRefType.ContainersRefTypeChild\nExplicitLayoutClass\nIssue231\nStructs\nContainersRefType\nStruct ContainersRefType\nInterfaces\nContainersRefType.ContainersRefTypeChildInterface\nEnums\nContainersRefType.ColorType\nEnumeration ColorType\nDelegates\nContainersRefType.ContainersRefTypeDelegate\nDelegate ContainersRefTypeDelegate\nNamespace CatLibrary.Core", "Links": [ { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -5057,7 +5494,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -5066,7 +5503,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -5075,7 +5512,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -5084,7 +5521,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -5093,7 +5530,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -5102,7 +5539,7 @@ }, { "Goto": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -5111,7 +5548,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -5120,7 +5557,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -5129,7 +5566,7 @@ }, { "Goto": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -5138,7 +5575,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -5147,7 +5584,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -5156,7 +5593,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -5165,7 +5602,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -5174,7 +5611,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5183,7 +5620,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5192,7 +5629,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5201,7 +5638,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5210,7 +5647,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5219,7 +5656,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5228,7 +5665,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5237,7 +5674,7 @@ }, { "Goto": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -5246,7 +5683,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -5255,7 +5692,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -5264,7 +5701,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -5273,7 +5710,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -5282,7 +5719,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -5291,7 +5728,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5300,7 +5737,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5309,7 +5746,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5318,7 +5755,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5327,7 +5764,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5336,7 +5773,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5345,7 +5782,7 @@ }, { "Goto": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -5355,8 +5792,8 @@ ] }, { - "Number": 69, - "Text": "69 / 127Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllStruct ContainersRefTypeInherited MembersValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,object.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5Extension MethodsIssue231.Bar(ContainersRefType) , Issue231.Foo(ContainersRefType)FieldsColorCountField Valuelong\uF1C5PropertiesGetColorCountStruct ContainersRefTypepublic struct ContainersRefTypeColorCountpublic long ColorCountGetColorCountpublic long GetColorCount { get; }", + "Number": 73, + "Text": "73 / 131\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nStruct ContainersRefType\nInherited Members\nValueType.Equals(object)\uF1C5 , ValueType.GetHashCode()\uF1C5 , ValueType.ToString()\uF1C5 ,\nobject.Equals(object, object)\uF1C5 , object.GetType()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nExtension Methods\nIssue231.Bar(ContainersRefType) , Issue231.Foo(ContainersRefType)\nFields\nColorCount\nField Value\nlong\uF1C5\nProperties\nGetColorCount\nStruct ContainersRefType\npublic struct ContainersRefType\nColorCount\npublic long ColorCount\nGetColorCount\npublic long GetColorCount { get; }", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.valuetype.equals" @@ -5423,7 +5860,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5432,7 +5869,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5441,7 +5878,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5450,7 +5887,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5459,7 +5896,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5468,7 +5905,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5477,7 +5914,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 438.75 @@ -5486,7 +5923,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5495,7 +5932,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5504,7 +5941,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5513,7 +5950,7 @@ }, { "Goto": { - "PageNumber": 76, + "PageNumber": 80, "Coordinates": { "Left": 0, "Top": 263.25 @@ -5523,8 +5960,8 @@ ] }, { - "Number": 70, - "Text": "70 / 127Property Valuelong\uF1C5MethodsContainersRefTypeNonRefMethodarrayParametersparmsArray object\uF1C5[]Returnsint\uF1C5EventsEvent TypeEventHandler\uF1C5ContainersRefTypeNonRefMethod(params object[])public static int ContainersRefTypeNonRefMethod(params object[] parmsArray)ContainersRefTypeEventHandlerpublic event EventHandler ContainersRefTypeEventHandler", + "Number": 74, + "Text": "74 / 131\nProperty Value\nlong\uF1C5\nMethods\nContainersRefTypeNonRefMethod\narray\nParameters\nparmsArray object\uF1C5 []\nReturns\nint\uF1C5\nEvents\nEvent Type\nEventHandler\uF1C5\nContainersRefTypeNonRefMethod(params object[])\npublic static int ContainersRefTypeNonRefMethod(params object[] parmsArray)\nContainersRefTypeEventHandler\npublic event EventHandler ContainersRefTypeEventHandler", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -5565,12 +6002,12 @@ ] }, { - "Number": 71, - "Text": "71 / 127Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllEnumeration ColorTypeFieldsRed = 0redBlue = 1blueYellow = 2yellowEnum ContainersRefType.ColorTypepublic enum ContainersRefType.ColorType", + "Number": 75, + "Text": "75 / 131\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nEnumeration ColorType\nFields\nRed = 0\nred\nBlue = 1\nblue\nYellow = 2\nyellow\nEnum ContainersRefType.ColorType\npublic enum ContainersRefType.ColorType", "Links": [ { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5579,7 +6016,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5588,7 +6025,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5598,8 +6035,8 @@ ] }, { - "Number": 72, - "Text": "72 / 127Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInheritanceobject\uF1C5 ContainersRefType.ContainersRefTypeChildInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ClassContainersRefType.ContainersRefTypeChildpublic class ContainersRefType.ContainersRefTypeChild\uF12C", + "Number": 76, + "Text": "76 / 131\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ContainersRefType.ContainersRefTypeChild\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass\nContainersRefType.ContainersRefTypeChild\npublic class ContainersRefType.ContainersRefTypeChild\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5675,7 +6112,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5684,7 +6121,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5693,7 +6130,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5703,12 +6140,12 @@ ] }, { - "Number": 73, - "Text": "73 / 127Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInterfaceContainersRefType.ContainersRefTypeChildInterfacepublic interface ContainersRefType.ContainersRefTypeChildInterface", + "Number": 77, + "Text": "77 / 131\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInterface\nContainersRefType.ContainersRefTypeChild\nInterface\npublic interface ContainersRefType.ContainersRefTypeChildInterface", "Links": [ { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5717,7 +6154,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5726,7 +6163,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5736,12 +6173,12 @@ ] }, { - "Number": 74, - "Text": "74 / 127Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllDelegate ContainersRefTypeDelegateDelegateContainersRefType.ContainersRefTypeDelegatepublic delegate void ContainersRefType.ContainersRefTypeDelegate()", + "Number": 78, + "Text": "78 / 131\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nDelegate ContainersRefTypeDelegate\nDelegate\nContainersRefType.ContainersRefTypeDele\ngate\npublic delegate void ContainersRefType.ContainersRefTypeDelegate()", "Links": [ { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5750,7 +6187,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5759,7 +6196,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5769,8 +6206,8 @@ ] }, { - "Number": 75, - "Text": "75 / 127Namespace:CatLibrary.CoreAssembly:CatLibrary.Core.dllInheritanceobject\uF1C5 ExplicitLayoutClassInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class ExplicitLayoutClasspublic class ExplicitLayoutClass\uF12C", + "Number": 79, + "Text": "79 / 131\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.Core.dll\nInheritance\nobject\uF1C5 ExplicitLayoutClass\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass ExplicitLayoutClass\npublic class ExplicitLayoutClass\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5846,7 +6283,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5855,7 +6292,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5864,7 +6301,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5874,8 +6311,8 @@ ] }, { - "Number": 76, - "Text": "76 / 127Namespace:CatLibrary.CoreAssembly:CatLibrary.dllInheritanceobject\uF1C5 Issue231Inherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsParametersc ContainersRefTypeParametersc ContainersRefTypeClass Issue231public static class Issue231\uF12CBar(ContainersRefType)public static void Bar(this ContainersRefType c)Foo(ContainersRefType)public static void Foo(this ContainersRefType c)", + "Number": 80, + "Text": "80 / 131\nNamespace: CatLibrary.Core\nAssembly: CatLibrary.dll\nInheritance\nobject\uF1C5 Issue231\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nParameters\nc ContainersRefType\nParameters\nc ContainersRefType\nClass Issue231\npublic static class Issue231\n\uF12C\nBar(ContainersRefType)\npublic static void Bar(this ContainersRefType c)\nFoo(ContainersRefType)\npublic static void Foo(this ContainersRefType c)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -5951,7 +6388,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5960,7 +6397,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -5969,7 +6406,7 @@ }, { "Goto": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -5978,7 +6415,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -5987,7 +6424,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -5996,7 +6433,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -6005,7 +6442,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -6014,7 +6451,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -6023,7 +6460,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -6033,8 +6470,8 @@ ] }, { - "Number": 77, - "Text": "77 / 127Namespace:CatLibraryAssembly:CatLibrary.dllType ParametersTInheritanceobject\uF1C5 Exception\uF1C5 CatExceptionImplementsISerializable\uF1C5Inherited MembersException.GetBaseException()\uF1C5 , Exception.GetType()\uF1C5 , Exception.ToString()\uF1C5 ,Exception.Data\uF1C5 , Exception.HelpLink\uF1C5 , Exception.HResult\uF1C5 , Exception.InnerException\uF1C5 ,Exception.Message\uF1C5 , Exception.Source\uF1C5 , Exception.StackTrace\uF1C5 , Exception.TargetSite\uF1C5 ,Exception.SerializeObjectState\uF1C5 , object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,object.GetHashCode()\uF1C5 , object.MemberwiseClone()\uF1C5 ,object.ReferenceEquals(object, object)\uF1C5Class CatExceptionpublic class CatException : Exception, ISerializable\uF12C\uF12C", + "Number": 81, + "Text": "81 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nInheritance\nobject\uF1C5 Exception\uF1C5 CatException\nImplements\nISerializable\uF1C5\nInherited Members\nException.GetBaseException()\uF1C5 , Exception.GetType()\uF1C5 , Exception.ToString()\uF1C5 ,\nException.Data\uF1C5 , Exception.HelpLink\uF1C5 , Exception.HResult\uF1C5 , Exception.InnerException\uF1C5 ,\nException.Message\uF1C5 , Exception.Source\uF1C5 , Exception.StackTrace\uF1C5 , Exception.TargetSite\uF1C5 ,\nException.SerializeObjectState\uF1C5 , object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 ,\nobject.GetHashCode()\uF1C5 , object.MemberwiseClone()\uF1C5 ,\nobject.ReferenceEquals(object, object)\uF1C5\nClass CatException\npublic class CatException : Exception, ISerializable\n\uF12C \uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -6218,7 +6655,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6227,7 +6664,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6237,8 +6674,8 @@ ] }, { - "Number": 78, - "Text": "78 / 127Namespace:CatLibraryAssembly:CatLibrary.dllHere's main class of this Demo.You can see mostly type of article within this class and you for more detail, please see theremarks.this class is a template class. It has two Generic parameter. they are: T and K.The extension method of this class can refer to ICatExtension classThis is a class talking about CAT\uF1C5.NOTE This is a CAT classRefer to IAnimal to see other animals.Type ParametersTThis type should be class and can new instance.KThis type is a struct type, class type can't be used for this parameter.Inheritanceobject\uF1C5 CatImplementsICat, IAnimalInherited MembersClass Cat[Serializable][Obsolete]public class Cat : ICat, IAnimal where T : class, new() where K : struct\uF12C", + "Number": 82, + "Text": "82 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nHere's main class of this Demo.\nYou can see mostly type of article within this class and you for more detail, please see the\nremarks.\nthis class is a template class. It has two Generic parameter. they are: T and K.\nThe extension method of this class can refer to ICatExtension class\nThis is a class talking about CAT\uF1C5 .\nNOTE This is a CAT class\nRefer to IAnimal to see other animals.\nType Parameters\nT\nThis type should be class and can new instance.\nK\nThis type is a struct type, class type can't be used for this parameter.\nInheritance\nobject\uF1C5 Cat\nImplements\nICat, IAnimal\nInherited Members\nClass Cat\n[Serializable]\n[Obsolete]\npublic class Cat : ICat, IAnimal where T : class, new() where K : struct\n\uF12C", "Links": [ { "Uri": "https://en.wikipedia.org/wiki/Cat" @@ -6260,7 +6697,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6269,7 +6706,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6278,7 +6715,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Type": 2, "Coordinates": { "Top": 0 @@ -6287,7 +6724,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Type": 2, "Coordinates": { "Top": 0 @@ -6296,7 +6733,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -6305,7 +6742,7 @@ }, { "Goto": { - "PageNumber": 92, + "PageNumber": 96, "Type": 2, "Coordinates": { "Top": 0 @@ -6314,7 +6751,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -6324,8 +6761,8 @@ ] }, { - "Number": 79, - "Text": "79 / 127object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5Extension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)ExamplesHere's example of how to create an instance of this class. As T is limited with class and K islimited with struct.As you see, here we bring in pointer so we need to add unsafe keyword.RemarksTHIS is remarks overridden in MARKDWON fileConstructorsDefault constructor.It's a complex constructor. The parameter will have some attributes.Parametersvar a = new Cat(object, int)();int catNumber = new int();unsafe{ a.GetFeetLength(catNumber);}Cat()public Cat()Cat(string, out int, string, bool)public Cat(string nickName, out int age, string realName, bool isHealthy)", + "Number": 83, + "Text": "83 / 131\nobject.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 , object.GetType()\uF1C5 ,\nobject.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 , object.ToString()\uF1C5\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)\nExamples\nHere's example of how to create an instance of this class. As T is limited with class and K is\nlimited with struct.\nAs you see, here we bring in pointer so we need to add unsafe keyword.\nRemarks\nTHIS is remarks overridden in MARKDWON file\nConstructors\nDefault constructor.\nIt's a complex constructor. The parameter will have some attributes.\nParameters\nvar a = new Cat(object, int)();\nint catNumber = new int();\nunsafe\n{ \na.GetFeetLength(catNumber);\n}\nCat()\npublic Cat()\nCat(string, out int, string, bool)\npublic Cat(string nickName, out int age, string realName, bool isHealthy)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)" @@ -6383,7 +6820,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6392,7 +6829,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6401,7 +6838,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6410,7 +6847,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6419,7 +6856,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6428,7 +6865,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6437,7 +6874,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6446,7 +6883,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -6455,7 +6892,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -6464,7 +6901,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -6473,7 +6910,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -6482,7 +6919,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -6492,8 +6929,8 @@ ] }, { - "Number": 80, - "Text": "80 / 127nickName string\uF1C5it's string type.age int\uF1C5It's an out and ref parameter.realName string\uF1C5It's an out paramter.isHealthy bool\uF1C5It's an in parameter.Constructor with one generic parameter.ParametersownType TThis parameter type defined by class.FieldsField with attribute.Field ValueCat(T)public Cat(T ownType)isHealthy[ContextStatic][NonSerialized][Obsolete]public bool isHealthy", + "Number": 84, + "Text": "84 / 131\nnickName string\uF1C5\nit's string type.\nage int\uF1C5\nIt's an out and ref parameter.\nrealName string\uF1C5\nIt's an out paramter.\nisHealthy bool\uF1C5\nIt's an in parameter.\nConstructor with one generic parameter.\nParameters\nownType T\nThis parameter type defined by class.\nFields\nField with attribute.\nField Value\nCat(T)\npublic Cat(T ownType)\nisHealthy\n[ContextStatic]\n[NonSerialized]\n[Obsolete]\npublic bool isHealthy", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -6534,8 +6971,8 @@ ] }, { - "Number": 81, - "Text": "81 / 127bool\uF1C5PropertiesHint cat's age.Property Valueint\uF1C5This is index property of Cat. You can see that the visibility is different between get and setmethod.Parametersa string\uF1C5Cat's name.Property Valueint\uF1C5Cat's number.EII property.Age[Obsolete]protected int Age { get; set; }this[string]public int this[string a] { protected get; set; }Name", + "Number": 85, + "Text": "85 / 131\nbool\uF1C5\nProperties\nHint cat's age.\nProperty Value\nint\uF1C5\nThis is index property of Cat. You can see that the visibility is different between get and set\nmethod.\nParameters\na string\uF1C5\nCat's name.\nProperty Value\nint\uF1C5\nCat's number.\nEII property.\nAge\n[Obsolete]\nprotected int Age { get; set; }\nthis[string]\npublic int this[string a] { protected get; set; }\nName", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" @@ -6576,8 +7013,8 @@ ] }, { - "Number": 82, - "Text": "82 / 127Property Valuestring\uF1C5MethodsIt's an overridden summary in markdown formatThis is overriding methods. You can override parameter descriptions for methods, you caneven add exceptions to methods. Check the intermediate obj folder to see the data modelof the generated method/class. Override Yaml header should follow the data structure.Parametersdate DateTime\uF1C5This is overridden description for a parameter. id must be specified.ReturnsDictionary\uF1C5>It's overridden description for return. type must be specified.ExceptionsArgumentException\uF1C5This is an overridden argument exception. you can add additional exception by addingdifferent exception type.public string Name { get; }Override CalculateFood Namepublic Dictionary> CalculateFood(DateTime date)Equals(object)", + "Number": 86, + "Text": "86 / 131\nProperty Value\nstring\uF1C5\nMethods\nIt's an overridden summary in markdown format\nThis is overriding methods. You can override parameter descriptions for methods, you can\neven add exceptions to methods. Check the intermediate obj folder to see the data model\nof the generated method/class. Override Yaml header should follow the data structure.\nParameters\ndate DateTime\uF1C5\nThis is overridden description for a parameter. id must be specified.\nReturns\nDictionary\uF1C5 >\nIt's overridden description for return. type must be specified.\nExceptions\nArgumentException\uF1C5\nThis is an overridden argument exception. you can add additional exception by adding\ndifferent exception type.\npublic string Name { get; }\nOverride CalculateFood Name\npublic Dictionary> CalculateFood(DateTime date)\nEquals(object)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -6645,8 +7082,8 @@ ] }, { - "Number": 83, - "Text": "83 / 127Override the method of Object.Equals(object obj).Parametersobj object\uF1C5Can pass any class type.Returnsbool\uF1C5The return value tell you whehter the compare operation is successful.It's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.ParameterscatName int\uF1C5*Thie represent for cat name length.parameters object\uF1C5[]Optional parameters.Returnslong\uF1C5Return cat tail's length.public override bool Equals(object obj)GetTailLength(int*, params object[])public long GetTailLength(int* catName, params object[] parameters)Jump(T, K, ref bool)", + "Number": 87, + "Text": "87 / 131\nOverride the method of Object.Equals(object obj).\nParameters\nobj object\uF1C5\nCan pass any class type.\nReturns\nbool\uF1C5\nThe return value tell you whehter the compare operation is successful.\nIt's an unsafe method. As you see, catName is a pointer, so we need to add unsafe keyword.\nParameters\ncatName int\uF1C5 *\nThie represent for cat name length.\nparameters object\uF1C5 []\nOptional parameters.\nReturns\nlong\uF1C5\nReturn cat tail's length.\npublic override bool Equals(object obj)\nGetTailLength(int*, params object[])\npublic long GetTailLength(int* catName, params object[] parameters)\nJump(T, K, ref bool)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -6696,8 +7133,8 @@ ] }, { - "Number": 84, - "Text": "84 / 127This method have attribute above it.ParametersownType TType come from class define.anotherOwnType KType come from class define.cheat bool\uF1C5Hint whether this cat has cheat mode.ExceptionsArgumentException\uF1C5This is an argument exceptionEventsEat event of this catEvent TypeEventHandler\uF1C5Operators[Conditional(\"Debug\")]public void Jump(T ownType, K anotherOwnType, ref bool cheat)ownEat[Obsolete(\"This _event handler_ is deprecated.\")]public event EventHandler ownEat", + "Number": 88, + "Text": "88 / 131\nThis method have attribute above it.\nParameters\nownType T\nType come from class define.\nanotherOwnType K\nType come from class define.\ncheat bool\uF1C5\nHint whether this cat has cheat mode.\nExceptions\nArgumentException\uF1C5\nThis is an argument exception\nEvents\nEat event of this cat\nEvent Type\nEventHandler\uF1C5\nOperators\n[Conditional(\"Debug\")]\npublic void Jump(T ownType, K anotherOwnType, ref bool cheat)\nownEat\n[Obsolete(\"This _event handler_ is deprecated.\")]\npublic event EventHandler ownEat", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.boolean" @@ -6729,8 +7166,8 @@ ] }, { - "Number": 85, - "Text": "85 / 127Addition operator of this class.Parameterslsr Cat..rsr int\uF1C5~~Returnsint\uF1C5Result with int type.Expilicit operator of this class.It means this cat can evolve to change to Tom. Tom and Jerry.Parameterssrc CatInstance of this class.ReturnsTomAdvanced class type of cat.operator +(Cat, int)public static int operator +(Cat lsr, int rsr)explicit operator Tom(Cat)public static explicit operator Tom(Cat src)", + "Number": 89, + "Text": "89 / 131\nAddition operator of this class.\nParameters\nlsr Cat\n..\nrsr int\uF1C5\n~~\nReturns\nint\uF1C5\nResult with int type.\nExpilicit operator of this class.\nIt means this cat can evolve to change to Tom. Tom and Jerry.\nParameters\nsrc Cat\nInstance of this class.\nReturns\nTom\nAdvanced class type of cat.\noperator +(Cat, int)\npublic static int operator +(Cat lsr, int rsr)\nexplicit operator Tom(Cat)\npublic static explicit operator Tom(Cat src)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -6752,7 +7189,7 @@ }, { "Goto": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -6761,7 +7198,7 @@ }, { "Goto": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -6770,7 +7207,7 @@ }, { "Goto": { - "PageNumber": 97, + "PageNumber": 101, "Type": 2, "Coordinates": { "Top": 0 @@ -6780,8 +7217,8 @@ ] }, { - "Number": 86, - "Text": "86 / 127Similar with operaotr +, refer to that topic.Parameterslsr Catrsr int\uF1C5Returnsint\uF1C5operator -(Cat, int)public static int operator -(Cat lsr, int rsr)", + "Number": 90, + "Text": "90 / 131\nSimilar with operaotr +, refer to that topic.\nParameters\nlsr Cat\nrsr int\uF1C5\nReturns\nint\uF1C5\noperator -(Cat, int)\npublic static int operator -(Cat lsr, int rsr)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -6803,7 +7240,7 @@ }, { "Goto": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -6813,8 +7250,8 @@ ] }, { - "Number": 87, - "Text": "87 / 127Namespace:CatLibraryAssembly:CatLibrary.dllType ParametersTJInheritanceobject\uF1C5 ComplexInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5Class Complexpublic class Complex\uF12C", + "Number": 91, + "Text": "91 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nType Parameters\nT\nJ\nInheritance\nobject\uF1C5 Complex\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nClass Complex\npublic class Complex\n\uF12C", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -6890,7 +7327,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6899,7 +7336,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6909,8 +7346,8 @@ ] }, { - "Number": 88, - "Text": "88 / 127Namespace:CatLibraryAssembly:CatLibrary.dllFake delegateParametersnum long\uF1C5Fake paraname string\uF1C5Fake parascores object\uF1C5[]Optional Parameter.Returnsint\uF1C5Return a fake number to confuse you.Type ParametersTFake paraDelegate FakeDelegatepublic delegate int FakeDelegate(long num, string name, params object[] scores)", + "Number": 92, + "Text": "92 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nFake delegate\nParameters\nnum long\uF1C5\nFake para\nname string\uF1C5\nFake para\nscores object\uF1C5 []\nOptional Parameter.\nReturns\nint\uF1C5\nReturn a fake number to confuse you.\nType Parameters\nT\nFake para\nDelegate FakeDelegate\npublic delegate int FakeDelegate(long num, string name, params object[] scores)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -6950,7 +7387,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6959,7 +7396,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -6969,8 +7406,8 @@ ] }, { - "Number": 89, - "Text": "89 / 127Namespace:CatLibraryAssembly:CatLibrary.dllThis is basic interface of all animal.Welcome to the Animal world!RemarksTHIS is remarks overridden in MARKDWON filePropertiesReturn specific number animal's name.Parametersindex int\uF1C5Animal number.Property Valuestring\uF1C5Animal name.Name of Animal.Interface IAnimalpublic interface IAnimalthis[int]string this[int index] { get; }Name", + "Number": 93, + "Text": "93 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nThis is basic interface of all animal.\nWelcome to the Animal world!\nRemarks\nTHIS is remarks overridden in MARKDWON file\nProperties\nReturn specific number animal's name.\nParameters\nindex int\uF1C5\nAnimal number.\nProperty Value\nstring\uF1C5\nAnimal name.\nName of Animal.\nInterface IAnimal\npublic interface IAnimal\nthis[int]\nstring this[int index] { get; }\nName", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int32" @@ -6992,7 +7429,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7001,7 +7438,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7011,8 +7448,8 @@ ] }, { - "Number": 90, - "Text": "90 / 127Property Valuestring\uF1C5MethodsAnimal's eat method.Feed the animal with some foodParametersfood string\uF1C5Food to eatOverload method of eat. This define the animal eat by which tool.Parameterstool Toolstring Name { get; }Eat()void Eat()Eat(string)void Eat(string food)Eat(Tool)void Eat(Tool tool) where Tool : class", + "Number": 94, + "Text": "94 / 131\nProperty Value\nstring\uF1C5\nMethods\nAnimal's eat method.\nFeed the animal with some food\nParameters\nfood string\uF1C5\nFood to eat\nOverload method of eat. This define the animal eat by which tool.\nParameters\ntool Tool\nstring Name { get; }\nEat()\nvoid Eat()\nEat(string)\nvoid Eat(string food)\nEat(Tool)\nvoid Eat(Tool tool) where Tool : class", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -7035,13 +7472,13 @@ ] }, { - "Number": 91, - "Text": "91 / 127Tool name.Type ParametersToolIt's a class type.", + "Number": 95, + "Text": "95 / 131\nTool name.\nType Parameters\nTool\nIt's a class type.", "Links": [] }, { - "Number": 92, - "Text": "92 / 127Namespace:CatLibraryAssembly:CatLibrary.dllCat's interfaceInherited MembersIAnimal.Name , IAnimal.this[int] , IAnimal.Eat() , IAnimal.Eat(Tool) ,IAnimal.Eat(string)Extension MethodsICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)Eventseat event of cat. Every cat must implement this event.Event TypeEventHandler\uF1C5Interface ICatpublic interface ICat : IAnimaleatevent EventHandler eat", + "Number": 96, + "Text": "96 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nCat's interface\nInherited Members\nIAnimal.Name , IAnimal.this[int] , IAnimal.Eat() , IAnimal.Eat(Tool) ,\nIAnimal.Eat(string)\nExtension Methods\nICatExtension.Play(ICat, ContainersRefType.ColorType) , ICatExtension.Sleep(ICat, long)\nEvents\neat event of cat. Every cat must implement this event.\nEvent Type\nEventHandler\uF1C5\nInterface ICat\npublic interface ICat : IAnimal\neat\nevent EventHandler eat", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.eventhandler" @@ -7054,7 +7491,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7063,7 +7500,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7072,7 +7509,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Coordinates": { "Left": 0, "Top": 118.5 @@ -7081,7 +7518,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Coordinates": { "Left": 0, "Top": 118.5 @@ -7090,7 +7527,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Coordinates": { "Left": 0, "Top": 453.75 @@ -7099,7 +7536,7 @@ }, { "Goto": { - "PageNumber": 89, + "PageNumber": 93, "Coordinates": { "Left": 0, "Top": 453.75 @@ -7108,7 +7545,7 @@ }, { "Goto": { - "PageNumber": 90, + "PageNumber": 94, "Coordinates": { "Left": 0, "Top": 612.75 @@ -7117,7 +7554,7 @@ }, { "Goto": { - "PageNumber": 90, + "PageNumber": 94, "Coordinates": { "Left": 0, "Top": 612.75 @@ -7126,7 +7563,7 @@ }, { "Goto": { - "PageNumber": 90, + "PageNumber": 94, "Coordinates": { "Left": 0, "Top": 242.25 @@ -7135,7 +7572,7 @@ }, { "Goto": { - "PageNumber": 90, + "PageNumber": 94, "Coordinates": { "Left": 0, "Top": 477.75 @@ -7144,7 +7581,7 @@ }, { "Goto": { - "PageNumber": 90, + "PageNumber": 94, "Coordinates": { "Left": 0, "Top": 477.75 @@ -7153,7 +7590,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7162,7 +7599,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7171,7 +7608,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7180,7 +7617,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7189,7 +7626,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7198,7 +7635,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7207,7 +7644,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7216,7 +7653,7 @@ }, { "Goto": { - "PageNumber": 93, + "PageNumber": 97, "Coordinates": { "Left": 0, "Top": 348.75 @@ -7225,7 +7662,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -7234,7 +7671,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -7243,7 +7680,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -7252,7 +7689,7 @@ }, { "Goto": { - "PageNumber": 94, + "PageNumber": 98, "Coordinates": { "Left": 0, "Top": 792 @@ -7262,8 +7699,8 @@ ] }, { - "Number": 93, - "Text": "93 / 127Namespace:CatLibraryAssembly:CatLibrary.dllIt's the class that contains ICat interface's extension method.This class must be public and static.Also it shouldn't be a geneic classInheritanceobject\uF1C5 ICatExtensionInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsExtension method to let cat playParametersicat ICatCattoy ContainersRefType.ColorTypeSomething to playClass ICatExtensionpublic static class ICatExtension\uF12CPlay(ICat, ColorType)public static void Play(this ICat icat, ContainersRefType.ColorType toy)", + "Number": 97, + "Text": "97 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nIt's the class that contains ICat interface's extension method.\nThis class must be public and static.\nAlso it shouldn't be a geneic class\nInheritance\nobject\uF1C5 ICatExtension\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nExtension method to let cat play\nParameters\nicat ICat\nCat\ntoy ContainersRefType.ColorType\nSomething to play\nClass ICatExtension\npublic static class ICatExtension\n\uF12C\nPlay(ICat, ColorType)\npublic static void Play(this ICat icat, ContainersRefType.ColorType toy)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -7339,7 +7776,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7348,7 +7785,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7357,7 +7794,7 @@ }, { "Goto": { - "PageNumber": 92, + "PageNumber": 96, "Type": 2, "Coordinates": { "Top": 0 @@ -7366,7 +7803,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -7375,7 +7812,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -7384,7 +7821,7 @@ }, { "Goto": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -7393,7 +7830,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -7402,7 +7839,7 @@ }, { "Goto": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -7412,8 +7849,8 @@ ] }, { - "Number": 94, - "Text": "94 / 127Extension method hint that how long the cat can sleep.Parametersicat ICatThe type will be extended.hours long\uF1C5The length of sleep.Sleep(ICat, long)public static void Sleep(this ICat icat, long hours)", + "Number": 98, + "Text": "98 / 131\nExtension method hint that how long the cat can sleep.\nParameters\nicat ICat\nThe type will be extended.\nhours long\uF1C5\nThe length of sleep.\nSleep(ICat, long)\npublic static void Sleep(this ICat icat, long hours)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.int64" @@ -7426,7 +7863,7 @@ }, { "Goto": { - "PageNumber": 92, + "PageNumber": 96, "Type": 2, "Coordinates": { "Top": 0 @@ -7436,12 +7873,12 @@ ] }, { - "Number": 95, - "Text": "95 / 127Namespace:CatLibraryAssembly:CatLibrary.dllGeneric delegate with many constrains.Parametersk KType K.t TType T.l LType L.Type ParametersKGeneric K.TGeneric T.LGeneric L.Delegate MRefDelegatepublic delegate void MRefDelegate(K k, T t, L l) where K : class, IComparable where T : struct where L : Tom, IEnumerable", + "Number": 99, + "Text": "99 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nGeneric delegate with many constrains.\nParameters\nk K\nType K.\nt T\nType T.\nl L\nType L.\nType Parameters\nK\nGeneric K.\nT\nGeneric T.\nL\nGeneric L.\nDelegate MRefDelegate\npublic delegate void MRefDelegate(K k, T t, L l) where K : class,\nIComparable where T : struct where L : Tom, IEnumerable", "Links": [ { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7450,7 +7887,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7460,8 +7897,8 @@ ] }, { - "Number": 96, - "Text": "96 / 127Namespace:CatLibraryAssembly:CatLibrary.dllDelegate in the namespaceParameterspics List\uF1C5a name list of pictures.name string\uF1C5give out the needed name.Delegate MRefNormalDelegatepublic delegate void MRefNormalDelegate(List pics, out string name)", + "Number": 100, + "Text": "100 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nDelegate in the namespace\nParameters\npics List\uF1C5 \na name list of pictures.\nname string\uF1C5\ngive out the needed name.\nDelegate MRefNormalDelegate\npublic delegate void MRefNormalDelegate(List pics, out string name)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1" @@ -7492,7 +7929,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7501,7 +7938,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7511,8 +7948,8 @@ ] }, { - "Number": 97, - "Text": "97 / 127Namespace:CatLibraryAssembly:CatLibrary.dllTom class is only inherit from Object. Not any member inside itself.Inheritanceobject\uF1C5 TomDerivedTomFromBaseClassInherited Membersobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5MethodsThis is a Tom Method with complex type as returnParametersa ComplexA complex inputb Tuple\uF1C5Another complex inputClass Tompublic class Tom\uF12CTomMethod(Complex, Tuple)public Complex TomMethod(Complex a, Tuple b)", + "Number": 101, + "Text": "101 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTom class is only inherit from Object. Not any member inside itself.\nInheritance\nobject\uF1C5 Tom\nDerived\nTomFromBaseClass\nInherited Members\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nMethods\nThis is a Tom Method with complex type as return\nParameters\na Complex\nA complex input\nb Tuple\uF1C5 \nAnother complex input\nClass Tom\npublic class Tom\n\uF12C\nTomMethod(Complex, Tuple)\npublic Complex TomMethod(Complex a, Tuple b)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -7606,7 +8043,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7615,7 +8052,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7624,7 +8061,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7633,7 +8070,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7642,7 +8079,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7651,7 +8088,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7660,7 +8097,7 @@ }, { "Goto": { - "PageNumber": 87, + "PageNumber": 91, "Type": 2, "Coordinates": { "Top": 0 @@ -7669,7 +8106,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7678,7 +8115,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7687,7 +8124,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7696,7 +8133,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7705,7 +8142,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7714,7 +8151,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7723,7 +8160,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7732,7 +8169,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7741,7 +8178,7 @@ }, { "Goto": { - "PageNumber": 97, + "PageNumber": 101, "Type": 2, "Coordinates": { "Top": 0 @@ -7751,8 +8188,8 @@ ] }, { - "Number": 98, - "Text": "98 / 127ReturnsComplexComplex TomFromBaseClassExceptionsNotImplementedException\uF1C5This is not implementedArgumentException\uF1C5This is the exception to be thrown when implementedCatExceptionThis is the exception in current documentation", + "Number": 102, + "Text": "102 / 131\nReturns\nComplex\nComplex TomFromBaseClass\nExceptions\nNotImplementedException\uF1C5\nThis is not implemented\nArgumentException\uF1C5\nThis is the exception to be thrown when implemented\nCatException\nThis is the exception in current documentation", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.string" @@ -7783,7 +8220,7 @@ }, { "Goto": { - "PageNumber": 87, + "PageNumber": 91, "Type": 2, "Coordinates": { "Top": 0 @@ -7792,7 +8229,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7801,7 +8238,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7810,7 +8247,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7819,7 +8256,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7828,7 +8265,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7837,7 +8274,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7846,7 +8283,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7855,7 +8292,7 @@ }, { "Goto": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -7864,7 +8301,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -7873,7 +8310,7 @@ }, { "Goto": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -7883,8 +8320,8 @@ ] }, { - "Number": 99, - "Text": "99 / 127Namespace:CatLibraryAssembly:CatLibrary.dllTomFromBaseClass inherits from @Inheritanceobject\uF1C5 Tom TomFromBaseClassInherited MembersTom.TomMethod(Complex, Tuple) ,object.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,object.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,object.ToString()\uF1C5ConstructorsThis is a #ctor with parameterParametersk int\uF1C5Class TomFromBaseClasspublic class TomFromBaseClass : Tom\uF12C\uF12CTomFromBaseClass(int)public TomFromBaseClass(int k)", + "Number": 103, + "Text": "103 / 131\nNamespace: CatLibrary\nAssembly: CatLibrary.dll\nTomFromBaseClass inherits from @\nInheritance\nobject\uF1C5 Tom TomFromBaseClass\nInherited Members\nTom.TomMethod(Complex, Tuple) ,\nobject.Equals(object)\uF1C5 , object.Equals(object, object)\uF1C5 , object.GetHashCode()\uF1C5 ,\nobject.GetType()\uF1C5 , object.MemberwiseClone()\uF1C5 , object.ReferenceEquals(object, object)\uF1C5 ,\nobject.ToString()\uF1C5\nConstructors\nThis is a #ctor with parameter\nParameters\nk int\uF1C5\nClass TomFromBaseClass\npublic class TomFromBaseClass : Tom\n\uF12C \uF12C\nTomFromBaseClass(int)\npublic TomFromBaseClass(int k)", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -7969,7 +8406,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7978,7 +8415,7 @@ }, { "Goto": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -7987,7 +8424,7 @@ }, { "Goto": { - "PageNumber": 97, + "PageNumber": 101, "Type": 2, "Coordinates": { "Top": 0 @@ -7996,7 +8433,7 @@ }, { "Goto": { - "PageNumber": 97, + "PageNumber": 101, "Coordinates": { "Left": 0, "Top": 360.75 @@ -8006,12 +8443,12 @@ ] }, { - "Number": 100, - "Text": "100 / 127EnumsColorTypeEnumeration ColorTypeNamespace MRef.Demo.Enumeration", + "Number": 104, + "Text": "104 / 131\nEnums\nColorType\nEnumeration ColorType\nNamespace MRef.Demo.Enumeration", "Links": [ { "Goto": { - "PageNumber": 101, + "PageNumber": 105, "Type": 2, "Coordinates": { "Top": 0 @@ -8020,7 +8457,7 @@ }, { "Goto": { - "PageNumber": 101, + "PageNumber": 105, "Type": 2, "Coordinates": { "Top": 0 @@ -8030,8 +8467,8 @@ ] }, { - "Number": 101, - "Text": "101 / 127Namespace:MRef.Demo.EnumerationAssembly:CatLibrary.dllEnumeration ColorTypeFieldsRed = 0this color is redBlue = 1blue like riverYellow = 2yellow comes from desertRemarksRed/Blue/Yellow can become all color you want.See Alsoobject\uF1C5Enum ColorTypepublic enum ColorType", + "Number": 105, + "Text": "105 / 131\nNamespace: MRef.Demo.Enumeration\nAssembly: CatLibrary.dll\nEnumeration ColorType\nFields\nRed = 0\nthis color is red\nBlue = 1\nblue like river\nYellow = 2\nyellow comes from desert\nRemarks\nRed/Blue/Yellow can become all color you want.\nSee Also\nobject\uF1C5\nEnum ColorType\npublic enum ColorType", "Links": [ { "Uri": "https://learn.microsoft.com/dotnet/api/system.object" @@ -8050,7 +8487,7 @@ }, { "Goto": { - "PageNumber": 100, + "PageNumber": 104, "Type": 2, "Coordinates": { "Top": 0 @@ -8060,8 +8497,8 @@ ] }, { - "Number": 102, - "Text": "102 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Swagger PetstoreDescribe APIs in Pet StorepetDescription for pet tagAddPetAdd a new pet to the storeRequestParametersNameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples405Invalid inputNOTE: Add pet only when you needs.UpdatePetUpdate an existing petRequestParametersPOST /petPUT /pet", + "Number": 106, + "Text": "106 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nSwagger Petstore\nDescribe APIs in Pet Store\npet\nDescription for pet tag\nAddPet\nAdd a new pet to the store\nRequest\nParameters\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nNOTE: Add pet only when you needs.\nUpdatePet\nUpdate an existing pet\nRequest\nParameters\nPOST /pet\nPUT /pet", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_addPet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FaddPet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8101,7 +8538,7 @@ }, { "Goto": { - "PageNumber": 114, + "PageNumber": 118, "Coordinates": { "Left": 0, "Top": 406.5 @@ -8111,8 +8548,8 @@ ] }, { - "Number": 103, - "Text": "103 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples400Invalid ID supplied404Pet not found405Validation exceptionFindPetsByStatusFinds Pets by statusMultiple status values can be provided with comma separated stringsRequestParametersNameTypeDefaultNotes*statusStatus values that need to be considered for filterResponsesStatus CodeTypeDescriptionSamples200Pet[]successful operation400Invalid status valueFindPetsByTagsGET /pet/findByStatus?status", + "Number": 107, + "Text": "107 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Pet not found\n405 Validation exception\nFindPetsByStatus\nFinds Pets by status\nMultiple status values can be provided with comma separated strings\nRequest\nParameters\nName Type Default Notes\n*status Status values that need to be considered for filter\nResponses\nStatus Code Type Description Samples\n200 Pet[] successful operation\n400 Invalid status value\nFindPetsByTags\nGET /pet/findByStatus?status", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_findPetsByStatus.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FfindPetsByStatus%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8152,7 +8589,7 @@ }, { "Goto": { - "PageNumber": 114, + "PageNumber": 118, "Coordinates": { "Left": 0, "Top": 406.5 @@ -8161,7 +8598,7 @@ }, { "Goto": { - "PageNumber": 114, + "PageNumber": 118, "Coordinates": { "Left": 0, "Top": 406.5 @@ -8171,8 +8608,8 @@ ] }, { - "Number": 104, - "Text": "104 / 127| Improve this Doc\uF1C5View Source\uF1C5Finds Pets by tagsMuliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 fortesting.RequestParametersNameTypeDefaultNotes*tagsTags to filter byResponsesStatus CodeTypeDescriptionSamples200Pet[]successful operation400Invalid tag valueDeletePetDeletes a petRequestParametersNameTypeDefaultNotesapi_key*petIdPet id to deleteResponsesGET /pet/findByTags?tagsDELETE /pet/{petId}", + "Number": 108, + "Text": "108 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nFinds Pets by tags\nMuliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for\ntesting.\nRequest\nParameters\nName Type Default Notes\n*tags Tags to filter by\nResponses\nStatus Code Type Description Samples\n200 Pet[] successful operation\n400 Invalid tag value\nDeletePet\nDeletes a pet\nRequest\nParameters\nName Type Default Notes\napi_key\n*petId Pet id to delete\nResponses\nGET /pet/findByTags?tags\nDELETE /pet/{petId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_deletePet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FdeletePet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8194,7 +8631,7 @@ }, { "Goto": { - "PageNumber": 114, + "PageNumber": 118, "Coordinates": { "Left": 0, "Top": 406.5 @@ -8204,8 +8641,8 @@ ] }, { - "Number": 105, - "Text": "105 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples400Invalid ID supplied404Pet not foundGetPetByIdFind pet by IDReturns a single petRequestParametersNameTypeDefaultNotes*petIdID of pet to returnResponsesStatus CodeTypeDescriptionSamples200Petsuccessful operation400Invalid ID supplied404Pet not foundUpdatePetWithFormUpdates a pet in the store with form dataRequestGET /pet/{petId}POST /pet/{petId}", + "Number": 109, + "Text": "109 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Pet not found\nGetPetById\nFind pet by ID\nReturns a single pet\nRequest\nParameters\nName Type Default Notes\n*petId ID of pet to return\nResponses\nStatus Code Type Description Samples\n200 Pet successful operation\n400 Invalid ID supplied\n404 Pet not found\nUpdatePetWithForm\nUpdates a pet in the store with form data\nRequest\nGET /pet/{petId}\nPOST /pet/{petId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getPetById.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetPetById%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8245,7 +8682,7 @@ }, { "Goto": { - "PageNumber": 114, + "PageNumber": 118, "Coordinates": { "Left": 0, "Top": 406.5 @@ -8255,8 +8692,8 @@ ] }, { - "Number": 106, - "Text": "106 / 127| Improve this Doc\uF1C5View Source\uF1C5ParametersNameTypeDefaultNotes*petIdID of pet that needs to be updatednameUpdated name of the petstatusUpdated status of the petResponsesStatus CodeTypeDescriptionSamples405Invalid inputUploadFileuploads an imageRequestParametersNameTypeDefaultNotes*petIdID of pet to updateadditionalMetadataAdditional data to pass to serverfilefile to uploadResponsesStatus CodeTypeDescriptionSamples200ApiResponsesuccessful operationPOST /pet/{petId}/uploadImage", + "Number": 110, + "Text": "110 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nParameters\nName Type Default Notes\n*petId ID of pet that needs to be updated\nname Updated name of the pet\nstatus Updated status of the pet\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nUploadFile\nuploads an image\nRequest\nParameters\nName Type Default Notes\n*petId ID of pet to update\nadditionalMetadata Additional data to pass to server\nfile file to upload\nResponses\nStatus Code Type Description Samples\n200 ApiResponse successful operation\nPOST /pet/{petId}/uploadImage", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_uploadFile.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FuploadFile%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8278,7 +8715,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 553.5 @@ -8287,7 +8724,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 553.5 @@ -8297,8 +8734,8 @@ ] }, { - "Number": 107, - "Text": "107 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5storeAccess to Petstore ordersAdditional description for store tagAddPetAdd a new pet to the storeRequestParametersNameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples405Invalid inputNOTE: Add pet only when you needs.GetInventoryReturns pet inventories by statusReturns a map of status codes to quantitiesRequestResponsesPOST /petGET /store/inventory", + "Number": 111, + "Text": "111 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nstore\nAccess to Petstore orders\nAdditional description for store tag\nAddPet\nAdd a new pet to the store\nRequest\nParameters\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nNOTE: Add pet only when you needs.\nGetInventory\nReturns pet inventories by status\nReturns a map of status codes to quantities\nRequest\nResponses\nPOST /pet\nGET /store/inventory", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_addPet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FaddPet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8338,7 +8775,7 @@ }, { "Goto": { - "PageNumber": 114, + "PageNumber": 118, "Coordinates": { "Left": 0, "Top": 406.5 @@ -8348,8 +8785,8 @@ ] }, { - "Number": 108, - "Text": "108 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples200objectsuccessful operationPlaceOrderPlace an order for a petRequestParametersNameTypeDefaultNotes*bodyOrderorder placed for purchasing the petResponsesStatus CodeTypeDescriptionSamples200Ordersuccessful operation400Invalid OrderDeleteOrderDelete purchase order by IDFor valid response try integer IDs with positive integer value. Negative or non-integervalues will generate API errorsRequestParametersPOST /store/orderDELETE /store/order/{orderId}", + "Number": 112, + "Text": "112 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n200 object successful operation\nPlaceOrder\nPlace an order for a pet\nRequest\nParameters\nName Type Default Notes\n*body Order order placed for purchasing the pet\nResponses\nStatus Code Type Description Samples\n200 Order successful operation\n400 Invalid Order\nDeleteOrder\nDelete purchase order by ID\nFor valid response try integer IDs with positive integer value. Negative or non-integer\nvalues will generate API errors\nRequest\nParameters\nPOST /store/order\nDELETE /store/order/{orderId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_placeOrder.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FplaceOrder%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8389,7 +8826,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 389.25 @@ -8398,7 +8835,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 389.25 @@ -8408,8 +8845,8 @@ ] }, { - "Number": 109, - "Text": "109 / 127| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*orderIdID of the order that needs to be deletedResponsesStatus CodeTypeDescriptionSamples400Invalid ID supplied404Order not foundGetOrderByIdFind purchase order by IDFor valid response try integer IDs with value >= 1 and <= 10. Other values will generatedexceptionsRequestParametersNameTypeDefaultNotes*orderIdID of pet that needs to be fetchedResponsesStatus CodeTypeDescriptionSamples200Ordersuccessful operation400Invalid ID supplied404Order not foundGET /store/order/{orderId}", + "Number": 113, + "Text": "113 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*orderId ID of the order that needs to be deleted\nResponses\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Order not found\nGetOrderById\nFind purchase order by ID\nFor valid response try integer IDs with value >= 1 and <= 10. Other values will generated\nexceptions\nRequest\nParameters\nName Type Default Notes\n*orderId ID of pet that needs to be fetched\nResponses\nStatus Code Type Description Samples\n200 Order successful operation\n400 Invalid ID supplied\n404 Order not found\nGET /store/order/{orderId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getOrderById.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetOrderById%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8431,7 +8868,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 389.25 @@ -8441,8 +8878,8 @@ ] }, { - "Number": 110, - "Text": "110 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5userOperations about userCreateUserCreate userThis can only be done by the logged in user.RequestParametersNameTypeDefaultNotes*bodyUserCreated user objectResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationCreateUsersWithArrayInputCreates list of users with given input arrayRequestParametersNameTypeDefaultNotes*bodyUser[]List of user objectResponsesPOST /userPOST /user/createWithArray", + "Number": 114, + "Text": "114 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nuser\nOperations about user\nCreateUser\nCreate user\nThis can only be done by the logged in user.\nRequest\nParameters\nName Type Default Notes\n*body User Created user object\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nCreateUsersWithArrayInput\nCreates list of users with given input array\nRequest\nParameters\nName Type Default Notes\n*body User[] List of user object\nResponses\nPOST /user\nPOST /user/createWithArray", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUser.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FcreateUser%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8482,7 +8919,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 120.75 @@ -8491,7 +8928,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 120.75 @@ -8501,8 +8938,8 @@ ] }, { - "Number": 111, - "Text": "111 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamplesdefaultsuccessful operationCreateUsersWithListInputCreates list of users with given input arrayRequestParametersNameTypeDefaultNotes*bodyUser[]List of user objectResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationLoginUserLogs user into the systemRequestParametersNameTypeDefaultNotes*usernameThe user name for login*passwordThe password for login in clear textPOST /user/createWithListGET /user/login?username&password", + "Number": 115, + "Text": "115 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\ndefault successful operation\nCreateUsersWithListInput\nCreates list of users with given input array\nRequest\nParameters\nName Type Default Notes\n*body User[] List of user object\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nLoginUser\nLogs user into the system\nRequest\nParameters\nName Type Default Notes\n*username The user name for login\n*password The password for login in clear text\nPOST /user/createWithList\nGET /user/login?username&password", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUsersWithListInput.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FcreateUsersWithListInput%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8542,7 +8979,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 120.75 @@ -8552,8 +8989,8 @@ ] }, { - "Number": 112, - "Text": "112 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5ResponsesStatus CodeTypeDescriptionSamples200stringsuccessful operation400Invalid username/password suppliedLogoutUserLogs out current logged in user sessionRequestResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationDeleteUserDelete userThis can only be done by the logged in user.RequestParametersNameTypeDefaultNotes*usernameThe name that needs to be deletedResponsesGET /user/logoutDELETE /user/{username}", + "Number": 116, + "Text": "116 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nResponses\nStatus Code Type Description Samples\n200 string successful operation\n400 Invalid username/password supplied\nLogoutUser\nLogs out current logged in user session\nRequest\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nDeleteUser\nDelete user\nThis can only be done by the logged in user.\nRequest\nParameters\nName Type Default Notes\n*username The name that needs to be deleted\nResponses\nGET /user/logout\nDELETE /user/{username}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_logoutUser.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FlogoutUser%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8594,8 +9031,8 @@ ] }, { - "Number": 113, - "Text": "113 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples400Invalid username supplied404User not foundGetUserByNameGet user by user nameRequestParametersNameTypeDefaultNotes*usernameThe name that needs to be fetched. Use user1 for testing.ResponsesStatus CodeTypeDescriptionSamples200Usersuccessful operation400Invalid username supplied404User not foundOther APIsUpdateUserUpdated userThis can only be done by the logged in user.RequestGET /user/{username}", + "Number": 117, + "Text": "117 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n400 Invalid username supplied\n404 User not found\nGetUserByName\nGet user by user name\nRequest\nParameters\nName Type Default Notes\n*username The name that needs to be fetched. Use user1 for testing.\nResponses\nStatus Code Type Description Samples\n200 User successful operation\n400 Invalid username supplied\n404 User not found\nOther APIs\nUpdateUser\nUpdated user\nThis can only be done by the logged in user.\nRequest\nGET /user/{username}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getUserByName.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetUserByName%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8635,7 +9072,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 120.75 @@ -8645,12 +9082,12 @@ ] }, { - "Number": 114, - "Text": "114 / 127ParametersNameTypeDefaultNotes*usernamename that need to be updated*bodyUserUpdated user objectResponsesStatus CodeTypeDescriptionSamples400Invalid user supplied404User not foundDefinitionsPetNameTypeNotescategoryCategory[]idinteger (int64)namestringphotoUrlsarraystatusstringpet status in the storetagsTag[]CategoryPUT /user/{username}", + "Number": 118, + "Text": "118 / 131\nParameters\nName Type Default Notes\n*username name that need to be updated\n*body User Updated user object\nResponses\nStatus Code Type Description Samples\n400 Invalid user supplied\n404 User not found\nDefinitions\nPet\nName Type Notes\ncategory Category[]\nid integer (int64)\nname string\nphotoUrls array\nstatus string pet status in the store\ntags Tag[]\nCategory\nPUT /user/{username}", "Links": [ { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 120.75 @@ -8659,7 +9096,7 @@ }, { "Goto": { - "PageNumber": 114, + "PageNumber": 118, "Coordinates": { "Left": 0, "Top": 138 @@ -8668,7 +9105,7 @@ }, { "Goto": { - "PageNumber": 115, + "PageNumber": 119, "Coordinates": { "Left": 0, "Top": 687 @@ -8678,17 +9115,17 @@ ] }, { - "Number": 115, - "Text": "115 / 127NameTypeNotesidinteger (int64)namestringTagNameTypeNotesidinteger (int64)namestringApiResponseNameTypeNotescodeinteger (int32)messagestringtypestringOrderNameTypeNotescompletebooleanidinteger (int64)petIdinteger (int64)quantityinteger (int32)shipDatestring (date-time)statusstringOrder StatusUser", + "Number": 119, + "Text": "119 / 131\nName Type Notes\nid integer (int64)\nname string\nTag\nName Type Notes\nid integer (int64)\nname string\nApiResponse\nName Type Notes\ncode integer (int32)\nmessage string\ntype string\nOrder\nName Type Notes\ncomplete boolean\nid integer (int64)\npetId integer (int64)\nquantity integer (int32)\nshipDate string (date-time)\nstatus string Order Status\nUser", "Links": [] }, { - "Number": 116, - "Text": "116 / 127NameTypeNotesemailstringfirstNamestringidinteger (int64)lastNamestringpasswordstringphonestringuserStatusinteger (int32)User StatususernamestringSee AlsosSee other REST APIs:Contacts API", + "Number": 120, + "Text": "120 / 131\nName Type Notes\nemail string\nfirstName string\nid integer (int64)\nlastName string\npassword string\nphone string\nuserStatus integer (int32) User Status\nusername string\nSee Alsos\nSee other REST APIs:\nContacts API", "Links": [ { "Goto": { - "PageNumber": 117, + "PageNumber": 121, "Type": 2, "Coordinates": { "Top": 0 @@ -8698,8 +9135,8 @@ ] }, { - "Number": 117, - "Text": "117 / 127| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5ContactsGet ContactsYou can get a collection of contacts from your tenant.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*api-version1.6The version of the Graph API to target. Beginning withversion 1.5, the api-version string is represented inmajor.minor format. Prior releases were represented as datestrings: '2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess. Theresults arereturned intheresponsebody.Mime type: application/jsonGet Contact By IdGet a contact by using the object ID.Required scope: Contacts.Read or Contacts.WriteGET /contacts?api-version{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"value\": [ { \"odata.type\": \"Microsoft.DirectoryServices.Contac \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9 \"deletionTimestamp\": null,", + "Number": 121, + "Text": "121 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nContacts\nGet Contacts\nYou can get a collection of contacts from your tenant.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*api-\nversion\n1.6 The version of the Graph API to target. Beginning with\nversion 1.5, the api-version string is represented in\nmajor.minor format. Prior releases were represented as date\nstrings: '2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess. The\nresults are\nreturned in\nthe\nresponse\nbody.\nMime type: application/json\nGet Contact By Id\nGet a contact by using the object ID.\nRequired scope: Contacts.Read or Contacts.Write\nGET /contacts?api-version\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"value\": [\n{ \n\"odata.type\": \"Microsoft.DirectoryServices.Contac\n\"objectType\": \"Contact\",\n\"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\n\"deletionTimestamp\": null,", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contacts.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contacts%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8740,8 +9177,8 @@ ] }, { - "Number": 118, - "Text": "118 / 127| Improve this Doc\uF1C5View Source\uF1C5RequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6Specifies the version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess. Thecontact isreturned intheresponsebody.Mime type: application/jsonUpdate ContactChange a contact's properties.Required scope: Contacts.WriteRequestGET /contacts/{object_id}?api-version{ \"odata.metadata\": \"https://graph.windows.net/graphdir1.onmicrosoft.com/$m \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null,", + "Number": 122, + "Text": "122 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 Specifies the version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess. The\ncontact is\nreturned in\nthe\nresponse\nbody.\nMime type: application/json\nUpdate Contact\nChange a contact's properties.\nRequired scope: Contacts.Write\nRequest\nGET /contacts/{object_id}?api-version\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/graphdir1.onmicrosoft.com/$m\n\"odata.type\": \"Microsoft.DirectoryServices.Contact\",\n\"objectType\": \"Contact\",\n\"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\",\n\"deletionTimestamp\": null,\n\"city\": null,\n\"companyName\": null,", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_update_contact.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fupdate%20contact%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8764,8 +9201,8 @@ ] }, { - "Number": 119, - "Text": "119 / 127| Improve this Doc\uF1C5View Source\uF1C5ParametersNameTypeDefaultNotes*object_id7163f3b8-70c9-43d2-b9e1-4467ddaf087aThe object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-versionstring is represented in major.minor format.Prior releases were represented as datestrings: '2013-11-08' and '2013-04-05'.Required.bodyparamcontactthis is request body, not real parameterResponsesStatusCodeTypeDescriptionSamples204No Content. Indicates success. No response body isreturned.Delete ContactDelete a contact.Required scope: Contacts.WriteRequestParametersPATCH /contacts/{object_id}?api-versionDELETE /contacts/{object_id}[?api-version]", + "Number": 123, + "Text": "123 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nParameters\nName Type Default Notes\n*object_id 7163f3b8-70c9-\n43d2-b9e1-\n4467ddaf087a\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version\nstring is represented in major.minor format.\nPrior releases were represented as date\nstrings: '2013-11-08' and '2013-04-05'.\nRequired.\nbodyparam contact this is request body, not real parameter\nResponses\nStatus\nCode Type Description Samples\n204 No Content. Indicates success. No response body is\nreturned.\nDelete Contact\nDelete a contact.\nRequired scope: Contacts.Write\nRequest\nParameters\nPATCH /contacts/{object_id}?api-version\nDELETE /contacts/{object_id}[?api-version]", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_delete_contact.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fdelete%20contact%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8787,7 +9224,7 @@ }, { "Goto": { - "PageNumber": 125, + "PageNumber": 129, "Coordinates": { "Left": 0, "Top": 324.75 @@ -8797,8 +9234,8 @@ ] }, { - "Number": 120, - "Text": "120 / 127| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*object_id7163f3b8-70c9-43d2-b9e1-4467ddaf087aThe object ID (GUID) of the target contact.api-version1.6Specifies the version of the Graph API to target.Beginning with version 1.5, the api-versionstring is represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatus CodeTypeDescriptionSamples204No Content. Indicates success.Get Contact Manager LinkGet a link to the contact's manager.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.GET /contacts/{object_id}/$links/manager?api-version", + "Number": 124, + "Text": "124 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*object_id 7163f3b8-70c9-\n43d2-b9e1-\n4467ddaf087a\nThe object ID (GUID) of the target contact.\napi-\nversion\n1.6 Specifies the version of the Graph API to target.\nBeginning with version 1.5, the api-version\nstring is represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus Code Type Description Samples\n204 No Content. Indicates success.\nGet Contact Manager Link\nGet a link to the contact's manager.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nGET /contacts/{object_id}/$links/manager?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contact_manager_link.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contact%20manager%20link%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8821,8 +9258,8 @@ ] }, { - "Number": 121, - "Text": "121 / 127| Improve this Doc\uF1C5View Source\uF1C5ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess. Alink to thecontact'smanager isreturned.Mime type: application/json404Not Found.Therequestedresourcewas notfound. Thiscan occur ifthe managerproperty isnot currentlyset for thespecifiedcontact. Itcan alsohave othercauses, forexample, abad domain.A code andassociatedmessage isreturnedwith theerror.Mime type: application/jsonUpdate Contact Manager{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"url\": \"https://graph.windows.net/myorganization/dire4c4a-93b2-03f065fabd93/Microsoft.WindowsAzure.ActiveDir}{ \"odata.error\": { \"code\": \"Request_ResourceNotFound\", \"message\": { \"lang\": \"en\", \"value\": \"Resource not found for the segment 'man } }}", + "Number": 125, + "Text": "125 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess. A\nlink to the\ncontact's\nmanager is\nreturned.\nMime type: application/json\n404 Not Found.\nThe\nrequested\nresource\nwas not\nfound. This\ncan occur if\nthe manager\nproperty is\nnot currently\nset for the\nspecified\ncontact. It\ncan also\nhave other\ncauses, for\nexample, a\nbad domain.\nA code and\nassociated\nmessage is\nreturned\nwith the\nerror.\nMime type: application/json\nUpdate Contact Manager\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"url\": \"https://graph.windows.net/myorganization/dire\n4c4a-93b2-03f065fabd93/Microsoft.WindowsAzure.ActiveDir\n}\n{ \n\"odata.error\": {\n\"code\": \"Request_ResourceNotFound\",\n\"message\": {\n\"lang\": \"en\",\n\"value\": \"Resource not found for the segment 'man\n} \n}\n}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_update_contact_manager.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fupdate%20contact%20manager%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8845,8 +9282,8 @@ ] }, { - "Number": 122, - "Text": "122 / 127| Improve this Doc\uF1C5View Source\uF1C5Update the contact's managerRequired scope: Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-versionstring is represented in major.minor format.Prior releases were represented as datestrings: '2013-11-08' and '2013-04-05'.Required.*bodyparamThe request body contains a single propertythat specifies the URL of the user or contact toadd as manager.ResponsesStatusCodeTypeDescriptionSamples204No Content. Indicates success. No response body isreturned.Delete Contact Manager By IdDelete the contact's manager.Required scope: Contacts.WriteRequestPUT /contacts/{object_id}/$links/manager?api-version", + "Number": 126, + "Text": "126 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nUpdate the contact's manager\nRequired scope: Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-version 1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version\nstring is represented in major.minor format.\nPrior releases were represented as date\nstrings: '2013-11-08' and '2013-04-05'.\nRequired.\n*bodyparam The request body contains a single property\nthat specifies the URL of the user or contact to\nadd as manager.\nResponses\nStatus\nCode Type Description Samples\n204 No Content. Indicates success. No response body is\nreturned.\nDelete Contact Manager By Id\nDelete the contact's manager.\nRequired scope: Contacts.Write\nRequest\nPUT /contacts/{object_id}/$links/manager?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_delete_contact_manager_by_id.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fdelete%20contact%20manager%20by%20id%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8869,8 +9306,8 @@ ] }, { - "Number": 123, - "Text": "123 / 127| Improve this Doc\uF1C5View Source\uF1C5ParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples204No Content. Indicates success. N response body isreturned.Get Contact Direct Reports LinksGet a links to the contact's direct reports.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.DELETE /contacts/{object_id}/$links/manager?api-versionGET /contacts/{object_id}/$links/directReports?api-version", + "Number": 127, + "Text": "127 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n204 No Content. Indicates success. N response body is\nreturned.\nGet Contact Direct Reports Links\nGet a links to the contact's direct reports.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\nDELETE /contacts/{object_id}/$links/manager?api-version\nGET /contacts/{object_id}/$links/directReports?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contact_direct_reports_links.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contact%20direct%20reports%20links%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8893,8 +9330,8 @@ ] }, { - "Number": 124, - "Text": "124 / 127| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess.One or moredirectreports arereturned.Mime type: application/jsonGet Contact MemberOf LinksGet a links to the contact's direct group and directory role memberships.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/4e26-b24f-c830606ef41c/Microsoft.DirectoryServices.Cont } ]GET /contacts/{object_id}/$links/memberOf?api-version", + "Number": 128, + "Text": "128 / 131\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess.\nOne or more\ndirect\nreports are\nreturned.\nMime type: application/json\nGet Contact MemberOf Links\nGet a links to the contact's direct group and directory role memberships.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"value\": [\n{ \n\"url\": \"https://graph.windows.net/myorganization/\n4e26-b24f-c830606ef41c/Microsoft.DirectoryServices.Cont\n} \n]\nGET /contacts/{object_id}/$links/memberOf?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contact_memberOf_links.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contact%20memberOf%20links%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -8917,17 +9354,17 @@ ] }, { - "Number": 125, - "Text": "125 / 127NameTypeDefaultNotes*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess.One or moregroupsand/ordirectoryroles arereturned.Mime type: application/jsonDefinitionsContactNameTypeNotesobjectTypestringobjectIdstringdeletionTimestampstring (date-time)citystringcountrystringdepartmentstring{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/b942-47c9-a10e-a4bee353ce60/Microsoft.DirectoryServices } ]", + "Number": 129, + "Text": "129 / 131\nName Type Default Notes\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess.\nOne or more\ngroups\nand/or\ndirectory\nroles are\nreturned.\nMime type: application/json\nDefinitions\nContact\nName Type Notes\nobjectType string\nobjectId string\ndeletionTimestamp string (date-time)\ncity string\ncountry string\ndepartment string\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"value\": [\n{ \n\"url\": \"https://graph.windows.net/myorganization/\nb942-47c9-a10e-a4bee353ce60/Microsoft.DirectoryServices\n} \n]", "Links": [] }, { - "Number": 126, - "Text": "126 / 127NameTypeNotesdirSyncEnabledbooleandisplayNamestringfacsimileTelephoneNumberstringgivenNamestringjobTitlestringlastDirSyncTimestring (date-time)mailstringmailNicknamestringmobilestringphysicalDeliveryOfficeNamestringpostalCodestringprovisioningErrorsProvisioningError[]proxyAddressesarraysipProxyAddressstringstatestringstreetAddressstringsurnamestringtelephoneNumberstringthumbnailPhotostringProvisioningErrorNameTypeNoteserrorDetailstring", + "Number": 130, + "Text": "130 / 131\nName Type Notes\ndirSyncEnabled boolean\ndisplayName string\nfacsimileTelephoneNumber string\ngivenName string\njobTitle string\nlastDirSyncTime string (date-time)\nmail string\nmailNickname string\nmobile string\nphysicalDeliveryOfficeName string\npostalCode string\nprovisioningErrors ProvisioningError[]\nproxyAddresses array\nsipProxyAddress string\nstate string\nstreetAddress string\nsurname string\ntelephoneNumber string\nthumbnailPhoto string\nProvisioningError\nName Type Notes\nerrorDetail string", "Links": [ { "Goto": { - "PageNumber": 126, + "PageNumber": 130, "Coordinates": { "Left": 0, "Top": 164.25 @@ -8936,7 +9373,7 @@ }, { "Goto": { - "PageNumber": 126, + "PageNumber": 130, "Coordinates": { "Left": 0, "Top": 164.25 @@ -8946,8 +9383,8 @@ ] }, { - "Number": 127, - "Text": "127 / 127NameTypeNotesresolvedbooleanserviceInstancestringtimestampstring (date-time)", + "Number": 131, + "Text": "131 / 131\nName Type Notes\nresolved boolean\nserviceInstance string\ntimestamp string (date-time)", "Links": [] } ], @@ -9345,7 +9782,7 @@ } }, { - "Title": "Issue8725", + "Title": "Inheritdoc.Issue9736", "Children": [], "Destination": { "PageNumber": 61, @@ -9354,6 +9791,39 @@ "Top": 0 } } + }, + { + "Title": "Inheritdoc.Issue9736.IJsonApiOptions", + "Children": [], + "Destination": { + "PageNumber": 62, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Inheritdoc.Issue9736.JsonApiOptions", + "Children": [], + "Destination": { + "PageNumber": 63, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } + }, + { + "Title": "Issue8725", + "Children": [], + "Destination": { + "PageNumber": 65, + "Type": 2, + "Coordinates": { + "Top": 0 + } + } } ], "Destination": { @@ -9371,7 +9841,7 @@ "Title": "BaseClass1", "Children": [], "Destination": { - "PageNumber": 63, + "PageNumber": 67, "Type": 2, "Coordinates": { "Top": 0 @@ -9382,7 +9852,7 @@ "Title": "Class1", "Children": [], "Destination": { - "PageNumber": 64, + "PageNumber": 68, "Type": 2, "Coordinates": { "Top": 0 @@ -9391,7 +9861,7 @@ } ], "Destination": { - "PageNumber": 62, + "PageNumber": 66, "Type": 2, "Coordinates": { "Top": 0 @@ -9408,7 +9878,7 @@ "Title": "ContainersRefType", "Children": [], "Destination": { - "PageNumber": 69, + "PageNumber": 73, "Type": 2, "Coordinates": { "Top": 0 @@ -9419,7 +9889,7 @@ "Title": "ContainersRefType.ColorType", "Children": [], "Destination": { - "PageNumber": 71, + "PageNumber": 75, "Type": 2, "Coordinates": { "Top": 0 @@ -9430,7 +9900,7 @@ "Title": "ContainersRefType.ContainersRefTypeChild", "Children": [], "Destination": { - "PageNumber": 72, + "PageNumber": 76, "Type": 2, "Coordinates": { "Top": 0 @@ -9441,7 +9911,7 @@ "Title": "ContainersRefType.ContainersRefTypeChildInterface", "Children": [], "Destination": { - "PageNumber": 73, + "PageNumber": 77, "Type": 2, "Coordinates": { "Top": 0 @@ -9452,7 +9922,7 @@ "Title": "ContainersRefType.ContainersRefTypeDelegate", "Children": [], "Destination": { - "PageNumber": 74, + "PageNumber": 78, "Type": 2, "Coordinates": { "Top": 0 @@ -9463,7 +9933,7 @@ "Title": "ExplicitLayoutClass", "Children": [], "Destination": { - "PageNumber": 75, + "PageNumber": 79, "Type": 2, "Coordinates": { "Top": 0 @@ -9474,7 +9944,7 @@ "Title": "Issue231", "Children": [], "Destination": { - "PageNumber": 76, + "PageNumber": 80, "Type": 2, "Coordinates": { "Top": 0 @@ -9483,7 +9953,7 @@ } ], "Destination": { - "PageNumber": 68, + "PageNumber": 72, "Type": 2, "Coordinates": { "Top": 0 @@ -9494,7 +9964,7 @@ "Title": "CatException", "Children": [], "Destination": { - "PageNumber": 77, + "PageNumber": 81, "Type": 2, "Coordinates": { "Top": 0 @@ -9505,7 +9975,7 @@ "Title": "Cat", "Children": [], "Destination": { - "PageNumber": 78, + "PageNumber": 82, "Type": 2, "Coordinates": { "Top": 0 @@ -9516,7 +9986,7 @@ "Title": "Complex", "Children": [], "Destination": { - "PageNumber": 87, + "PageNumber": 91, "Type": 2, "Coordinates": { "Top": 0 @@ -9527,7 +9997,7 @@ "Title": "FakeDelegate", "Children": [], "Destination": { - "PageNumber": 88, + "PageNumber": 92, "Type": 2, "Coordinates": { "Top": 0 @@ -9538,7 +10008,7 @@ "Title": "IAnimal", "Children": [], "Destination": { - "PageNumber": 89, + "PageNumber": 93, "Type": 2, "Coordinates": { "Top": 0 @@ -9549,7 +10019,7 @@ "Title": "ICat", "Children": [], "Destination": { - "PageNumber": 92, + "PageNumber": 96, "Type": 2, "Coordinates": { "Top": 0 @@ -9560,7 +10030,7 @@ "Title": "ICatExtension", "Children": [], "Destination": { - "PageNumber": 93, + "PageNumber": 97, "Type": 2, "Coordinates": { "Top": 0 @@ -9571,7 +10041,7 @@ "Title": "MRefDelegate", "Children": [], "Destination": { - "PageNumber": 95, + "PageNumber": 99, "Type": 2, "Coordinates": { "Top": 0 @@ -9582,7 +10052,7 @@ "Title": "MRefNormalDelegate", "Children": [], "Destination": { - "PageNumber": 96, + "PageNumber": 100, "Type": 2, "Coordinates": { "Top": 0 @@ -9593,7 +10063,7 @@ "Title": "Tom", "Children": [], "Destination": { - "PageNumber": 97, + "PageNumber": 101, "Type": 2, "Coordinates": { "Top": 0 @@ -9604,7 +10074,7 @@ "Title": "TomFromBaseClass", "Children": [], "Destination": { - "PageNumber": 99, + "PageNumber": 103, "Type": 2, "Coordinates": { "Top": 0 @@ -9613,7 +10083,7 @@ } ], "Destination": { - "PageNumber": 66, + "PageNumber": 70, "Type": 2, "Coordinates": { "Top": 0 @@ -9627,7 +10097,7 @@ "Title": "ColorType", "Children": [], "Destination": { - "PageNumber": 101, + "PageNumber": 105, "Type": 2, "Coordinates": { "Top": 0 @@ -9636,7 +10106,7 @@ } ], "Destination": { - "PageNumber": 100, + "PageNumber": 104, "Type": 2, "Coordinates": { "Top": 0 @@ -9659,7 +10129,7 @@ "Title": "Pet Store API", "Children": [], "Destination": { - "PageNumber": 102, + "PageNumber": 106, "Type": 2, "Coordinates": { "Top": 0 @@ -9670,7 +10140,7 @@ "Title": "Contacts API", "Children": [], "Destination": { - "PageNumber": 117, + "PageNumber": 121, "Type": 2, "Coordinates": { "Top": 0 @@ -9679,7 +10149,7 @@ } ], "Destination": { - "PageNumber": 102, + "PageNumber": 106, "Type": 2, "Coordinates": { "Top": 0 diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.verified.json index 868eceba39b..d371d7bc14d 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/pdf/toc.verified.json @@ -251,6 +251,27 @@ "topicUid": "BuildFromProject.Inheritdoc.Issue8129", "type": "Struct" }, + { + "name": "Inheritdoc.Issue9736", + "href": "../api/BuildFromProject.Inheritdoc.Issue9736.html", + "topicHref": "../api/BuildFromProject.Inheritdoc.Issue9736.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736", + "type": "Class" + }, + { + "name": "Inheritdoc.Issue9736.IJsonApiOptions", + "href": "../api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicHref": "../api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions", + "type": "Interface" + }, + { + "name": "Inheritdoc.Issue9736.JsonApiOptions", + "href": "../api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicHref": "../api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html", + "topicUid": "BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions", + "type": "Class" + }, { "name": "Issue8725", "href": "../api/BuildFromProject.Issue8725.html", diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/restapi/toc.pdf.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/restapi/toc.pdf.verified.json index 0fba6d54726..a86660efee8 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/restapi/toc.pdf.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/restapi/toc.pdf.verified.json @@ -3,7 +3,7 @@ "Pages": [ { "Number": 1, - "Text": "Table of ContentsPet Store API2Contacts API17", + "Text": "Table of Contents\nPet Store API 2\nContacts API 17", "Links": [ { "Goto": { @@ -27,7 +27,7 @@ }, { "Number": 2, - "Text": "2 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Swagger PetstoreDescribe APIs in Pet StorepetDescription for pet tagAddPetAdd a new pet to the storeRequestParametersNameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples405Invalid inputNOTE: Add pet only when you needs.UpdatePetUpdate an existing petRequestParametersPOST /petPUT /pet", + "Text": "2 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nSwagger Petstore\nDescribe APIs in Pet Store\npet\nDescription for pet tag\nAddPet\nAdd a new pet to the store\nRequest\nParameters\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nNOTE: Add pet only when you needs.\nUpdatePet\nUpdate an existing pet\nRequest\nParameters\nPOST /pet\nPUT /pet", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_addPet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FaddPet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -78,7 +78,7 @@ }, { "Number": 3, - "Text": "3 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples400Invalid ID supplied404Pet not found405Validation exceptionFindPetsByStatusFinds Pets by statusMultiple status values can be provided with comma separated stringsRequestParametersNameTypeDefaultNotes*statusStatus values that need to be considered for filterResponsesStatus CodeTypeDescriptionSamples200Pet[]successful operation400Invalid status valueFindPetsByTagsGET /pet/findByStatus?status", + "Text": "3 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Pet not found\n405 Validation exception\nFindPetsByStatus\nFinds Pets by status\nMultiple status values can be provided with comma separated strings\nRequest\nParameters\nName Type Default Notes\n*status Status values that need to be considered for filter\nResponses\nStatus Code Type Description Samples\n200 Pet[] successful operation\n400 Invalid status value\nFindPetsByTags\nGET /pet/findByStatus?status", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_findPetsByStatus.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FfindPetsByStatus%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -138,7 +138,7 @@ }, { "Number": 4, - "Text": "4 / 27| Improve this Doc\uF1C5View Source\uF1C5Finds Pets by tagsMuliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 fortesting.RequestParametersNameTypeDefaultNotes*tagsTags to filter byResponsesStatus CodeTypeDescriptionSamples200Pet[]successful operation400Invalid tag valueDeletePetDeletes a petRequestParametersNameTypeDefaultNotesapi_key*petIdPet id to deleteResponsesGET /pet/findByTags?tagsDELETE /pet/{petId}", + "Text": "4 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nFinds Pets by tags\nMuliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for\ntesting.\nRequest\nParameters\nName Type Default Notes\n*tags Tags to filter by\nResponses\nStatus Code Type Description Samples\n200 Pet[] successful operation\n400 Invalid tag value\nDeletePet\nDeletes a pet\nRequest\nParameters\nName Type Default Notes\napi_key\n*petId Pet id to delete\nResponses\nGET /pet/findByTags?tags\nDELETE /pet/{petId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_deletePet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FdeletePet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -171,7 +171,7 @@ }, { "Number": 5, - "Text": "5 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples400Invalid ID supplied404Pet not foundGetPetByIdFind pet by IDReturns a single petRequestParametersNameTypeDefaultNotes*petIdID of pet to returnResponsesStatus CodeTypeDescriptionSamples200Petsuccessful operation400Invalid ID supplied404Pet not foundUpdatePetWithFormUpdates a pet in the store with form dataRequestGET /pet/{petId}POST /pet/{petId}", + "Text": "5 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Pet not found\nGetPetById\nFind pet by ID\nReturns a single pet\nRequest\nParameters\nName Type Default Notes\n*petId ID of pet to return\nResponses\nStatus Code Type Description Samples\n200 Pet successful operation\n400 Invalid ID supplied\n404 Pet not found\nUpdatePetWithForm\nUpdates a pet in the store with form data\nRequest\nGET /pet/{petId}\nPOST /pet/{petId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getPetById.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetPetById%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -222,7 +222,7 @@ }, { "Number": 6, - "Text": "6 / 27| Improve this Doc\uF1C5View Source\uF1C5ParametersNameTypeDefaultNotes*petIdID of pet that needs to be updatednameUpdated name of the petstatusUpdated status of the petResponsesStatus CodeTypeDescriptionSamples405Invalid inputUploadFileuploads an imageRequestParametersNameTypeDefaultNotes*petIdID of pet to updateadditionalMetadataAdditional data to pass to serverfilefile to uploadResponsesStatus CodeTypeDescriptionSamples200ApiResponsesuccessful operationPOST /pet/{petId}/uploadImage", + "Text": "6 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nParameters\nName Type Default Notes\n*petId ID of pet that needs to be updated\nname Updated name of the pet\nstatus Updated status of the pet\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nUploadFile\nuploads an image\nRequest\nParameters\nName Type Default Notes\n*petId ID of pet to update\nadditionalMetadata Additional data to pass to server\nfile file to upload\nResponses\nStatus Code Type Description Samples\n200 ApiResponse successful operation\nPOST /pet/{petId}/uploadImage", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_uploadFile.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FuploadFile%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -264,7 +264,7 @@ }, { "Number": 7, - "Text": "7 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5storeAccess to Petstore ordersAdditional description for store tagAddPetAdd a new pet to the storeRequestParametersNameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples405Invalid inputNOTE: Add pet only when you needs.GetInventoryReturns pet inventories by statusReturns a map of status codes to quantitiesRequestResponsesPOST /petGET /store/inventory", + "Text": "7 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nstore\nAccess to Petstore orders\nAdditional description for store tag\nAddPet\nAdd a new pet to the store\nRequest\nParameters\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nNOTE: Add pet only when you needs.\nGetInventory\nReturns pet inventories by status\nReturns a map of status codes to quantities\nRequest\nResponses\nPOST /pet\nGET /store/inventory", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_addPet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FaddPet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -315,7 +315,7 @@ }, { "Number": 8, - "Text": "8 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples200objectsuccessful operationPlaceOrderPlace an order for a petRequestParametersNameTypeDefaultNotes*bodyOrderorder placed for purchasing the petResponsesStatus CodeTypeDescriptionSamples200Ordersuccessful operation400Invalid OrderDeleteOrderDelete purchase order by IDFor valid response try integer IDs with positive integer value. Negative or non-integervalues will generate API errorsRequestParametersPOST /store/orderDELETE /store/order/{orderId}", + "Text": "8 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n200 object successful operation\nPlaceOrder\nPlace an order for a pet\nRequest\nParameters\nName Type Default Notes\n*body Order order placed for purchasing the pet\nResponses\nStatus Code Type Description Samples\n200 Order successful operation\n400 Invalid Order\nDeleteOrder\nDelete purchase order by ID\nFor valid response try integer IDs with positive integer value. Negative or non-integer\nvalues will generate API errors\nRequest\nParameters\nPOST /store/order\nDELETE /store/order/{orderId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_placeOrder.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FplaceOrder%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -375,7 +375,7 @@ }, { "Number": 9, - "Text": "9 / 27| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*orderIdID of the order that needs to be deletedResponsesStatus CodeTypeDescriptionSamples400Invalid ID supplied404Order not foundGetOrderByIdFind purchase order by IDFor valid response try integer IDs with value >= 1 and <= 10. Other values will generatedexceptionsRequestParametersNameTypeDefaultNotes*orderIdID of pet that needs to be fetchedResponsesStatus CodeTypeDescriptionSamples200Ordersuccessful operation400Invalid ID supplied404Order not foundGET /store/order/{orderId}", + "Text": "9 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*orderId ID of the order that needs to be deleted\nResponses\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Order not found\nGetOrderById\nFind purchase order by ID\nFor valid response try integer IDs with value >= 1 and <= 10. Other values will generated\nexceptions\nRequest\nParameters\nName Type Default Notes\n*orderId ID of pet that needs to be fetched\nResponses\nStatus Code Type Description Samples\n200 Order successful operation\n400 Invalid ID supplied\n404 Order not found\nGET /store/order/{orderId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getOrderById.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetOrderById%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -408,7 +408,7 @@ }, { "Number": 10, - "Text": "10 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5userOperations about userCreateUserCreate userThis can only be done by the logged in user.RequestParametersNameTypeDefaultNotes*bodyUserCreated user objectResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationCreateUsersWithArrayInputCreates list of users with given input arrayRequestParametersNameTypeDefaultNotes*bodyUser[]List of user objectResponsesPOST /userPOST /user/createWithArray", + "Text": "10 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nuser\nOperations about user\nCreateUser\nCreate user\nThis can only be done by the logged in user.\nRequest\nParameters\nName Type Default Notes\n*body User Created user object\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nCreateUsersWithArrayInput\nCreates list of users with given input array\nRequest\nParameters\nName Type Default Notes\n*body User[] List of user object\nResponses\nPOST /user\nPOST /user/createWithArray", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUser.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FcreateUser%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -468,7 +468,7 @@ }, { "Number": 11, - "Text": "11 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamplesdefaultsuccessful operationCreateUsersWithListInputCreates list of users with given input arrayRequestParametersNameTypeDefaultNotes*bodyUser[]List of user objectResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationLoginUserLogs user into the systemRequestParametersNameTypeDefaultNotes*usernameThe user name for login*passwordThe password for login in clear textPOST /user/createWithListGET /user/login?username&password", + "Text": "11 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\ndefault successful operation\nCreateUsersWithListInput\nCreates list of users with given input array\nRequest\nParameters\nName Type Default Notes\n*body User[] List of user object\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nLoginUser\nLogs user into the system\nRequest\nParameters\nName Type Default Notes\n*username The user name for login\n*password The password for login in clear text\nPOST /user/createWithList\nGET /user/login?username&password", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUsersWithListInput.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FcreateUsersWithListInput%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -519,7 +519,7 @@ }, { "Number": 12, - "Text": "12 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5ResponsesStatus CodeTypeDescriptionSamples200stringsuccessful operation400Invalid username/password suppliedLogoutUserLogs out current logged in user sessionRequestResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationDeleteUserDelete userThis can only be done by the logged in user.RequestParametersNameTypeDefaultNotes*usernameThe name that needs to be deletedResponsesGET /user/logoutDELETE /user/{username}", + "Text": "12 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nResponses\nStatus Code Type Description Samples\n200 string successful operation\n400 Invalid username/password supplied\nLogoutUser\nLogs out current logged in user session\nRequest\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nDeleteUser\nDelete user\nThis can only be done by the logged in user.\nRequest\nParameters\nName Type Default Notes\n*username The name that needs to be deleted\nResponses\nGET /user/logout\nDELETE /user/{username}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_logoutUser.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FlogoutUser%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -561,7 +561,7 @@ }, { "Number": 13, - "Text": "13 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples400Invalid username supplied404User not foundGetUserByNameGet user by user nameRequestParametersNameTypeDefaultNotes*usernameThe name that needs to be fetched. Use user1 for testing.ResponsesStatus CodeTypeDescriptionSamples200Usersuccessful operation400Invalid username supplied404User not foundOther APIsUpdateUserUpdated userThis can only be done by the logged in user.RequestGET /user/{username}", + "Text": "13 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n400 Invalid username supplied\n404 User not found\nGetUserByName\nGet user by user name\nRequest\nParameters\nName Type Default Notes\n*username The name that needs to be fetched. Use user1 for testing.\nResponses\nStatus Code Type Description Samples\n200 User successful operation\n400 Invalid username supplied\n404 User not found\nOther APIs\nUpdateUser\nUpdated user\nThis can only be done by the logged in user.\nRequest\nGET /user/{username}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getUserByName.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetUserByName%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -612,7 +612,7 @@ }, { "Number": 14, - "Text": "14 / 27ParametersNameTypeDefaultNotes*usernamename that need to be updated*bodyUserUpdated user objectResponsesStatus CodeTypeDescriptionSamples400Invalid user supplied404User not foundDefinitionsPetNameTypeNotescategoryCategory[]idinteger (int64)namestringphotoUrlsarraystatusstringpet status in the storetagsTag[]CategoryPUT /user/{username}", + "Text": "14 / 27\nParameters\nName Type Default Notes\n*username name that need to be updated\n*body User Updated user object\nResponses\nStatus Code Type Description Samples\n400 Invalid user supplied\n404 User not found\nDefinitions\nPet\nName Type Notes\ncategory Category[]\nid integer (int64)\nname string\nphotoUrls array\nstatus string pet status in the store\ntags Tag[]\nCategory\nPUT /user/{username}", "Links": [ { "Goto": { @@ -645,12 +645,12 @@ }, { "Number": 15, - "Text": "15 / 27NameTypeNotesidinteger (int64)namestringTagNameTypeNotesidinteger (int64)namestringApiResponseNameTypeNotescodeinteger (int32)messagestringtypestringOrderNameTypeNotescompletebooleanidinteger (int64)petIdinteger (int64)quantityinteger (int32)shipDatestring (date-time)statusstringOrder StatusUser", + "Text": "15 / 27\nName Type Notes\nid integer (int64)\nname string\nTag\nName Type Notes\nid integer (int64)\nname string\nApiResponse\nName Type Notes\ncode integer (int32)\nmessage string\ntype string\nOrder\nName Type Notes\ncomplete boolean\nid integer (int64)\npetId integer (int64)\nquantity integer (int32)\nshipDate string (date-time)\nstatus string Order Status\nUser", "Links": [] }, { "Number": 16, - "Text": "16 / 27NameTypeNotesemailstringfirstNamestringidinteger (int64)lastNamestringpasswordstringphonestringuserStatusinteger (int32)User StatususernamestringSee AlsosSee other REST APIs:Contacts API", + "Text": "16 / 27\nName Type Notes\nemail string\nfirstName string\nid integer (int64)\nlastName string\npassword string\nphone string\nuserStatus integer (int32) User Status\nusername string\nSee Alsos\nSee other REST APIs:\nContacts API", "Links": [ { "Goto": { @@ -665,7 +665,7 @@ }, { "Number": 17, - "Text": "17 / 27| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5ContactsGet ContactsYou can get a collection of contacts from your tenant.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*api-version1.6The version of the Graph API to target. Beginning withversion 1.5, the api-version string is represented inmajor.minor format. Prior releases were represented as datestrings: '2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess. Theresults arereturned intheresponsebody.Mime type: application/jsonGet Contact By IdGet a contact by using the object ID.Required scope: Contacts.Read or Contacts.WriteGET /contacts?api-version{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"value\": [ { \"odata.type\": \"Microsoft.DirectoryServices.Contac \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9 \"deletionTimestamp\": null,", + "Text": "17 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nContacts\nGet Contacts\nYou can get a collection of contacts from your tenant.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*api-\nversion\n1.6 The version of the Graph API to target. Beginning with\nversion 1.5, the api-version string is represented in\nmajor.minor format. Prior releases were represented as date\nstrings: '2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess. The\nresults are\nreturned in\nthe\nresponse\nbody.\nMime type: application/json\nGet Contact By Id\nGet a contact by using the object ID.\nRequired scope: Contacts.Read or Contacts.Write\nGET /contacts?api-version\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"value\": [\n{ \n\"odata.type\": \"Microsoft.DirectoryServices.Contac\n\"objectType\": \"Contact\",\n\"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\n\"deletionTimestamp\": null,", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contacts.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contacts%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -707,7 +707,7 @@ }, { "Number": 18, - "Text": "18 / 27| Improve this Doc\uF1C5View Source\uF1C5RequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6Specifies the version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess. Thecontact isreturned intheresponsebody.Mime type: application/jsonUpdate ContactChange a contact's properties.Required scope: Contacts.WriteRequestGET /contacts/{object_id}?api-version{ \"odata.metadata\": \"https://graph.windows.net/graphdir1.onmicrosoft.com/$m \"odata.type\": \"Microsoft.DirectoryServices.Contact\", \"objectType\": \"Contact\", \"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\", \"deletionTimestamp\": null, \"city\": null, \"companyName\": null,", + "Text": "18 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 Specifies the version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess. The\ncontact is\nreturned in\nthe\nresponse\nbody.\nMime type: application/json\nUpdate Contact\nChange a contact's properties.\nRequired scope: Contacts.Write\nRequest\nGET /contacts/{object_id}?api-version\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/graphdir1.onmicrosoft.com/$m\n\"odata.type\": \"Microsoft.DirectoryServices.Contact\",\n\"objectType\": \"Contact\",\n\"objectId\": \"31944231-fd52-4a7f-b32e-7902a01fddf9\",\n\"deletionTimestamp\": null,\n\"city\": null,\n\"companyName\": null,", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_update_contact.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fupdate%20contact%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -731,7 +731,7 @@ }, { "Number": 19, - "Text": "19 / 27| Improve this Doc\uF1C5View Source\uF1C5ParametersNameTypeDefaultNotes*object_id7163f3b8-70c9-43d2-b9e1-4467ddaf087aThe object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-versionstring is represented in major.minor format.Prior releases were represented as datestrings: '2013-11-08' and '2013-04-05'.Required.bodyparamcontactthis is request body, not real parameterResponsesStatusCodeTypeDescriptionSamples204No Content. Indicates success. No response body isreturned.Delete ContactDelete a contact.Required scope: Contacts.WriteRequestParametersPATCH /contacts/{object_id}?api-versionDELETE /contacts/{object_id}[?api-version]", + "Text": "19 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nParameters\nName Type Default Notes\n*object_id 7163f3b8-70c9-\n43d2-b9e1-\n4467ddaf087a\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version\nstring is represented in major.minor format.\nPrior releases were represented as date\nstrings: '2013-11-08' and '2013-04-05'.\nRequired.\nbodyparam contact this is request body, not real parameter\nResponses\nStatus\nCode Type Description Samples\n204 No Content. Indicates success. No response body is\nreturned.\nDelete Contact\nDelete a contact.\nRequired scope: Contacts.Write\nRequest\nParameters\nPATCH /contacts/{object_id}?api-version\nDELETE /contacts/{object_id}[?api-version]", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_delete_contact.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fdelete%20contact%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -764,7 +764,7 @@ }, { "Number": 20, - "Text": "20 / 27| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*object_id7163f3b8-70c9-43d2-b9e1-4467ddaf087aThe object ID (GUID) of the target contact.api-version1.6Specifies the version of the Graph API to target.Beginning with version 1.5, the api-versionstring is represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatus CodeTypeDescriptionSamples204No Content. Indicates success.Get Contact Manager LinkGet a link to the contact's manager.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.GET /contacts/{object_id}/$links/manager?api-version", + "Text": "20 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*object_id 7163f3b8-70c9-\n43d2-b9e1-\n4467ddaf087a\nThe object ID (GUID) of the target contact.\napi-\nversion\n1.6 Specifies the version of the Graph API to target.\nBeginning with version 1.5, the api-version\nstring is represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus Code Type Description Samples\n204 No Content. Indicates success.\nGet Contact Manager Link\nGet a link to the contact's manager.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nGET /contacts/{object_id}/$links/manager?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contact_manager_link.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contact%20manager%20link%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -788,7 +788,7 @@ }, { "Number": 21, - "Text": "21 / 27| Improve this Doc\uF1C5View Source\uF1C5ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess. Alink to thecontact'smanager isreturned.Mime type: application/json404Not Found.Therequestedresourcewas notfound. Thiscan occur ifthe managerproperty isnot currentlyset for thespecifiedcontact. Itcan alsohave othercauses, forexample, abad domain.A code andassociatedmessage isreturnedwith theerror.Mime type: application/jsonUpdate Contact Manager{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"url\": \"https://graph.windows.net/myorganization/dire4c4a-93b2-03f065fabd93/Microsoft.WindowsAzure.ActiveDir}{ \"odata.error\": { \"code\": \"Request_ResourceNotFound\", \"message\": { \"lang\": \"en\", \"value\": \"Resource not found for the segment 'man } }}", + "Text": "21 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess. A\nlink to the\ncontact's\nmanager is\nreturned.\nMime type: application/json\n404 Not Found.\nThe\nrequested\nresource\nwas not\nfound. This\ncan occur if\nthe manager\nproperty is\nnot currently\nset for the\nspecified\ncontact. It\ncan also\nhave other\ncauses, for\nexample, a\nbad domain.\nA code and\nassociated\nmessage is\nreturned\nwith the\nerror.\nMime type: application/json\nUpdate Contact Manager\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"url\": \"https://graph.windows.net/myorganization/dire\n4c4a-93b2-03f065fabd93/Microsoft.WindowsAzure.ActiveDir\n}\n{ \n\"odata.error\": {\n\"code\": \"Request_ResourceNotFound\",\n\"message\": {\n\"lang\": \"en\",\n\"value\": \"Resource not found for the segment 'man\n} \n}\n}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_update_contact_manager.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fupdate%20contact%20manager%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -812,7 +812,7 @@ }, { "Number": 22, - "Text": "22 / 27| Improve this Doc\uF1C5View Source\uF1C5Update the contact's managerRequired scope: Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-versionstring is represented in major.minor format.Prior releases were represented as datestrings: '2013-11-08' and '2013-04-05'.Required.*bodyparamThe request body contains a single propertythat specifies the URL of the user or contact toadd as manager.ResponsesStatusCodeTypeDescriptionSamples204No Content. Indicates success. No response body isreturned.Delete Contact Manager By IdDelete the contact's manager.Required scope: Contacts.WriteRequestPUT /contacts/{object_id}/$links/manager?api-version", + "Text": "22 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nUpdate the contact's manager\nRequired scope: Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-version 1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version\nstring is represented in major.minor format.\nPrior releases were represented as date\nstrings: '2013-11-08' and '2013-04-05'.\nRequired.\n*bodyparam The request body contains a single property\nthat specifies the URL of the user or contact to\nadd as manager.\nResponses\nStatus\nCode Type Description Samples\n204 No Content. Indicates success. No response body is\nreturned.\nDelete Contact Manager By Id\nDelete the contact's manager.\nRequired scope: Contacts.Write\nRequest\nPUT /contacts/{object_id}/$links/manager?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_delete_contact_manager_by_id.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fdelete%20contact%20manager%20by%20id%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -836,7 +836,7 @@ }, { "Number": 23, - "Text": "23 / 27| Improve this Doc\uF1C5View Source\uF1C5ParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples204No Content. Indicates success. N response body isreturned.Get Contact Direct Reports LinksGet a links to the contact's direct reports.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.DELETE /contacts/{object_id}/$links/manager?api-versionGET /contacts/{object_id}/$links/directReports?api-version", + "Text": "23 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n204 No Content. Indicates success. N response body is\nreturned.\nGet Contact Direct Reports Links\nGet a links to the contact's direct reports.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\nDELETE /contacts/{object_id}/$links/manager?api-version\nGET /contacts/{object_id}/$links/directReports?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contact_direct_reports_links.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contact%20direct%20reports%20links%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -860,7 +860,7 @@ }, { "Number": 24, - "Text": "24 / 27| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess.One or moredirectreports arereturned.Mime type: application/jsonGet Contact MemberOf LinksGet a links to the contact's direct group and directory role memberships.Required scope: Contacts.Read or Contacts.WriteRequestParametersNameTypeDefaultNotes*object_id31944231-fd52-4a7f-b32e-7902a01fddf9The object ID (GUID) of the target contact.{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/4e26-b24f-c830606ef41c/Microsoft.DirectoryServices.Cont } ]GET /contacts/{object_id}/$links/memberOf?api-version", + "Text": "24 / 27\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess.\nOne or more\ndirect\nreports are\nreturned.\nMime type: application/json\nGet Contact MemberOf Links\nGet a links to the contact's direct group and directory role memberships.\nRequired scope: Contacts.Read or Contacts.Write\nRequest\nParameters\nName Type Default Notes\n*object_id 31944231-fd52-\n4a7f-b32e-\n7902a01fddf9\nThe object ID (GUID) of the target contact.\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"value\": [\n{ \n\"url\": \"https://graph.windows.net/myorganization/\n4e26-b24f-c830606ef41c/Microsoft.DirectoryServices.Cont\n} \n]\nGET /contacts/{object_id}/$links/memberOf?api-version", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=graph_windows_net_myorganization_Contacts_1_6_get_contact_memberOf_links.md&value=---%0Auid%3A%20graph.windows.net%2Fmyorganization%2FContacts%2F1.6%2Fget%20contact%20memberOf%20links%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -884,12 +884,12 @@ }, { "Number": 25, - "Text": "25 / 27NameTypeDefaultNotes*api-version1.6The version of the Graph API to target.Beginning with version 1.5, the api-version stringis represented in major.minor format. Priorreleases were represented as date strings:'2013-11-08' and '2013-04-05'. Required.ResponsesStatusCodeTypeDescriptionSamples200OK.Indicatessuccess.One or moregroupsand/ordirectoryroles arereturned.Mime type: application/jsonDefinitionsContactNameTypeNotesobjectTypestringobjectIdstringdeletionTimestampstring (date-time)citystringcountrystringdepartmentstring{ \"odata.metadata\": \"https://graph.windows.net/myorganization/$metadata#dir \"value\": [ { \"url\": \"https://graph.windows.net/myorganization/b942-47c9-a10e-a4bee353ce60/Microsoft.DirectoryServices } ]", + "Text": "25 / 27\nName Type Default Notes\n*api-\nversion\n1.6 The version of the Graph API to target.\nBeginning with version 1.5, the api-version string\nis represented in major.minor format. Prior\nreleases were represented as date strings:\n'2013-11-08' and '2013-04-05'. Required.\nResponses\nStatus\nCode Type Description Samples\n200 OK.\nIndicates\nsuccess.\nOne or more\ngroups\nand/or\ndirectory\nroles are\nreturned.\nMime type: application/json\nDefinitions\nContact\nName Type Notes\nobjectType string\nobjectId string\ndeletionTimestamp string (date-time)\ncity string\ncountry string\ndepartment string\n{ \n\"odata.metadata\":\n\"https://graph.windows.net/myorganization/$metadata#dir\n\"value\": [\n{ \n\"url\": \"https://graph.windows.net/myorganization/\nb942-47c9-a10e-a4bee353ce60/Microsoft.DirectoryServices\n} \n]", "Links": [] }, { "Number": 26, - "Text": "26 / 27NameTypeNotesdirSyncEnabledbooleandisplayNamestringfacsimileTelephoneNumberstringgivenNamestringjobTitlestringlastDirSyncTimestring (date-time)mailstringmailNicknamestringmobilestringphysicalDeliveryOfficeNamestringpostalCodestringprovisioningErrorsProvisioningError[]proxyAddressesarraysipProxyAddressstringstatestringstreetAddressstringsurnamestringtelephoneNumberstringthumbnailPhotostringProvisioningErrorNameTypeNoteserrorDetailstring", + "Text": "26 / 27\nName Type Notes\ndirSyncEnabled boolean\ndisplayName string\nfacsimileTelephoneNumber string\ngivenName string\njobTitle string\nlastDirSyncTime string (date-time)\nmail string\nmailNickname string\nmobile string\nphysicalDeliveryOfficeName string\npostalCode string\nprovisioningErrors ProvisioningError[]\nproxyAddresses array\nsipProxyAddress string\nstate string\nstreetAddress string\nsurname string\ntelephoneNumber string\nthumbnailPhoto string\nProvisioningError\nName Type Notes\nerrorDetail string", "Links": [ { "Goto": { @@ -913,7 +913,7 @@ }, { "Number": 27, - "Text": "27 / 27NameTypeNotesresolvedbooleanserviceInstancestringtimestampstring (date-time)", + "Text": "27 / 27\nName Type Notes\nresolved boolean\nserviceInstance string\ntimestamp string (date-time)", "Links": [] } ], diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/toc.pdf.verified.json b/test/docfx.Snapshot.Tests/SamplesTest.Seed/toc.pdf.verified.json index 5bcf9db7018..e871f260716 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/toc.pdf.verified.json +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/toc.pdf.verified.json @@ -3,7 +3,7 @@ "Pages": [ { "Number": 1, - "Text": "Table of ContentsHome2Articles3API Documentation.NET API5.NET API (markdown)6.NET API (apipage)7REST API8", + "Text": "Table of Contents\nHome 2\nArticles 3\nAPI Documentation\n.NET API 5\n.NET API (markdown) 6\n.NET API (apipage) 7\nREST API 8", "Links": [ { "Goto": { @@ -63,7 +63,7 @@ }, { "Number": 2, - "Text": "2 / 22docfx-seedDescriptionThis is a sample docfx documentation project. It contains .NET source code and markdownfiles. docfx.json is the configuration file for running docfx. docfx will generate a staticwebsite as similar to http://docascode.github.io/docfx-seed.How to runUnder WindowsDownload and unzip docfx.zip to run docfx.exe directly!Run docfx under current repo! Website will be generated under _site folder.Run any web hosting tool to host _site folder, e.g. docfx serve _site.Cross platform and use dnxAs a prerequisite, you will need to install DNVM and DNX. ###Quick Startdnvm upgrade to get the latest dnvm.Add feed https://www.myget.org/F/aspnetrelease/api/v2/ to Nuget.configFor Windows, the nuget config file is %AppData%\\NuGet\\NuGet.config.For Linux/OSX, the nuget config file is ~/.config/NuGet/NuGet.config.dnu commands install docfx to install docfx as a commandRun docfx under current repo! Website will be generated under _site folder.Run any web hosting tool to host _site folder, e.g. docfx serve _site.Further information about docfxdocfx is a tool to generate documentation towards .NET source code and markdown files.Please refer to docfx to get start. The docfx website itself is generated by docfx!", + "Text": "2 / 22\ndocfx-seed\nDescription\nThis is a sample docfx documentation project. It contains .NET source code and markdown\nfiles. docfx.json is the configuration file for running docfx. docfx will generate a static\nwebsite as similar to http://docascode.github.io/docfx-seed.\nHow to run\nUnder Windows\nDownload and unzip docfx.zip to run docfx.exe directly!\nRun docfx under current repo! Website will be generated under _site folder.\nRun any web hosting tool to host _site folder, e.g. docfx serve _site.\nCross platform and use dnx\nAs a prerequisite, you will need to install DNVM and DNX. ###Quick Start\ndnvm upgrade to get the latest dnvm.\nAdd feed https://www.myget.org/F/aspnetrelease/api/v2/ to Nuget.config\nFor Windows, the nuget config file is %AppData%\\NuGet\\NuGet.config.\nFor Linux/OSX, the nuget config file is ~/.config/NuGet/NuGet.config.\ndnu commands install docfx to install docfx as a command\nRun docfx under current repo! Website will be generated under _site folder.\nRun any web hosting tool to host _site folder, e.g. docfx serve _site.\nFurther information about docfx\ndocfx is a tool to generate documentation towards .NET source code and markdown files.\nPlease refer to docfx to get start. The docfx website itself is generated by docfx!", "Links": [ { "Uri": "http://docascode.github.io/docfx-seed/index.html" @@ -88,7 +88,7 @@ { "Number": 3, "NumberOfImages": 1, - "Text": "3 / 22Getting Started with docfxGetting StartedThis is a seed.", + "Text": "3 / 22\nGetting Started with docfx\nGetting Started\nThis is a seed.", "Links": [ { "Uri": "" @@ -100,12 +100,12 @@ }, { "Number": 4, - "Text": "4 / 22docfx is an API documentation generator for .NET, currently support C# and VB. It has theability to extract triple slash comments out from your source code. What's more, it hassyntax to link additional files to API to add additional remarks. docfx will scan your sourcecode and your additional conceptual files and generate a complete HTML documentationwebsite for you. docfx provides the flexibility for you to customize the website throughtemplates. We currently have several embedded templates, including websites containingpure static html pages and also website managed by AngularJS.Click \"View Source\" for an API to route to the source code in GitHub (your API must bepushed to GitHub)docfx provide DNX version for cross platform use.docfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nugetpackage is now in pre-release version. You can also build your own with source codeand use it locally.We support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is100% compatible with Github Flavored Markdown(GFM) and add several new featuresincluding file inclusion, cross reference, and yaml header.", + "Text": "4 / 22\ndocfx is an API documentation generator for .NET, currently support C# and VB. It has the\nability to extract triple slash comments out from your source code. What's more, it has\nsyntax to link additional files to API to add additional remarks. docfx will scan your source\ncode and your additional conceptual files and generate a complete HTML documentation\nwebsite for you. docfx provides the flexibility for you to customize the website through\ntemplates. We currently have several embedded templates, including websites containing\npure static html pages and also website managed by AngularJS.\nClick \"View Source\" for an API to route to the source code in GitHub (your API must be\npushed to GitHub)\ndocfx provide DNX version for cross platform use.\ndocfx can be used within Visual Studio seamlessly. NOTE offical docfx.msbuild nuget\npackage is now in pre-release version. You can also build your own with source code\nand use it locally.\nWe support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM is\n100% compatible with Github Flavored Markdown(GFM) and add several new features\nincluding file inclusion, cross reference, and yaml header.", "Links": [] }, { "Number": 5, - "Text": "5 / 22ClassesClass1This is a test class.StructsIssue5432Namespace BuildFromAssembly", + "Text": "5 / 22\nClasses\nClass1\nThis is a test class.\nStructs\nIssue5432\nNamespace BuildFromAssembly", "Links": [ { "Uri": "" @@ -117,7 +117,7 @@ }, { "Number": 6, - "Text": "6 / 22Namespace BuildFromAssemblyClassesClass1This is a test class.StructsIssue5432", + "Text": "6 / 22\nNamespace BuildFromAssembly\nClasses\nClass1\nThis is a test class.\nStructs\nIssue5432", "Links": [ { "Uri": "" @@ -129,7 +129,7 @@ }, { "Number": 7, - "Text": "7 / 22ClassesClass1This is a test class.StructsIssue5432Namespace BuildFromAssembly", + "Text": "7 / 22\nClasses\nClass1\nThis is a test class.\nStructs\nIssue5432\nNamespace BuildFromAssembly", "Links": [ { "Uri": "" @@ -141,7 +141,7 @@ }, { "Number": 8, - "Text": "8 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Swagger PetstoreDescribe APIs in Pet StorepetDescription for pet tagAddPetAdd a new pet to the storeRequestParametersNameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples405Invalid inputNOTE: Add pet only when you needs.UpdatePetUpdate an existing petRequestParametersPOST /petPUT /pet", + "Text": "8 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nSwagger Petstore\nDescribe APIs in Pet Store\npet\nDescription for pet tag\nAddPet\nAdd a new pet to the store\nRequest\nParameters\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nNOTE: Add pet only when you needs.\nUpdatePet\nUpdate an existing pet\nRequest\nParameters\nPOST /pet\nPUT /pet", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_addPet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FaddPet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -192,7 +192,7 @@ }, { "Number": 9, - "Text": "9 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples400Invalid ID supplied404Pet not found405Validation exceptionFindPetsByStatusFinds Pets by statusMultiple status values can be provided with comma separated stringsRequestParametersNameTypeDefaultNotes*statusStatus values that need to be considered for filterResponsesStatus CodeTypeDescriptionSamples200Pet[]successful operation400Invalid status valueFindPetsByTagsGET /pet/findByStatus?status", + "Text": "9 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Pet not found\n405 Validation exception\nFindPetsByStatus\nFinds Pets by status\nMultiple status values can be provided with comma separated strings\nRequest\nParameters\nName Type Default Notes\n*status Status values that need to be considered for filter\nResponses\nStatus Code Type Description Samples\n200 Pet[] successful operation\n400 Invalid status value\nFindPetsByTags\nGET /pet/findByStatus?status", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_findPetsByStatus.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FfindPetsByStatus%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -252,7 +252,7 @@ }, { "Number": 10, - "Text": "10 / 22| Improve this Doc\uF1C5View Source\uF1C5Finds Pets by tagsMuliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 fortesting.RequestParametersNameTypeDefaultNotes*tagsTags to filter byResponsesStatus CodeTypeDescriptionSamples200Pet[]successful operation400Invalid tag valueDeletePetDeletes a petRequestParametersNameTypeDefaultNotesapi_key*petIdPet id to deleteResponsesGET /pet/findByTags?tagsDELETE /pet/{petId}", + "Text": "10 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\nFinds Pets by tags\nMuliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for\ntesting.\nRequest\nParameters\nName Type Default Notes\n*tags Tags to filter by\nResponses\nStatus Code Type Description Samples\n200 Pet[] successful operation\n400 Invalid tag value\nDeletePet\nDeletes a pet\nRequest\nParameters\nName Type Default Notes\napi_key\n*petId Pet id to delete\nResponses\nGET /pet/findByTags?tags\nDELETE /pet/{petId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_deletePet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FdeletePet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -285,7 +285,7 @@ }, { "Number": 11, - "Text": "11 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples400Invalid ID supplied404Pet not foundGetPetByIdFind pet by IDReturns a single petRequestParametersNameTypeDefaultNotes*petIdID of pet to returnResponsesStatus CodeTypeDescriptionSamples200Petsuccessful operation400Invalid ID supplied404Pet not foundUpdatePetWithFormUpdates a pet in the store with form dataRequestGET /pet/{petId}POST /pet/{petId}", + "Text": "11 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Pet not found\nGetPetById\nFind pet by ID\nReturns a single pet\nRequest\nParameters\nName Type Default Notes\n*petId ID of pet to return\nResponses\nStatus Code Type Description Samples\n200 Pet successful operation\n400 Invalid ID supplied\n404 Pet not found\nUpdatePetWithForm\nUpdates a pet in the store with form data\nRequest\nGET /pet/{petId}\nPOST /pet/{petId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getPetById.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetPetById%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -336,7 +336,7 @@ }, { "Number": 12, - "Text": "12 / 22| Improve this Doc\uF1C5View Source\uF1C5ParametersNameTypeDefaultNotes*petIdID of pet that needs to be updatednameUpdated name of the petstatusUpdated status of the petResponsesStatus CodeTypeDescriptionSamples405Invalid inputUploadFileuploads an imageRequestParametersNameTypeDefaultNotes*petIdID of pet to updateadditionalMetadataAdditional data to pass to serverfilefile to uploadResponsesStatus CodeTypeDescriptionSamples200ApiResponsesuccessful operationPOST /pet/{petId}/uploadImage", + "Text": "12 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\nParameters\nName Type Default Notes\n*petId ID of pet that needs to be updated\nname Updated name of the pet\nstatus Updated status of the pet\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nUploadFile\nuploads an image\nRequest\nParameters\nName Type Default Notes\n*petId ID of pet to update\nadditionalMetadata Additional data to pass to server\nfile file to upload\nResponses\nStatus Code Type Description Samples\n200 ApiResponse successful operation\nPOST /pet/{petId}/uploadImage", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_uploadFile.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FuploadFile%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -378,7 +378,7 @@ }, { "Number": 13, - "Text": "13 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5storeAccess to Petstore ordersAdditional description for store tagAddPetAdd a new pet to the storeRequestParametersNameTypeDefaultNotes*bodyPetPet object that needs to be added to the storeResponsesStatus CodeTypeDescriptionSamples405Invalid inputNOTE: Add pet only when you needs.GetInventoryReturns pet inventories by statusReturns a map of status codes to quantitiesRequestResponsesPOST /petGET /store/inventory", + "Text": "13 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nstore\nAccess to Petstore orders\nAdditional description for store tag\nAddPet\nAdd a new pet to the store\nRequest\nParameters\nName Type Default Notes\n*body Pet Pet object that needs to be added to the store\nResponses\nStatus Code Type Description Samples\n405 Invalid input\nNOTE: Add pet only when you needs.\nGetInventory\nReturns pet inventories by status\nReturns a map of status codes to quantities\nRequest\nResponses\nPOST /pet\nGET /store/inventory", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_addPet.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FaddPet%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -429,7 +429,7 @@ }, { "Number": 14, - "Text": "14 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples200objectsuccessful operationPlaceOrderPlace an order for a petRequestParametersNameTypeDefaultNotes*bodyOrderorder placed for purchasing the petResponsesStatus CodeTypeDescriptionSamples200Ordersuccessful operation400Invalid OrderDeleteOrderDelete purchase order by IDFor valid response try integer IDs with positive integer value. Negative or non-integervalues will generate API errorsRequestParametersPOST /store/orderDELETE /store/order/{orderId}", + "Text": "14 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n200 object successful operation\nPlaceOrder\nPlace an order for a pet\nRequest\nParameters\nName Type Default Notes\n*body Order order placed for purchasing the pet\nResponses\nStatus Code Type Description Samples\n200 Order successful operation\n400 Invalid Order\nDeleteOrder\nDelete purchase order by ID\nFor valid response try integer IDs with positive integer value. Negative or non-integer\nvalues will generate API errors\nRequest\nParameters\nPOST /store/order\nDELETE /store/order/{orderId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_placeOrder.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FplaceOrder%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -489,7 +489,7 @@ }, { "Number": 15, - "Text": "15 / 22| Improve this Doc\uF1C5View Source\uF1C5NameTypeDefaultNotes*orderIdID of the order that needs to be deletedResponsesStatus CodeTypeDescriptionSamples400Invalid ID supplied404Order not foundGetOrderByIdFind purchase order by IDFor valid response try integer IDs with value >= 1 and <= 10. Other values will generatedexceptionsRequestParametersNameTypeDefaultNotes*orderIdID of pet that needs to be fetchedResponsesStatus CodeTypeDescriptionSamples200Ordersuccessful operation400Invalid ID supplied404Order not foundGET /store/order/{orderId}", + "Text": "15 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\nName Type Default Notes\n*orderId ID of the order that needs to be deleted\nResponses\nStatus Code Type Description Samples\n400 Invalid ID supplied\n404 Order not found\nGetOrderById\nFind purchase order by ID\nFor valid response try integer IDs with value >= 1 and <= 10. Other values will generated\nexceptions\nRequest\nParameters\nName Type Default Notes\n*orderId ID of pet that needs to be fetched\nResponses\nStatus Code Type Description Samples\n200 Order successful operation\n400 Invalid ID supplied\n404 Order not found\nGET /store/order/{orderId}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getOrderById.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetOrderById%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -522,7 +522,7 @@ }, { "Number": 16, - "Text": "16 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5userOperations about userCreateUserCreate userThis can only be done by the logged in user.RequestParametersNameTypeDefaultNotes*bodyUserCreated user objectResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationCreateUsersWithArrayInputCreates list of users with given input arrayRequestParametersNameTypeDefaultNotes*bodyUser[]List of user objectResponsesPOST /userPOST /user/createWithArray", + "Text": "16 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nuser\nOperations about user\nCreateUser\nCreate user\nThis can only be done by the logged in user.\nRequest\nParameters\nName Type Default Notes\n*body User Created user object\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nCreateUsersWithArrayInput\nCreates list of users with given input array\nRequest\nParameters\nName Type Default Notes\n*body User[] List of user object\nResponses\nPOST /user\nPOST /user/createWithArray", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUser.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FcreateUser%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -582,7 +582,7 @@ }, { "Number": 17, - "Text": "17 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamplesdefaultsuccessful operationCreateUsersWithListInputCreates list of users with given input arrayRequestParametersNameTypeDefaultNotes*bodyUser[]List of user objectResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationLoginUserLogs user into the systemRequestParametersNameTypeDefaultNotes*usernameThe user name for login*passwordThe password for login in clear textPOST /user/createWithListGET /user/login?username&password", + "Text": "17 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\ndefault successful operation\nCreateUsersWithListInput\nCreates list of users with given input array\nRequest\nParameters\nName Type Default Notes\n*body User[] List of user object\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nLoginUser\nLogs user into the system\nRequest\nParameters\nName Type Default Notes\n*username The user name for login\n*password The password for login in clear text\nPOST /user/createWithList\nGET /user/login?username&password", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_createUsersWithListInput.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FcreateUsersWithListInput%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -633,7 +633,7 @@ }, { "Number": 18, - "Text": "18 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5ResponsesStatus CodeTypeDescriptionSamples200stringsuccessful operation400Invalid username/password suppliedLogoutUserLogs out current logged in user sessionRequestResponsesStatus CodeTypeDescriptionSamplesdefaultsuccessful operationDeleteUserDelete userThis can only be done by the logged in user.RequestParametersNameTypeDefaultNotes*usernameThe name that needs to be deletedResponsesGET /user/logoutDELETE /user/{username}", + "Text": "18 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nResponses\nStatus Code Type Description Samples\n200 string successful operation\n400 Invalid username/password supplied\nLogoutUser\nLogs out current logged in user session\nRequest\nResponses\nStatus Code Type Description Samples\ndefault successful operation\nDeleteUser\nDelete user\nThis can only be done by the logged in user.\nRequest\nParameters\nName Type Default Notes\n*username The name that needs to be deleted\nResponses\nGET /user/logout\nDELETE /user/{username}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_logoutUser.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FlogoutUser%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -675,7 +675,7 @@ }, { "Number": 19, - "Text": "19 / 22| Improve this Doc\uF1C5View Source\uF1C5| Improve this Doc\uF1C5View Source\uF1C5Status CodeTypeDescriptionSamples400Invalid username supplied404User not foundGetUserByNameGet user by user nameRequestParametersNameTypeDefaultNotes*usernameThe name that needs to be fetched. Use user1 for testing.ResponsesStatus CodeTypeDescriptionSamples200Usersuccessful operation400Invalid username supplied404User not foundOther APIsUpdateUserUpdated userThis can only be done by the logged in user.RequestGET /user/{username}", + "Text": "19 / 22\n| Improve this Doc\uF1C5View Source\uF1C5\n| Improve this Doc\uF1C5View Source\uF1C5\nStatus Code Type Description Samples\n400 Invalid username supplied\n404 User not found\nGetUserByName\nGet user by user name\nRequest\nParameters\nName Type Default Notes\n*username The name that needs to be fetched. Use user1 for testing.\nResponses\nStatus Code Type Description Samples\n200 User successful operation\n400 Invalid username supplied\n404 User not found\nOther APIs\nUpdateUser\nUpdated user\nThis can only be done by the logged in user.\nRequest\nGET /user/{username}", "Links": [ { "Uri": "https://github.com/dotnet/docfx/new/main/apiSpec/new?filename=petstore_swagger_io_v2_Swagger_Petstore_1_0_0_getUserByName.md&value=---%0Auid%3A%20petstore.swagger.io%2Fv2%2FSwagger%20Petstore%2F1.0.0%2FgetUserByName%0Asummary%3A%20%27*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax%27%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A" @@ -726,7 +726,7 @@ }, { "Number": 20, - "Text": "20 / 22ParametersNameTypeDefaultNotes*usernamename that need to be updated*bodyUserUpdated user objectResponsesStatus CodeTypeDescriptionSamples400Invalid user supplied404User not foundDefinitionsPetNameTypeNotescategoryCategory[]idinteger (int64)namestringphotoUrlsarraystatusstringpet status in the storetagsTag[]CategoryPUT /user/{username}", + "Text": "20 / 22\nParameters\nName Type Default Notes\n*username name that need to be updated\n*body User Updated user object\nResponses\nStatus Code Type Description Samples\n400 Invalid user supplied\n404 User not found\nDefinitions\nPet\nName Type Notes\ncategory Category[]\nid integer (int64)\nname string\nphotoUrls array\nstatus string pet status in the store\ntags Tag[]\nCategory\nPUT /user/{username}", "Links": [ { "Goto": { @@ -759,12 +759,12 @@ }, { "Number": 21, - "Text": "21 / 22NameTypeNotesidinteger (int64)namestringTagNameTypeNotesidinteger (int64)namestringApiResponseNameTypeNotescodeinteger (int32)messagestringtypestringOrderNameTypeNotescompletebooleanidinteger (int64)petIdinteger (int64)quantityinteger (int32)shipDatestring (date-time)statusstringOrder StatusUser", + "Text": "21 / 22\nName Type Notes\nid integer (int64)\nname string\nTag\nName Type Notes\nid integer (int64)\nname string\nApiResponse\nName Type Notes\ncode integer (int32)\nmessage string\ntype string\nOrder\nName Type Notes\ncomplete boolean\nid integer (int64)\npetId integer (int64)\nquantity integer (int32)\nshipDate string (date-time)\nstatus string Order Status\nUser", "Links": [] }, { "Number": 22, - "Text": "22 / 22NameTypeNotesemailstringfirstNamestringidinteger (int64)lastNamestringpasswordstringphonestringuserStatusinteger (int32)User StatususernamestringSee AlsosSee other REST APIs:Contacts API", + "Text": "22 / 22\nName Type Notes\nemail string\nfirstName string\nid integer (int64)\nlastName string\npassword string\nphone string\nuserStatus integer (int32) User Status\nusername string\nSee Alsos\nSee other REST APIs:\nContacts API", "Links": [ { "Uri": "" diff --git a/test/docfx.Snapshot.Tests/SamplesTest.Seed/xrefmap.verified.yml b/test/docfx.Snapshot.Tests/SamplesTest.Seed/xrefmap.verified.yml index 6a321df6afb..40113c0832b 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.Seed/xrefmap.verified.yml +++ b/test/docfx.Snapshot.Tests/SamplesTest.Seed/xrefmap.verified.yml @@ -752,6 +752,50 @@ references: fullName.vb: BuildFromProject.Inheritdoc.Issue8129.New nameWithType: Inheritdoc.Issue8129.Issue8129 nameWithType.vb: Inheritdoc.Issue8129.New +- uid: BuildFromProject.Inheritdoc.Issue9736 + name: Inheritdoc.Issue9736 + href: api/BuildFromProject.Inheritdoc.Issue9736.html + commentId: T:BuildFromProject.Inheritdoc.Issue9736 + fullName: BuildFromProject.Inheritdoc.Issue9736 + nameWithType: Inheritdoc.Issue9736 +- uid: BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions + name: Inheritdoc.Issue9736.IJsonApiOptions + href: api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html + commentId: T:BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions + fullName: BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions + nameWithType: Inheritdoc.Issue9736.IJsonApiOptions +- uid: BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks + name: UseRelativeLinks + href: api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html#BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions_UseRelativeLinks + commentId: P:BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks + fullName: BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks + nameWithType: Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks +- uid: BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks* + name: UseRelativeLinks + href: api/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.html#BuildFromProject_Inheritdoc_Issue9736_IJsonApiOptions_UseRelativeLinks_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks + nameWithType: Inheritdoc.Issue9736.IJsonApiOptions.UseRelativeLinks +- uid: BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions + name: Inheritdoc.Issue9736.JsonApiOptions + href: api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html + commentId: T:BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions + fullName: BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions + nameWithType: Inheritdoc.Issue9736.JsonApiOptions +- uid: BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks + name: UseRelativeLinks + href: api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html#BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions_UseRelativeLinks + commentId: P:BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks + fullName: BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks + nameWithType: Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks +- uid: BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks* + name: UseRelativeLinks + href: api/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.html#BuildFromProject_Inheritdoc_Issue9736_JsonApiOptions_UseRelativeLinks_ + commentId: Overload:BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks + isSpec: "True" + fullName: BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks + nameWithType: Inheritdoc.Issue9736.JsonApiOptions.UseRelativeLinks - uid: BuildFromProject.Issue8540 name: BuildFromProject.Issue8540 href: api/BuildFromProject.Issue8540.html diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.verified.md new file mode 100644 index 00000000000..77e0eb7cee2 --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.verified.md @@ -0,0 +1,40 @@ +# Interface Inheritdoc.Issue9736.IJsonApiOptions + +Namespace: [BuildFromProject](BuildFromProject.md) +Assembly: BuildFromProject.dll + +```csharp +public interface Inheritdoc.Issue9736.IJsonApiOptions +``` + +## Properties + +### UseRelativeLinks + +Whether to use relative links for all resources. false by default. + +```csharp +bool UseRelativeLinks { get; } +``` + +#### Property Value + + [bool](https://learn.microsoft.com/dotnet/api/system.boolean) + +#### Examples + +
options.UseRelativeLinks = true;
+ +
{
+  "type": "articles",
+  "id": "4309",
+  "relationships": {
+     "author": {
+       "links": {
+         "self": "/api/shopping/articles/4309/relationships/author",
+         "related": "/api/shopping/articles/4309/author"
+       }
+     }
+  }
+}
+ diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.verified.md new file mode 100644 index 00000000000..f0b10502450 --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.verified.md @@ -0,0 +1,58 @@ +# Class Inheritdoc.Issue9736.JsonApiOptions + +Namespace: [BuildFromProject](BuildFromProject.md) +Assembly: BuildFromProject.dll + +```csharp +public sealed class Inheritdoc.Issue9736.JsonApiOptions : Inheritdoc.Issue9736.IJsonApiOptions +``` + +#### Inheritance + +[object](https://learn.microsoft.com/dotnet/api/system.object) ← +[Inheritdoc.Issue9736.JsonApiOptions](BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md) + +#### Implements + +[Inheritdoc.Issue9736.IJsonApiOptions](BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md) + +#### Inherited Members + +[object.Equals\(object?\)](https://learn.microsoft.com/dotnet/api/system.object.equals\#system\-object\-equals\(system\-object\)), +[object.Equals\(object?, object?\)](https://learn.microsoft.com/dotnet/api/system.object.equals\#system\-object\-equals\(system\-object\-system\-object\)), +[object.GetHashCode\(\)](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), +[object.GetType\(\)](https://learn.microsoft.com/dotnet/api/system.object.gettype), +[object.ReferenceEquals\(object?, object?\)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), +[object.ToString\(\)](https://learn.microsoft.com/dotnet/api/system.object.tostring) + +## Properties + +### UseRelativeLinks + +Whether to use relative links for all resources. false by default. + +```csharp +public bool UseRelativeLinks { get; set; } +``` + +#### Property Value + + [bool](https://learn.microsoft.com/dotnet/api/system.boolean) + +#### Examples + +
options.UseRelativeLinks = true;
+ +
{
+  "type": "articles",
+  "id": "4309",
+  "relationships": {
+     "author": {
+       "links": {
+         "self": "/api/shopping/articles/4309/relationships/author",
+         "related": "/api/shopping/articles/4309/author"
+       }
+     }
+  }
+}
+ diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.verified.md new file mode 100644 index 00000000000..7703123f788 --- /dev/null +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.Inheritdoc.Issue9736.verified.md @@ -0,0 +1,24 @@ +# Class Inheritdoc.Issue9736 + +Namespace: [BuildFromProject](BuildFromProject.md) +Assembly: BuildFromProject.dll + +```csharp +public class Inheritdoc.Issue9736 +``` + +#### Inheritance + +[object](https://learn.microsoft.com/dotnet/api/system.object) ← +[Inheritdoc.Issue9736](BuildFromProject.Inheritdoc.Issue9736.md) + +#### Inherited Members + +[object.Equals\(object?\)](https://learn.microsoft.com/dotnet/api/system.object.equals\#system\-object\-equals\(system\-object\)), +[object.Equals\(object?, object?\)](https://learn.microsoft.com/dotnet/api/system.object.equals\#system\-object\-equals\(system\-object\-system\-object\)), +[object.GetHashCode\(\)](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), +[object.GetType\(\)](https://learn.microsoft.com/dotnet/api/system.object.gettype), +[object.MemberwiseClone\(\)](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), +[object.ReferenceEquals\(object?, object?\)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), +[object.ToString\(\)](https://learn.microsoft.com/dotnet/api/system.object.tostring) + diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.verified.md index f0cc6b6b107..f3d3eb04194 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.verified.md +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/BuildFromProject.verified.md @@ -38,6 +38,10 @@ A nice class [Class1.Issue8948](BuildFromProject.Class1.Issue8948.md) + [Inheritdoc.Issue9736](BuildFromProject.Inheritdoc.Issue9736.md) + + [Inheritdoc.Issue9736.JsonApiOptions](BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md) + [Class1.Test](BuildFromProject.Class1.Test\-1.md) ### Structs @@ -50,6 +54,8 @@ A nice class [Class1.IIssue8948](BuildFromProject.Class1.IIssue8948.md) + [Inheritdoc.Issue9736.IJsonApiOptions](BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md) + ### Enums [Class1.Issue9260](BuildFromProject.Class1.Issue9260.md) diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.Cat-2.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.Cat-2.verified.md index b5866d04bd1..e4d4b1532ae 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.Cat-2.verified.md +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.Cat-2.verified.md @@ -53,6 +53,7 @@ This type is a struct type, class type can't be used for this parameter. ## Examples

Here's example of how to create an instance of this class. As T is limited with class and K is limited with struct.

+
var a = new Cat(object, int)();
 int catNumber = new int();
 unsafe
diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.ICatExtension.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.ICatExtension.verified.md
index 7eb86dae15f..f0ba1fb6128 100644
--- a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.ICatExtension.verified.md
+++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.ICatExtension.verified.md
@@ -4,7 +4,8 @@ Namespace: [CatLibrary](CatLibrary.md)
 Assembly: CatLibrary.dll  
 
 It's the class that contains ICat interface's extension method.
-

This class must be public and static.

Also it shouldn't be a geneic class

+

This class must be public and static.

+

Also it shouldn't be a geneic class

```csharp public static class ICatExtension diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.verified.md b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.verified.md index 068fafeeb11..9701b5ef723 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.verified.md +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/CatLibrary.verified.md @@ -21,7 +21,8 @@ [ICatExtension](CatLibrary.ICatExtension.md) It's the class that contains ICat interface's extension method. -

This class must be public and static.

Also it shouldn't be a geneic class

+

This class must be public and static.

+

Also it shouldn't be a geneic class

[Tom](CatLibrary.Tom.md) diff --git a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/toc.verified.yml b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/toc.verified.yml index e9662078cc9..d9e92874513 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/toc.verified.yml +++ b/test/docfx.Snapshot.Tests/SamplesTest.SeedMarkdown/toc.verified.yml @@ -59,6 +59,10 @@ href: BuildFromProject.Inheritdoc.Issue7484.md - name: Inheritdoc.Issue8101 href: BuildFromProject.Inheritdoc.Issue8101.md + - name: Inheritdoc.Issue9736 + href: BuildFromProject.Inheritdoc.Issue9736.md + - name: Inheritdoc.Issue9736.JsonApiOptions + href: BuildFromProject.Inheritdoc.Issue9736.JsonApiOptions.md - name: Issue8725 href: BuildFromProject.Issue8725.md - name: Structs @@ -69,6 +73,8 @@ href: BuildFromProject.Class1.IIssue8948.md - name: IInheritdoc href: BuildFromProject.IInheritdoc.md + - name: Inheritdoc.Issue9736.IJsonApiOptions + href: BuildFromProject.Inheritdoc.Issue9736.IJsonApiOptions.md - name: Enums - name: Class1.Issue9260 href: BuildFromProject.Class1.Issue9260.md diff --git a/test/docfx.Snapshot.Tests/SamplesTest.cs b/test/docfx.Snapshot.Tests/SamplesTest.cs index 662345724fb..d5f8ae8212c 100644 --- a/test/docfx.Snapshot.Tests/SamplesTest.cs +++ b/test/docfx.Snapshot.Tests/SamplesTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics; +using System.Runtime.CompilerServices; using System.Text; using System.Text.Encodings.Web; using System.Text.Json; @@ -11,6 +12,8 @@ using UglyToad.PdfPig; using UglyToad.PdfPig.Actions; using UglyToad.PdfPig.Annotations; +using UglyToad.PdfPig.Content; +using UglyToad.PdfPig.DocumentLayoutAnalysis.TextExtractor; using UglyToad.PdfPig.Outline; namespace Docfx.Tests; @@ -53,8 +56,9 @@ public async Task Seed() using var process = Process.Start("dotnet", $"build \"{s_samplesDir}/seed/dotnet/assembly/BuildFromAssembly.csproj\""); await process.WaitForExitAsync(); + VerifyExitCode(process); - if (Debugger.IsAttached) + if (Debugger.IsAttached || IsWslRemoteTest()) { Environment.SetEnvironmentVariable("DOCFX_SOURCE_BRANCH_NAME", "main"); Assert.Equal(0, Program.Main([$"{samplePath}/docfx.json"])); @@ -80,8 +84,8 @@ void PdfToJson(string path) { p.Number, p.NumberOfImages, - p.Text, - Links = p.ExperimentalAccess.GetAnnotations().Select(ToLink).ToArray(), + Text = ExtractText(p), + Links = p.GetAnnotations().Select(ToLink).ToArray(), }).ToArray(), Bookmarks = document.TryGetBookmarks(out var bookmarks) ? ToBookmarks(bookmarks.Roots) : null, }; @@ -118,7 +122,8 @@ public async Task SeedMarkdown() var outputPath = nameof(SeedMarkdown); Clean(samplePath); - Program.Main(["metadata", $"{samplePath}/docfx.json", "--outputFormat", "markdown", "--output", outputPath]); + var exitCode = Program.Main(["metadata", $"{samplePath}/docfx.json", "--outputFormat", "markdown", "--output", outputPath]); + Assert.Equal(0, exitCode); await VerifyDirectory(outputPath).AutoVerify(includeBuildServer: false); } @@ -153,10 +158,12 @@ public Task Extensions() #if DEBUG using var process = Process.Start("dotnet", $"build \"{samplePath}/build\""); process.WaitForExit(); + VerifyExitCode(process); Assert.Equal(0, Exec("dotnet", "run --no-build --project build", workingDirectory: samplePath)); #else using var process = Process.Start("dotnet", $"build -c Release \"{samplePath}/build\""); process.WaitForExit(); + VerifyExitCode(process); Assert.Equal(0, Exec("dotnet", "run --no-build -c Release --project build", workingDirectory: samplePath)); #endif @@ -207,4 +214,48 @@ private void ScrubFile(string path, StringBuilder builder) })); } } + + private static string ExtractText(Page page) + { + // Gets PDF text content + var text = ContentOrderTextExtractor.GetText(page, new ContentOrderTextExtractor.Options { ReplaceWhitespaceWithSpace = true }); + + // string.Normalize is not works when using `Globalization Invariant Mode`. + StringBuilder sb = new(text); + + // Normalize known ligature chars. (Note: `string.Normalize` is not works when using `Globalization Invariant Mode`) + sb.Replace("ff", "ff"); + sb.Replace("ffi", "ffi"); + sb.Replace("fl", "fl"); + sb.Replace("fi", "fi"); + + // Normalize newline char. + sb.Replace("\r\n", "\n"); + + return sb.ToString(); + } + + /// + /// Returns true if running on WSL and executed on Visual Studio Remote Testing. + /// + private static bool IsWslRemoteTest([CallerFilePath] string callerFilePath = "") + { + return Environment.GetEnvironmentVariable("WSLENV") != null + && callerFilePath.Contains('\\', StringComparison.Ordinal); // Contains `\` when build on windows environment. + } + + private static void VerifyExitCode(Process process) + { + if (!process.HasExited) + throw new InvalidOperationException("Process is not exited yet."); + + // Gets exit code before closing process. + var exitCode = process.ExitCode; + + // Close process to flush stdout/stderr logs. + process.Close(); + + // Assert exit code + Assert.Equal(0, exitCode); + } } diff --git a/test/docfx.Tests/DocsetBuildTest.cs b/test/docfx.Tests/DocsetBuildTest.cs index b49110d0ac8..b07ec876457 100644 --- a/test/docfx.Tests/DocsetBuildTest.cs +++ b/test/docfx.Tests/DocsetBuildTest.cs @@ -229,7 +229,7 @@ public static async Task Build_With_RedirectUri_Files() // Test redirect page.is excluded from sitemap. var sitemapXml = outputs["sitemap.xml"](); var urls = XDocument.Parse(sitemapXml).Root.Elements(); - Assert.True(!urls.Any()); + Assert.False(urls.Any()); } [Fact] diff --git a/test/docfx.Tests/JsonConverterTest.cs b/test/docfx.Tests/JsonConverterTest.cs index 795fa6b4c30..96743b4fd24 100644 --- a/test/docfx.Tests/JsonConverterTest.cs +++ b/test/docfx.Tests/JsonConverterTest.cs @@ -3,8 +3,8 @@ using System.Collections; using System.Reflection; +using AwesomeAssertions; using Docfx.Common; -using FluentAssertions; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; diff --git a/test/docfx.Tests/JsonSchemaTest.cs b/test/docfx.Tests/JsonSchemaTest.cs index aeed970aa31..e93c9b3796b 100644 --- a/test/docfx.Tests/JsonSchemaTest.cs +++ b/test/docfx.Tests/JsonSchemaTest.cs @@ -2,12 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json; +using AwesomeAssertions; using Docfx.Common; using Docfx.DataContracts.Common; using Docfx.Tests.Common; -using FluentAssertions; -using Json.Schema; -using Xunit.Abstractions; using YamlDotNet.Serialization; namespace Docfx.Tests; @@ -15,13 +13,6 @@ namespace Docfx.Tests; [Collection("docfx STA")] public class JsonSchemaTest : TestBase { - private readonly ITestOutputHelper output; - - public JsonSchemaTest(ITestOutputHelper output) - { - this.output = output; - } - [Theory] [InlineData("docs/docfx.json")] [InlineData("samples/csharp/docfx.json")] diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationEncoderTest.cs b/test/docfx.Tests/SerializationTests/JsonSerializationEncoderTest.cs index f01b44e125d..2d2f0210b8b 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationEncoderTest.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationEncoderTest.cs @@ -1,8 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using AwesomeAssertions; using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; @@ -30,7 +30,7 @@ public void JsonEncoderTest(string data) // Compare serialized result text with `StringComparer.OrdinalIgnoreCase` // - SystemTextJson escape chars with capital case(`\u001B`) // - NewtonsoftJson escape chars with lower case (`\u001b`) - ((object)systemTextJsonResult).Should().Be(newtonsoftJsonResult, StringComparer.OrdinalIgnoreCase); // Currently StringAssertions don't expose overload that accepts StringComparer. (See: https://github.com/fluentassertions/fluentassertions/issues/2720) + systemTextJsonResult.Should().BeEquivalentTo(newtonsoftJsonResult, options => options.IgnoringCase()); } [Theory] diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.BuildJsonConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.BuildJsonConfig.cs index 16c4599c03a..f479f417ecc 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.BuildJsonConfig.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.BuildJsonConfig.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Docfx; -using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.DocfxConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.DocfxConfig.cs index 50473ad2ab3..4cdc1bcd705 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.DocfxConfig.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.DocfxConfig.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Docfx; -using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMapping.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMapping.cs index 488be5c6d49..7b68bee9566 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMapping.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMapping.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Docfx; -using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMetadataPairs.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMetadataPairs.cs index 4a026e26a87..496b86868af 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMetadataPairs.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.FileMetadataPairs.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Docfx; -using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.ListWithStringFallback.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.ListWithStringFallback.cs index f7557fe6429..05bf661d959 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.ListWithStringFallback.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.ListWithStringFallback.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Docfx; -using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.Manifest.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.Manifest.cs index 0784927eb9c..8c425f89b9a 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.Manifest.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.Manifest.cs @@ -1,11 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Docfx; -using Docfx.Common; using Docfx.Plugins; -using FluentAssertions; -using YamlDotNet.Core.Tokens; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MarkdownServiceProperties.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MarkdownServiceProperties.cs index 51546b4c973..f61e21a7333 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MarkdownServiceProperties.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MarkdownServiceProperties.cs @@ -1,12 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Text.Json; -using Docfx; -using Docfx.Common; -using Docfx.MarkdigEngine.Extensions; +using AwesomeAssertions; using Docfx.Plugins; -using FluentAssertions; using Markdig.Extensions.MediaLinks; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MergeJsonConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MergeJsonConfig.cs index 0d5617f01a1..0abb22f8dee 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MergeJsonConfig.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MergeJsonConfig.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Docfx; -using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MetadataJsonConfig.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MetadataJsonConfig.cs index 6308a02daa9..e1eff91f639 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.MetadataJsonConfig.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.MetadataJsonConfig.cs @@ -2,8 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. using Docfx; -using Docfx.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.XRefMap.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.XRefMap.cs index 24679084df3..ccf7f032eaa 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.XRefMap.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.XRefMap.cs @@ -1,11 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Docfx; using Docfx.Build.Engine; -using Docfx.Common; -using Docfx.Plugins; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/JsonSerializationTest.cs b/test/docfx.Tests/SerializationTests/JsonSerializationTest.cs index 8acf7ad79d7..58f06e6b24a 100644 --- a/test/docfx.Tests/SerializationTests/JsonSerializationTest.cs +++ b/test/docfx.Tests/SerializationTests/JsonSerializationTest.cs @@ -2,10 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json; +using AwesomeAssertions; +using AwesomeAssertions.Equivalency; using Docfx.Common; -using FluentAssertions; -using FluentAssertions.Equivalency; -using FluentAssertions.Equivalency.Tracing; namespace docfx.Tests; @@ -14,7 +13,7 @@ public partial class JsonSerializationTest /// /// Helper method to validate serialize/deserialize results. /// - protected void ValidateJsonRoundTrip(T model) + private static void ValidateJsonRoundTrip(T model) { // 1. Validate serialized result. var newtonsoftJson = NewtonsoftJsonUtility.Serialize(model); @@ -34,7 +33,7 @@ protected void ValidateJsonRoundTrip(T model) result.Should().BeEquivalentTo(model, customAssertionOptions); } - private static EquivalencyAssertionOptions customAssertionOptions(EquivalencyAssertionOptions opt) + private static EquivalencyOptions customAssertionOptions(EquivalencyOptions opt) { // By default. JsonElement is compared by reference because JsonElement don't override Equals. return opt.ComparingByMembers() diff --git a/test/docfx.Tests/SerializationTests/Shared/CustomEqualityEquivalencyStep.cs b/test/docfx.Tests/SerializationTests/Shared/CustomEqualityEquivalencyStep.cs index e8266a0d3d5..2e6449dc8f6 100644 --- a/test/docfx.Tests/SerializationTests/Shared/CustomEqualityEquivalencyStep.cs +++ b/test/docfx.Tests/SerializationTests/Shared/CustomEqualityEquivalencyStep.cs @@ -1,11 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics; -using System.Globalization; -using Docfx.Common; -using FluentAssertions; -using FluentAssertions.Equivalency; +using AwesomeAssertions.Equivalency; using Newtonsoft.Json.Linq; #nullable enable @@ -17,7 +13,7 @@ internal class CustomEqualityEquivalencyStep : IEquivalencyStep public EquivalencyResult Handle( Comparands comparands, IEquivalencyValidationContext context, - IEquivalencyValidator nestedValidator) + IValidateChildNodeEquivalency nestedValidator) { if (comparands.Subject is null || comparands.Expectation is null) return EquivalencyResult.ContinueWithNext; diff --git a/test/docfx.Tests/SerializationTests/TestData/TestData.cs b/test/docfx.Tests/SerializationTests/TestData/TestData.cs index bf75bddbac3..30b08de0366 100644 --- a/test/docfx.Tests/SerializationTests/TestData/TestData.cs +++ b/test/docfx.Tests/SerializationTests/TestData/TestData.cs @@ -1,12 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics; -using System.Text.Json; using Docfx.Build.ApiPage; using Docfx.Common; using Docfx.Tests; -using YamlDotNet.Serialization; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.ApiPage.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ApiPage.cs index c0db0066478..b86822e772e 100644 --- a/test/docfx.Tests/SerializationTests/YamlSerializationTest.ApiPage.cs +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ApiPage.cs @@ -1,25 +1,19 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics; -using System.IO; -using System.Net; -using System.Runtime.CompilerServices; using System.Text.Json; +using AwesomeAssertions; using Docfx.Build.ApiPage; -using Docfx.Build.ManagedReference; using Docfx.Common; -using Docfx.DataContracts.ManagedReference; using Docfx.Tests; -using FluentAssertions; -using Microsoft.Playwright; -using OneOf; using YamlDotNet.Serialization; namespace docfx.Tests; public partial class YamlSerializationTest { + private static IDeserializer deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); + [Theory] [TestData] public void YamlSerializationTest_ApiPage(string path) @@ -38,9 +32,6 @@ private static ApiPage LoadApiPage(string path) { path = PathHelper.ResolveTestDataPath(path); - var deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization() - .Build(); - // 1. Deserialize ApiPage yaml as Dictionary // 2. Serialize to json // 3. Deserialize as ApiPage instance @@ -64,8 +55,6 @@ private static void ValidateApiPageRoundTrip(ApiPage model) private static string ToYaml(ApiPage model) { - var deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); - var json = JsonSerializer.Serialize(model, Docfx.Build.ApiPage.ApiPage.JsonSerializerOptions); var obj = deserializer.Deserialize(json); @@ -76,7 +65,6 @@ private static string ToYaml(ApiPage model) private static ApiPage ToApiPage(string yaml) { - var deserializer = new DeserializerBuilder().WithAttemptingUnquotedStringTypeDeserialization().Build(); var dict = deserializer.Deserialize>(new StringReader(yaml)); var json = JsonSerializer.Serialize(dict); return JsonSerializer.Deserialize(json, ApiPage.JsonSerializerOptions); diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.FilterConfig.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.FilterConfig.cs index 01654be228b..5385f8d5092 100644 --- a/test/docfx.Tests/SerializationTests/YamlSerializationTest.FilterConfig.cs +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.FilterConfig.cs @@ -1,13 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.IO; -using Docfx; -using Docfx.Build.Engine; -using Docfx.Common; using Docfx.Dotnet; -using Docfx.Plugins; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.ManagedReference.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ManagedReference.cs index 3012c8a890f..505598ef3fe 100644 --- a/test/docfx.Tests/SerializationTests/YamlSerializationTest.ManagedReference.cs +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.ManagedReference.cs @@ -1,10 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics; -using System.Runtime.CompilerServices; using Docfx.DataContracts.ManagedReference; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.TocItemViewModel.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.TocItemViewModel.cs index ac3d4b47bfa..b4486079209 100644 --- a/test/docfx.Tests/SerializationTests/YamlSerializationTest.TocItemViewModel.cs +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.TocItemViewModel.cs @@ -1,9 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Docfx.Build.ApiPage; using Docfx.DataContracts.Common; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.UniversalReference.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.UniversalReference.cs index 2920741e685..15eaf1a2d99 100644 --- a/test/docfx.Tests/SerializationTests/YamlSerializationTest.UniversalReference.cs +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.UniversalReference.cs @@ -1,10 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics; -using System.Runtime.CompilerServices; using Docfx.DataContracts.UniversalReference; -using FluentAssertions; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.XRefMap.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.XRefMap.cs index 68bc961a423..9d512152db9 100644 --- a/test/docfx.Tests/SerializationTests/YamlSerializationTest.XRefMap.cs +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.XRefMap.cs @@ -1,18 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Diagnostics; -using System.Reflection; -using System.Runtime.CompilerServices; -using Docfx.Build.ApiPage; using Docfx.Build.Engine; -using Docfx.Build.ManagedReference; -using Docfx.DataContracts.ManagedReference; -using Docfx.Plugins; -using FluentAssertions; -using Microsoft.AspNetCore.Mvc; -using Microsoft.CodeAnalysis; -using Xunit.Sdk; namespace docfx.Tests; diff --git a/test/docfx.Tests/SerializationTests/YamlSerializationTest.cs b/test/docfx.Tests/SerializationTests/YamlSerializationTest.cs index 96088759bcb..02b36fc115d 100644 --- a/test/docfx.Tests/SerializationTests/YamlSerializationTest.cs +++ b/test/docfx.Tests/SerializationTests/YamlSerializationTest.cs @@ -2,10 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json; +using AwesomeAssertions; +using AwesomeAssertions.Equivalency; using Docfx.Common; using Docfx.YamlSerialization; -using FluentAssertions; -using FluentAssertions.Equivalency; namespace docfx.Tests; public partial class YamlSerializationTest @@ -15,7 +15,7 @@ public partial class YamlSerializationTest /// /// Helper method to validate serialize/deserialize results. /// - protected void ValidateYamlRoundTrip(T model) + private static void ValidateYamlRoundTrip(T model) { // Act using var writer = new StringWriter(); @@ -31,7 +31,7 @@ protected void ValidateYamlRoundTrip(T model) /// /// Helper method to validate serialize/deserialize results. /// - protected void ValidateYamlJsonRoundTrip(T model) + protected static void ValidateYamlJsonRoundTrip(T model) { // 1. Serialize to JSON with YamlDotNet using var writer = new StringWriter(); @@ -55,7 +55,7 @@ protected void ValidateYamlJsonRoundTrip(T model) newtownsoftJsonModel.Should().BeEquivalentTo(systemTextJsonModel, customAssertionOptions); } - private static EquivalencyAssertionOptions customAssertionOptions(EquivalencyAssertionOptions opt) + private static EquivalencyOptions customAssertionOptions(EquivalencyOptions opt) { // By default. JsonElement is compared by reference because JsonElement don't override Equals. return opt.ComparingByMembers() diff --git a/test/docfx.Tests/Utilities/JsonSchemaUtility.cs b/test/docfx.Tests/Utilities/JsonSchemaUtility.cs index 0d12c1e2063..a66581cafcc 100644 --- a/test/docfx.Tests/Utilities/JsonSchemaUtility.cs +++ b/test/docfx.Tests/Utilities/JsonSchemaUtility.cs @@ -1,7 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Text; using System.Text.Json; using Json.Schema; diff --git a/test/docfx.Tests/Utilities/PathHelper.cs b/test/docfx.Tests/Utilities/PathHelper.cs index 05fd58838b0..be44dc9a0bb 100644 --- a/test/docfx.Tests/Utilities/PathHelper.cs +++ b/test/docfx.Tests/Utilities/PathHelper.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.CompilerServices; +using System.Text.RegularExpressions; namespace Docfx.Tests; @@ -9,20 +10,13 @@ internal class PathHelper { public static string GetSolutionFolder([CallerFilePath] string callerFilePath = "") { - if (callerFilePath.StartsWith("/_/")) - { - // PathMap is rewritten on CI environment (`ContinuousIntegrationBuild=true`). - // So try to get workspace folder from GitHub Action environment variable. - var workspace = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE"); - if (workspace != null) - return workspace; - } + callerFilePath = NormalizeCallerFilePath(callerFilePath); if (!File.Exists(callerFilePath)) { // CallerFilePath is resolved at build timing. // If build/test is executed on separated machine. It failed to find file. - throw new FileNotFoundException($"File is not found. callerFilePath: {callerFilePath}"); + throw new FileNotFoundException($"File is not found. path: {callerFilePath}"); } return FindSolutionFolder(callerFilePath, "docfx"); @@ -58,7 +52,7 @@ public static string ResolveTestDataPath(string path = "", [CallerFilePath] stri var dir = GetTestDataDirectory(callerFilePath); var resultPath = Path.Combine(dir, path); - if (!File.Exists(callerFilePath) && !Directory.Exists(callerFilePath)) + if (!File.Exists(resultPath) && !Directory.Exists(resultPath)) { throw new FileNotFoundException($"Specified TestData file/directory is not found. path: {resultPath}"); } @@ -71,18 +65,13 @@ public static string ResolveTestDataPath(string path = "", [CallerFilePath] stri ///
public static string GetTestDataDirectory([CallerFilePath] string callerFilePath = "") { - if (callerFilePath.StartsWith("/_/")) - { - var workspace = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE"); - if (workspace != null) - callerFilePath = callerFilePath.Replace("/_/", workspace); - } + callerFilePath = NormalizeCallerFilePath(callerFilePath); if (!File.Exists(callerFilePath)) { // CallerFilePath is resolved at build timing. // If build/test is executed on separated machine. It failed to find file. - throw new FileNotFoundException($"File is not found. callerFilePath: {callerFilePath}"); + throw new FileNotFoundException($"File is not found. path: {callerFilePath}"); } // Find closest `TestData` directory. @@ -105,4 +94,30 @@ public static string GetTestDataDirectory([CallerFilePath] string callerFilePath return dir.FullName; } + + private static string NormalizeCallerFilePath(string callerFilePath) + { + // PathMap is rewritten on CI environment (`ContinuousIntegrationBuild=true`). + // So try to get workspace folder from GitHub Action environment variable. + if (callerFilePath.StartsWith("/_/")) + { + var workspace = Environment.GetEnvironmentVariable("GITHUB_WORKSPACE"); + if (workspace != null) + return workspace; + } + + // Rewrite path when test runnign on WSL environment that are executed by Visual Studio Remote Testing. + if (Environment.GetEnvironmentVariable("WSLENV") != null && callerFilePath.Contains('\\')) + { + var match = Regex.Match(callerFilePath, @"^([a-zA-Z]):\\(.+)$"); + if (match.Success) + { + var driveLetter = match.Groups[1].Value.ToLowerInvariant(); + var path = match.Groups[2].Value.Replace('\\', '/'); + return $"/mnt/{driveLetter}/{path}"; + } + } + + return callerFilePath; + } } diff --git a/test/docfx.Tests/docfx.Tests.csproj b/test/docfx.Tests/docfx.Tests.csproj index 4dd4811307a..13bd2fdfaf3 100644 --- a/test/docfx.Tests/docfx.Tests.csproj +++ b/test/docfx.Tests/docfx.Tests.csproj @@ -10,6 +10,5 @@ - diff --git a/testEnvironments.json b/testEnvironments.json new file mode 100644 index 00000000000..18076edf10c --- /dev/null +++ b/testEnvironments.json @@ -0,0 +1,10 @@ +{ + "version": "1", + "environments": [ + { + "name": "WSL-Ubuntu", + "type": "wsl", + "wslDistribution": "Ubuntu" + } + ] +}